无论猫的页数如何,PDFTK 输出与输入大小相同
PDFTK Output Same Size as Input Regardless of Cat'd Page Count
我 运行 在处理一组特定的 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 做出以下假设:如果您有一个文件大小为 3000 KB 且有 10 页的 PDF,那么拆分此 PDF 将产生 30 个文件大小为 300 KB 的文件。
这个假设是错误的。想象一个 3000 KB 的文档,包含十页和以下对象:
- 每页使用四个字体子集,每个大约 50 KB
- 一页上显示十张图片,每张约 200 KB(每页一张图片)
- 每页有四张图片,每张约 50 KB
- 十页内容流,每页约 25 KB
- 大约 350 KB 用于目录、信息字典、页面树、交叉引用等对象 table 等...
单个页面至少需要:
- 四个字体子集:4 倍 50 KB
- 单张图片:1 次 200 KB
- 四张图片:4 次 50 KB
- 单个内容流:1 次 50 KB
- 略微减少的交叉引用 table,略微减少的页面树,几乎相同的目录,相同大小的信息字典,... 200 KB
总计 850 KB。这意味着如果将 10 页 3000 KB 的 PDF 文档拆分为 10 个单独的页面,最终将得到 8500 KB(850 KB 的 10 倍)。
我的猜测是您的 PDF 中的共享资源(每个页面中使用的资源,例如字体)很大。例如。如果有人使用高分辨率图像作为每个页面的背景大约需要 25M,那么您的 600 个页面中的每个页面都需要这 25M。
请注意,PdfTk 只不过是 iText 过时版本的包装器。您可能想尝试更新版本的 iText,看看问题是否仍然存在。
我 运行 在处理一组特定的 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 做出以下假设:如果您有一个文件大小为 3000 KB 且有 10 页的 PDF,那么拆分此 PDF 将产生 30 个文件大小为 300 KB 的文件。
这个假设是错误的。想象一个 3000 KB 的文档,包含十页和以下对象:
- 每页使用四个字体子集,每个大约 50 KB
- 一页上显示十张图片,每张约 200 KB(每页一张图片)
- 每页有四张图片,每张约 50 KB
- 十页内容流,每页约 25 KB
- 大约 350 KB 用于目录、信息字典、页面树、交叉引用等对象 table 等...
单个页面至少需要: - 四个字体子集:4 倍 50 KB - 单张图片:1 次 200 KB - 四张图片:4 次 50 KB - 单个内容流:1 次 50 KB - 略微减少的交叉引用 table,略微减少的页面树,几乎相同的目录,相同大小的信息字典,... 200 KB
总计 850 KB。这意味着如果将 10 页 3000 KB 的 PDF 文档拆分为 10 个单独的页面,最终将得到 8500 KB(850 KB 的 10 倍)。
我的猜测是您的 PDF 中的共享资源(每个页面中使用的资源,例如字体)很大。例如。如果有人使用高分辨率图像作为每个页面的背景大约需要 25M,那么您的 600 个页面中的每个页面都需要这 25M。
请注意,PdfTk 只不过是 iText 过时版本的包装器。您可能想尝试更新版本的 iText,看看问题是否仍然存在。