GhostScript .NET不会继续经过某些页面

时间:2014-05-27 11:33:06

标签: pdf ghostscript ghostscript.net

我创建了一个需要将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的特定程序。

0 个答案:

没有答案