【问题标题】:Ghostscript pdfwrite produces zero length output when reading from PDF files, no error reported, fine with other inputs从 PDF 文件读取时,Ghostscript pdfwrite 产生零长度输出,没有报告错误,其他输入很好
【发布时间】:2020-09-13 18:14:02
【问题描述】:

我需要将一个 PDF 文件附加到另一个。

我觉得 Ghostscript 是前进的方向,并安装了 64 位 Windows 版本 (9.53.0),但如果我尝试对输入为 PDF 的 pdfwrite 执行任何操作,例如

gswin64c -DNOSAFER -sDEVICE=pdfwrite -o output.pdf input.pdf

我得到零长度输出(根本没有错误消息)。无论 PDF 是 Ghostscript 随附的示例之一、使用 tcpdf 生成的示例还是从 Windows 应用程序保存的示例,都会发生这种情况。无论我尝试阅读单个 PDF 还是多个 PDF(后者是我的用例),都会发生这种情况。

如果我将输入的 PDF 转换为 Postscript,然后在其上使用 pdfwrite,它会像梦一样工作,例如

call pdf2ps input.pdf temp.ps
gswin64c -DNOSAFER -sDEVICE=pdfwrite -o output.pdf temp.ps

EPS 输入也可以正常工作 - 唯一的问题似乎是 PDF 输入。但是 Ghostscript 可以读取和显示任何 PDF(并且确实可以将任何 PDF 转换为 Postscript),据我所知,它只是无法将 PDF 作为 pdfwrite 的输入来处理。

我在任何地方都找不到这个特定问题的参考资料。

【问题讨论】:

  • Ghostscript 完全能够读取 PDF 并将其用作 pdfwrite 的输入,许多人经常使用它。恐怕如果没有示例文件,我真的无法为您提供任何东西,这里没有任何东西可以告诉我为什么这对您来说是个问题。我刚刚用examples/annots.pdf试了一下,效果很好。
  • 我应该指出 Ghostscript 及其 pdfwrite 设备不会“附加”PDF 文件。这不是这个过程的运作方式。我很欣赏它看起来像那样,但如果实际的 PDF 级内容对您很重要,那么这不是一个好的解决方案。实际过程在这里描述ghostscript.com/doc/9.53.0/VectorDevices.htm#Overview
  • 实际上....原来我使用的是发布候选版本。看来发布的二进制文件有这个问题。
  • 谢天谢地,我以为只有我一个人!并且输出对于我的目的来说很好,但这种洞察力值得赞赏。

标签: pdf ghostscript


【解决方案1】:

事实证明,这不仅限于 PDF 输入,以这种方式触发它更容易。问题是内部数据类型已从依赖于构建的大小更改为始终为 64 位,但未正确更新 #define 值,因此 64 位 Windows 构建仍在使用用于 32 的值-bit 构建。

有一个解决问题的承诺here。然而,这似乎已经足够严重,以至于新版本 9.53.1(所以这已经是补丁级别 1...)即将推出(如果还没有的话)。

如果人们在发现此类问题时能够报告错误会很有帮助,如果有志愿者尝试发布候选版本,那就更好了,我们真的不希望发布有严重问题的版本...... ..

【讨论】:

    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 2020-09-22
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多