pdfcrop 内容保留

pdfcrop 内容保留

下面是一个最简单的工作示例来说明这个问题。假设我们制作一个这样的文档

\documentclass[12pt]{article}
\begin{document}
11111111111111111111111111111

\vspace{5mm}

22222222222222222222222222222
\end{document}

然后用 pdfcrop 以两种方式裁剪

pdfcrop 1.pdf a.pdf --margin="0 0 -5 -530"

pdfcrop 1.pdf b.pdf --margin="0 0 -5 -560"

然后制作第二个文档

\documentclass[12pt]{article}
\usepackage{graphicx}
\begin{document}
\includegraphics{a.pdf}

\vspace{5mm}

\includegraphics{b.pdf}
\end{document}

以下是结果的屏幕截图: 在此处输入图片描述

原本应该被裁剪的两行在突出显示时仍然可见!

有没有办法彻底裁剪 pdf,而不保留内容?要么使用 pdfcrop,要么不使用。

过去,我曾通过使用 和 转换为 ps 并转回 成功地消除了这些残留物pdf2psps2pdf但对于更复杂的情况,它往往会栅格化矢量图形的某些部分,而这正是我想避免的。

答案1

在、的pdfcrop选项viewport/或大多数其他裁剪工具中,裁剪是通过缩小可见区域的尺寸、减小 或 的值来完成的。这非常快速且易于实现。但整个页面的内容trim\includegraphics/MediaBox/CropBox未受影响。这意味着,裁剪区域之外的部分仍然存在,通常是不可见的,但通过选择“不可见”文本,您会看到它存在。

删除此内容是高度昂贵而复杂,因为需要分析整个 PDF 页面内容,并只在正确的位置重写可见内容。如果对象(图像、图形元素、字符等)既在裁剪区域内又在裁剪区域外,它很快就会变得非常丑陋。

我对能够进行“深度”裁剪并去除物体的工具很感兴趣,但我不知道这样的工具。

  • 在某种程度上,它可以手动完成,具体取决于裁剪区域、要删除的对象、PDF 页面流的编写方式以及对 PDF 页面流语法的了解程度。首先,需要解压缩 PDF 页面流,例如通过。pdftk然后识别生成不需要的内容的行,可以通过用注释字符替换第一个字节来删除它们%。对象流的大小不应更改,否则需要在 PDF 结构中更正许多文件偏移量值。当然,删除不能违反语法,当前传输矩阵和其他图形状态操作符也可能需要更正。

  • 另一个选择可能是矢量图形程序,它可以导入和导出 PDF 文件。然后,不需要的对象可能会被移除。

  • PDF 页面可以转换为位图图像,但会有一些质量损失。然后可以使用许多工具和图像编辑器轻松裁剪该图像。

相关内容