【问题标题】:Ghostscript - create a pdf with multiple identical pages and keep size downGhostscript - 创建具有多个相同页面的 pdf 并减小大小
【发布时间】:2017-10-26 11:17:56
【问题描述】:

我正在尝试使用 Ghostscript 创建具有多个相同页面的 PDF。稍后我将把它与另一个多页 PDF 一起使用,在每一页上印上独特的信息。

是否可以使用 Ghostscript 创建这样的 PDF 并减小最终文件的大小?可能有一个我没有注意到的标志可以比下面的脚本更好地做到这一点?

我尝试使用如下所示的常规合并命令,但生成的 PDF 的大小增长了很多,并且将 2,061MB 的原始文件大小合并到 100 页的 pdf 导致最终大小为 46,117MB。

"C:\Program Files\gs\gs9.20\bin\gswin64.exe"^
 -dBATCH^
 -dNOPAUSE^
 -q^
 -sDEVICE=pdfwrite^
 -sOutputFile=outputpdf.pdf^
 "inputpdf.pdf"^
 "inputpdf.pdf"^
 "inputpdf.pdf"(and so on 100 times)

【问题讨论】:

    标签: pdf ghostscript


    【解决方案1】:

    通过重用每个页面的页面内容流,您可以轻松地手动构建这样一个文件,该文件要小得多。

    但是 Ghostscript 的 pdfwrite 设备不会这样做,尤其是因为它不能。它无法预先知道它即将接收的页面与前一页相同。结果,它将为每个页面创建一个新的页面内容流,并为其创建新内容。

    请注意,每个页面上使用的资源(表单、模式、色彩空间、图像 XObjects 等)在其他页面上重复使用。

    但是,在我看来,您已经获得了接近 5:1 的比率(2k * 100 页 = 200Kb,最终文件为 46Kb),但公平地说,这 2Kb 的一部分是围绕页面。

    没有看到您的输入文件,我真的无法进一步评论,但坦率地说,我怀疑在不手工制作文件的情况下是否可以让它更小。无论如何,一个 46Kb 的文件有什么问题?

    【讨论】:

    • 嗨!感谢您的回复!我很抱歉混淆了文件大小,我的意思是 2061kb,但我将问题更新为 MB。当这增长到使用更多页面时,假设其中有 1000 个,文件大小将开始变得相当重要。我将如何重用内容流来创建 PDF?
    • 您需要手动编码 PDF,每个 Page 字典都有一个 /Content 键指向相同的内容流。请注意,一旦您修改任何页面,这将中断,然后每个页面都必须有自己的内容流,因此您又回到了一个大文件。更不用说一个简单的 PDF 处理器很可能会因为每个页面都指向相同的内容这一事实而感到困惑,如果您修改了一个页面,您很可能(并且合理地)最终在每个页面上进行相同的修改(即可能只更新单个内容流)
    猜你喜欢
    • 2015-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-28
    • 2021-03-20
    • 2010-10-10
    • 1970-01-01
    相关资源
    最近更新 更多