不使用Ghostscript DLL将PDF转换为图像

use*_*791 15 c#

有什么办法,我可以将HTML文档(文件不是URL)转换为图像,或将PDF转换为图像?

我能够使用Ghostscript DLL执行上述操作,有没有其他方法,我可以这样做,而不使用Ghostscript DLL?

我正在开发一个C#Windows应用程序.

Fur*_*dar 9

使用LibPdf进行PDF到图像转换

LibPdf库将PDF文件转换为图像.支持的图像格式是PNG和BMP,但您可以轻松添加更多.

用法示例:

using (FileStream file = File.OpenRead(@"..\path\to\pdf\file.pdf")) // in file
{
    var bytes = new byte[file.Length];
    file.Read(bytes, 0, bytes.Length);
    using (var pdf = new LibPdf(bytes))
    {
        byte[] pngBytes = pdf.GetImage(0,ImageType.PNG); // image type
        using (var outFile = File.Create(@"..\path\to\pdf\file.png")) // out file
        {
            outFile.Write(pngBytes, 0, pngBytes.Length);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

ImageMagick,您还应该看看这个免费且功能强大的工具.它能够做你想做的事情,并提供一些.NET绑定(以及与其他几种语言的绑定).

在最简单的形式中,它就像写命令一样

convert file.pdf imagefile.png
Run Code Online (Sandbox Code Playgroud)

  • ImageMagick使用GhostScript转换PDF. (11认同)
  • LibPDF是否仅基于Google搜索推荐?提供的代码示例仅从其页面中复制.问题是,据我所知,这个库不起作用.我搞砸了一两个小时没有成功.在问题日志中发布了很多人,他们也无法让它工作. (8认同)
  • 非常感谢,我仍然得到异常"无法加载文件或程序集'libpdf.DLL'或其依赖项之一.无法找到指定的模块."? (2认同)
  • 当没有人能使它起作用时,不明白为什么这被接受为答案。 (2认同)

Moh*_*ani 5

最好的免费 nuget 包,您可以将 Pdf 的每一页保存为 png,并且使用自定义分辨率Docnet.core这可以在 .net 核心项目中使用。

他们有 github 和不错的例子,但在这里我想添加我的代码,用于阅读更多一页的 en pdf

        string webRootPath = _hostingEnvironment.WebRootPath;
        string fullPath = webRootPath + "/uploads/user-manual/file.pdf";
        string fullPaths = webRootPath + "/uploads/user-manual";

        using (var library = DocLib.Instance)
        {
            using (var docReader = library.GetDocReader(fullPath, 1080, 1920))
            {
                for (int i = 1; i < docReader.GetPageCount(); i++)
                {
                    using (var pageReader = docReader.GetPageReader(i))
                    {
                        var bytes = EmailTemplates.GetModifiedImage(pageReader);

                        System.IO.File.WriteAllBytes(fullPaths+"/page_image_" +i+".png", bytes);
                    }
                }

            }
        }
Run Code Online (Sandbox Code Playgroud)

您可以在他们的 github 存储库中找到其他功能。

  • 这不是一个完整的示例,您使用了一个未定义的 GetModifiedImage 函数。 (6认同)

Har*_*ono 5

尝试 Freeware.Pdf2Png,检查以下网址:

PDF 到 PNG 转换器。

byte[] png = Freeware.Pdf2Png.Convert(pdf, 1);
Run Code Online (Sandbox Code Playgroud)

https://www.nuget.org/packages/Freeware.Pdf2Png/1.0.1?_src=template

在关于信息中,它说 MIT 许可证,我于 2022 年 3 月 22 日检查。但正如 Mitya 所说,请仔细检查。

在此输入图像描述