假设我有一个很长的网站的 PDF。在阅读了其中的一些之后,我认为其中有一些无关的页面;但不是每次我决定删除一个页面时都找到网站,我想将其打印为 PDF 而只是不选择要打印的页面(使用 CUPS-PDF)。这是否会降低 PDF 的质量,特别是如果我要多次执行此操作?有没有更好的方法来实现我正在寻找的东西?我尝试过 PDFEdit,结果好坏参半,并且想要更可靠的东西。当然,我总是可以返回站点并保存一个新版本,使用相同的技术忽略那些我不想要的页面。
War*_*ung 10
原则上,可以通过一些程序链打印 PDF,这些程序以 PDF 生成结束,而不会造成质量损失。
必须发生两件主要事情才能保证感知无损转换:
链中的每个链接都必须理解所有文档元素,并能够无损地将它们传递到链中的下一个部分:
如果文档包含嵌入字体,字体也必须安装在 PDF 编写者可以找到的地方,以便它可以重新嵌入,或者嵌入的字体必须以某种方式通过链。
如果文档包含嵌入的小程序——JavaScript、Flash、Postscript……——它们必须原封不动地传递。
如果文档包含超链接、活动表单、OCR 文本层、自定义页码、非打印标记、注释、元数据等,则链上的所有部分都必须知道如何将这些数据传递给作者。
如果文档包含混合页面大小,则链中的程序也必须能够使用该技巧。
链中的任何链接都不能重新解释通过它的任何数据。例如,在 PDF 链中对图像进行重新采样并转换为更有效的有损格式是很常见的。即使原始 PDF 中的图像已经是低 DPI JPEG,链中的部分也可能选择不同的 DPI 或具有不同的压缩级别设置。
(顺便说一句,PDF-to-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 链提供这样的质量保证。解释和中介的机会太多了。
如果我正确理解了您的主要目标,则您无需为打印为 PDF 而烦恼。您可以使用命令行工具pdftk
直接从 PDF 文件中提取任何一组页面并将它们另存为新页面。(它还允许更多操作,如优化、添加/删除密码、旋转某些页面等。)该工具可在(可能)所有桌面 Linux 发行版的软件包存储库中使用。
pdftk
您将使用的主要操作是cat。它的工作非常直观——例如:
pdftk input_file.pdf cat 3-23 50-end output output_file.pdf
Run Code Online (Sandbox Code Playgroud)
将创建一个output_file.pdf
由第 3 页到第 23 页和第 50 页到原始input_file.pdf
文件末尾的文件。查看man pdftk
更多示例(在手册末尾)。