将 PDF 打印为 PDF 会降低其质量吗?

将 PDF 打印为 PDF 会降低其质量吗?

假设我有一个很长的网站 PDF。读了一些之后,我发现其中有一些无关的页面;但我不想每次决定删除某个页面时都找到该网站,而是想将其打印为 PDF,而不是选择该页面进行打印(使用 CUPS-PDF)。这是否会降低 PDF 的质量,特别是如果我多次执行此操作?有没有更好的方法来实现我正在寻找的目标?我尝试过 PDFEdit,结果好坏参半,并且想要更可靠的东西。当然,我总是可以返回网站并保存新版本,使用忽略那些我不想要的页面的相同技术。

答案1

原则上,可以通过某些程序链打印 PDF,最终生成 PDF,而不会造成质量损失。

为了保证感知上的无损转换,必须发生两件事:

  1. 链中的每个链接都必须理解所有文档元素,并能够将它们无损地传递到链中的下一个部分:

    • 如果文档包含嵌入字体,则该字体还必须安装在 PDF 编写器可以找到它的位置,以便可以重新嵌入它,或者必须以某种方式通过链传递嵌入字体。

    • 如果文档包含嵌入式小程序(JavaScript、Flash、Postscript...),则它们必须原封不动地传递。

    • 如果文档包含超链接、活动表单、OCR 文本层、自定义页码、非打印标记、注释、元数据等,则链上的所有部分都必须知道如何将此数据传递给编写者。

    • 如果文档包含混合的页面大小,链中的程序也必须能够实现这一技巧。

  2. 链中的任何环节都不能重新解释通过它的任何数据。例如,在 PDF 链中,对图像进行重新采样并转换为更有效的有损格式是很常见的。即使原始 PDF 中的图像已经是低 DPI JPEG,链中的各个部分也可能会选择不同的 DPI 或具有不同的压缩级别设置。

    (顺便说一句,从技术上讲,PDF 到 PDF 链的任一端或两端都有 JPEG,这一事实意味着该链不是无损的,除非原始 JPEG 数据以某种方式按原样传递。但是,重新压缩步骤可能在感知上是无损的,但这并不总是发生,但有时是故意的。)

到目前为止,我只考虑了感知质量。可以实现感知上无损的转换,但会失去可编辑性或最终得到一个更大的文件:

  • 包含从主要来源创建的文本(也就是说,不是从其他文档演示格式扫描或转换)的 PDF 文档通常包含实际文本和字体数据,使 PDF 阅读器可以在屏幕上绘制文本就像文字处理器一样。

    可以以感知无损的方式将此类文本转换为 2D 光栅或矢量艺术。 PDF 甚至允许您通过使用非打印 OCR 文本层来保留可搜索性和屏幕阅读器可访问性。然而,这样的转换会增加文件大小并使编辑变得更加困难。

  • 矢量艺术可以使用等于打印/查看 DPI 或偶数倍的 DPI 进行光栅化。

  • 该链可以将所有 JPEG 转换为 TIFF,从而绝对不会损失图像质量。

  • 该链可能涉及 JPEG 到 JPEG,不改变 DPI,但使用高固定质量设置以避免产生可察觉的伪影。

对于简单的情况,删除页面,如果您使用一个能够很好地理解 PDF 文件格式的程序来简单地删除页面数据,那么获得无损保证是相当容易的。这是完全可行的,因为 PDF 中的页面或多或少是独立的。问题只是找到一个足够了解现有文件编码所用的特定 PDF 变体的工具。 PDF 是一种非常复杂的文件格式,因此声称支持 PDF 的程序实际上只提供部分支持的情况很常见。可能只有一款程序能够真正 100% 理解 PDF:Adobe Acrobat Pro。当我得知处理 PDF 的其他每个程序实际上都是一个子集时,我并不感到惊讶。

底线是,我不希望 PDF-via-print-from-PDF 链能够提供这样的质量保证。解释和调解的机会太多了。

答案2

如果我正确理解您的主要目标,那么您无需在打印为 PDF 时遇到任何麻烦。您可以使用命令行工具,例如pdftk直接从 PDF 文件中提取任意一组页面并将其另存为新页面。 (它还允许更多操作,例如优化、添加/删除密码、旋转某些页面等。)该工具在(可能)所有桌面 Linux 发行版的软件包存储库中都可用。

您将使用的主要pdftk操作是。它的工作原理非常直观,例如:

pdftk input_file.pdf cat 3-23 50-end output output_file.pdf

output_file.pdf将创建一个由第 3 页到第 23 页以及第 50 页到原始文件末尾组成的文件input_file.pdf。查看man pdftk更多示例(在手册末尾)。

答案3

一般来说,不,不应该发生质量损失。如果确实如此,则应归咎于程序,而不是格式。可能发生的一些情况可能被视为质量损失:

  • 图像可能会被重新压缩(可能会导致生成丢失)
  • 文本(和其他向量)可能会变成样条线,可能会导致可用性问题(无法复制文本)等

我从来没有使用过CUPS-PDFPDFEdit,所以这些只是对可能发生的情况的假设,也就是说,我不知道它们是否可能会发生。

相关内容