我发现 Ghostscript 能够将 PDF 转换为图像格式。
我尝试了 PDF to Image Converter但无法清楚地理解它。
我已经安装了gs905w64.exe
,但是当我尝试使用add reference
我的 Web 应用程序时,我收到了这个错误。
A reference to gsdll32.dll could not be added. No type libraries were found in the component.
我发现 Ghostscript 能够将 PDF 转换为图像格式。
我尝试了 PDF to Image Converter但无法清楚地理解它。
我已经安装了gs905w64.exe
,但是当我尝试使用add reference
我的 Web 应用程序时,我收到了这个错误。
A reference to gsdll32.dll could not be added. No type libraries were found in the component.
您不需要向您的项目添加任何 DLL 引用。首先下载 gs910w32.exe 应用程序文件,然后将其安装到本地计算机。获取已安装 .exe 文件的位置,例如:-
"C:\Program Files (x86)\gs\gs8.64\bin\gswin32.exe"
在您的 C# 应用程序中使用它:
private void PdfToJpg(string inputPDFFile, string outputImagesPath)
{
string ghostScriptPath = @"C:\Program Files (x86)\gs\gs8.64\bin\gswin32.exe";
String ars = "-dNOPAUSE -sDEVICE=jpeg -r102.4 -o" + outputImagesPath + "%d.jpg -sPAPERSIZE=a4 " + inputPDFFile;
Process proc = new Process();
proc.StartInfo.FileName = ghostScriptPath;
proc.StartInfo.Arguments = ars;
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
proc.Start();
proc.WaitForExit();
}
如果您输入的 PDF 文件名有空格,您需要将参数更改为
String ars = "-dNOPAUSE -sDEVICE=jpeg -r102.4 -o" + outputImagesPath + "%d.jpg -sPAPERSIZE=a4 " +"\"" + inputPDFFile + "\"";
您可以使用 -r 标志在参数中指定输出图像的纵横比。如果您使用“-r300”,图像的宽度将为 3000 像素,高度将相应改变,根据上述参数,您将获得 1024 到 768 大小的 jpg 图像。
您可以使用 C# 运行 GhostScript 命令行或使用 Platform Invoke (pInvoke) 调用直接调用 GhostScript dll。
GhostScript 主要是基于文件的,因此输入是磁盘上文件的路径,输出是磁盘上文件的创建。用于调用dll或exe的参数基本相同,因此直接调用dll并没有太大的好处,但确实可以使代码更好。
我有可用于调用 ghostscript dll 的 C# 包装器,如果您给我发电子邮件(个人资料上的地址),我会将其发送给您。
高温高压
更新:
该gsdll32.dll
文件不是托管的 .NET 库。你不能在你的项目中引用它。您必须将它作为“内容”包含在您的项目中(菜单:添加现有项目)并让 VS 将其复制到输出目录。同时,您应该阅读Ghostscript API 文档和PInvoke.net 上的这篇文章,了解如何引用 Ghostscript 函数。
请记住,Ghostscript 都是非托管代码,您必须在使用该库后自己进行清理。
编辑:罗伯特所说的也很重要。当然,您必须使用正确版本的 Ghostscript 库。
为什么您尝试将库添加为对您的项目的引用?gsdll32.dll
是本机 dll,而不是 Dot-Net 库。
当我使用 Visual C# Express 2010 构建示例项目时,我得到一个 exe 文件。如果我执行它,它会尝试访问gsdll32.dll
. 现在的问题是,在 64 位系统上生成了 64 位可执行文件,但gsdll32.dll
编译为 32 位。
正确的解决方案是修改源代码并替换gsdll32.dll
它gsdll64.dll
出现的任何地方。更简单的解决方案是使用 64 位版本的 Ghostscript,将 复制gsdll64.dll
到与 相同的目录ConvertPDF.exe
并重命名为gsdll32.dll
. 这绝对有效 - 刚刚测试并将 PDF 转换为 TIFF。
您需要运行以下命令来引用库 http://www.nuget.org/packages/GhostScriptSharp/
VS2012 --> 工具 --> 库包管理器 --> 包管理器控制台