我发现Ghostscript能够将PDF转换为图像格式。
我试过了PDF to Image Converter,但却无法清楚地理解它。
我已安装gs905w64.exe
,但当我尝试add reference
到我的网络应用程序时,我收到此错误。
A reference to gsdll32.dll could not be added. No type libraries were found in the component.
答案 0 :(得分:9)
您可以使用C#运行GhostScript命令行或使用Platform Invoke(pInvoke)调用直接调用GhostScript dll。
GhostScript主要基于文件,因此输入是磁盘上文件的路径,输出是磁盘上文件的创建。用于调用dll或exe的参数基本相同,因此直接调用dll没有太大的好处,但确实可以提供更好的代码。
我有C#包装器可以用来调用ghostscript dll,如果你给我发电子邮件(地址在个人资料上),我会发给你。
HTH
更新:
答案 1 :(得分:7)
您不需要向项目添加任何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图像。
答案 2 :(得分:6)
gsdll32.dll
文件不是托管的.NET库。您无法在项目中引用它。您必须将其作为“内容”(菜单:添加现有项目)包含在项目中,然后让VS将其复制到输出目录。同时,您应该阅读the Ghostscript API docs和this article on PInvoke.net,了解如何引用Ghostscript函数。
请记住,Ghostscript是所有非托管代码,您必须在使用该库后自行清理。
编辑:罗伯特所说的也很重要。当然,您必须使用正确版本的Ghostscript库。
答案 3 :(得分:3)
为什么要尝试添加库作为项目的参考? 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。
答案 4 :(得分:0)
您需要运行以下命令来引用该库 http://www.nuget.org/packages/GhostScriptSharp/
VS2012 - >工具 - >库包管理器 - >包管理器控制台