![完美的 pdfcrop](https://linux22.com/image/251947/%E5%AE%8C%E7%BE%8E%E7%9A%84%20pdfcrop.png)
我需要一个“完美”的 pdfcrop,可以裁剪确切地在其他程序中,将图片或文本的边缘对齐为图形对齐问题。我知道 standalone
包裹pdfcrop
,并已完成所有包含选项的问题--hires
。两种解决方案都无法解决确切地到边缘。例如,使用standalone
:
\documentclass[crop]{standalone}
\begin{document}
Hi
\end{document}
并使用pdfcrop --hires
:
如您所见,pdfcrop
很接近,但我需要精确的。我认为standalone
只知道字形给出的宽度并pdfcrop
从 中获取其信息gs
。是否可以使用 LaTeX 或任何外部工具实现完美裁剪?
答案1
为了能够可靠地裁剪矢量图形,您必须“打印”它才能查看黑点的位置。
“印刷”总是涉及分辨率:黑点必须具有正尺寸。
pdfcrop 使用 ghostscript 的 bbox 设备。根据 ghostscript 的文档,该设备的默认分辨率为 4000 dpi。
您可以更改此分辨率,但简单地放大它并不意味着您会得到更“完美”的结果:为了能够确定裁剪是否“完美”,您必须将其“打印”到屏幕上以查看黑点的位置,并且在较低的屏幕分辨率下,只有在非常大的缩放下您才能看到“精确”的裁剪。
答案2
扩展 Ulrike 的精彩答案:
之所以只能在将字体渲染为实际像素图后才能保证这一点,是因为原则上,字形的墨水及其边界框。
这是一个例子;URW Nimbus Sans 中的小写字母“m”:
显示了左侧和右侧边距(墨水和边界框之间的空间)。当然,TeX 设置为边界框,而不是墨水,这是“出于印刷原因”。
如果精密排版前最终的像素图渲染对你来说很重要,XeTeX 提供了一种允许你访问边距值的解决方案,如下所述在这个问题上。但这并不能 100% 保证。
答案3
扩展@ulrike-fischer 的评论,因为它包含了在我处理的大多数情况下有效的解决方案——而且我猜这可能在许多类似情况下有所帮助:
如果您的目标是没有边距,并且如果pdfcrop
裁剪/剪辑/移动部分内容超出图像边界,或者如果保留一些边距,则更高分辨率 ( --hires
)的组合和更大的图像缩放(--resolution WIDTHxHEIGHT
)可能是一种快速而实用的解决方案:
pdfcrop --hires --resolution 1000x1000 my.pdf
如果需要更精确,则进一步增加分辨率:
pdfcrop --hires --resolution 50000x50000 my.pdf
在大多数情况下,我都会以一种快速而实用的方式解决问题,但在某些特殊情况下,这种方法可能不够准确。