我创建了一个需要将PDF文件转换为图像文件的程序,对于这个GhostScript来说是最好的选择。但有一段时间,图书馆完全停在页面上并且不会继续,它只是继续使用CPU电源并正常工作,就像它可能陷入无限循环一样。错误很容易重现,因为它每次都发生在它出现的特定PDF文件上,虽然没有给出任何类型的GhostScript的错误,并且在PDF文件本身中没有什么是不寻常的,尽我所能看到。
然而,我已经能够发现停止是由于pdf文件中的特定元素或元素,并且删除了pdf将在GhostScript中轻松呈现的元素,但这不是解决方案,也不是答案我可以用。PDF链接* - http://www.filedropper.com/usjunis1-32webtest
*使用PDF-XChange Editor的免费版本保存,因此顶部有水印,但它是创建停顿的方块。我也看到它发生在矢量图形对象上,所以它不仅限于正方形。
代码 -
private void startImageProcessing(String pdfFile)
{
GhostscriptVersionInfo gvi = new GhostscriptVersionInfo(new Version(0, 0, 0), Directory.GetCurrentDirectory() + @"\gsdll32.dll", string.Empty, GhostscriptLicense.GPL);
Ghostscript.NET.Processor.GhostscriptProcessor processor = new Ghostscript.NET.Processor.GhostscriptProcessor(gvi, true);
processor.StartProcessing(CreateTestArgs(pdfFile, pdfFile.Substring(0, pdfFile.Length - 4) + "\\"+prefix+"-%03d.jpg", 72 * scale), new ConsoleStdIO(true));
}
private static string[] CreateTestArgs(string inputPath, string outputPath, int dpi)
{
List<string> gsArgs = new List<string>();
gsArgs.Add("-dSAFER");
gsArgs.Add("-dBATCH");
gsArgs.Add("-dNOPAUSE");
gsArgs.Add("-sDEVICE=jpeg");
gsArgs.Add("-r" + dpi);
gsArgs.Add("-dJPEGQ=100");
gsArgs.Add("-dNumRenderingThreads=" + Environment.ProcessorCount.ToString());
gsArgs.Add("-dTextAlphaBits=4");
gsArgs.Add("-dGraphicsAlphaBits=4");
gsArgs.Add(@"-sOutputFile=" + outputPath);
gsArgs.Add(@"-f" + inputPath);
return gsArgs.ToArray();
}
我还创建了一个仅包含一个错误元素进行测试的pdf文件,并且在Adobe Acrobat和PDF-XChange Editor保存时都有错误,所以错误不是由于我用来保存PDF的特定程序。