【问题标题】:PDFTK Output Same Size as Input Regardless of Cat'd Page CountPDFTK 输出与输入相同的大小,无论 Cat'd 页​​数如何
【发布时间】:2017-03-28 16:22:15
【问题描述】:

我遇到了一组特定 PDF 的奇怪情况,不知道从哪里开始。如果我突发一个 25M、600 pg 的文件,则每个突发文件的输出变为 25M。如果我做 pdftk input.pdf cat 1-100 output out.pdf 大小也是 25M(25292kb vs 25524kb for original)。执行页面范围 1-5 会导致文件大小为 25040kb。

有没有我可以添加到 pdftk 的标志来处理这种情况? Ghostscript 可以从此 pdf 中获取页面范围并制作适当大小的 PDF,但 gs 似乎无法处理突发事件,并且需要安装所有字体。

【问题讨论】:

    标签: pdf pdftk


    【解决方案1】:

    您可能对 PDF 做出以下假设:如果您有一个文件大小为 3000 KB 和 10 页的 PDF,那么拆分此 PDF 将产生 30 个文件大小为 300 KB 的文件。

    这个假设是错误的。想象一个 3000 KB 的文档,其中包含 10 页和以下对象:

    • 每页使用四个字体子集,每个大约 50 KB
    • 十张图片显示在一个页面上,每张大约 200 KB(每页一张图片)
    • 每页显示四张图片,每张大约 50 KB
    • 十页,每个页面的内容流约为 25 KB
    • 大约 350 KB 用于目录、信息字典、页面树、交叉引用表等对象...

    单个页面至少需要: - 四个字体子集:4 乘以 50 KB - 单个图像:1 次 200 KB - 四个图像:4 乘以 50 KB - 单个内容流:1 次 50 KB - 略微缩小的交叉引用表、略微缩小的页面树、几乎相同的目录、相同大小的信息字典,... 200 KB

    总共有 850 KB。这意味着,如果您将 10 页 3000 KB 的 PDF 文档拆分为 10 个单独的页面,您最终会得到 8500 KB(10 乘以 850 KB)。

    我的猜测是共享资源(每个页面中使用的资源,例如字体)在您的 PDF 中非常庞大。例如。如果有人使用高分辨率图像作为每个页面的背景大约需要 25M,那么您的 600 个页面中的每一个都需要这 25M。

    请注意,PdfTk 只不过是一个过时版本的 iText 的包装器。您可能想尝试更新版本的 iText 以了解问题是否仍然存在。

    【讨论】:

    • 谢谢,这很有见地,我很难找到这类信息。关于如何分析并可能删除该信息的任何建议? Ghostscript 似乎能够全权删除信息并创建小的单个文件,这些文件总体上不会比原始单个文件大太多。 pdf2ps 然后 back 也可以,但是很耗资源。
    • 我认为 gs 有点“打印”PDF,这样做会降低分辨率并删除结构树、注释等内容。另请注意,PdfTk 很旧:它不支持 PDF 1.5 中引入的更高级的压缩。没有看到文件,很难评论实际问题。
    猜你喜欢
    • 2012-03-07
    • 2018-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-18
    • 2021-07-21
    • 1970-01-01
    • 2016-09-16
    相关资源
    最近更新 更多