如何正确裁剪具有不均匀文本边距的PDF

时间:2012-10-11 09:30:36

标签: pdf

我有这样的PDF:

enter image description here

其中相对于文本内容的所有边距在每页上都不同。

是否有任何工具可以为我纠正这个问题?

我知道Scan Tailor可以在位图上执行此操作,但这只是文本图层的PDF,因此我不会在任何阶段涉及位图的解决方案之后


更新

好的,对我来说,没有必要尝试在Windows上运行PDFCrop,因为ghostscript提供了主要功能。此命令(取自pdfcrop perl脚本):

gswin32c.exe -dSAFER -dNOPAUSE -dBATCH -q -r72 -sDEVICE=bbox -f input.pdf 2> bbox.txt

生成带有文本内容维度的bbox.txt文件,就好像没有边距(边界框)一样。它看起来像这样:

%%BoundingBox: 91 259 474 757
%%HiResBoundingBox: 91.000000 259.000000 474.000000 757.000000
%%BoundingBox: 85 224 470 768
%%HiResBoundingBox: 85.000000 224.000000 469.375000 768.000000
%%BoundingBox: 102 217 489 768
%%HiResBoundingBox: 102.000000 217.000000 488.457031 768.000000
...

其中,第一个数字是左下角x,y值,其余两个和右上角,从左下角开始测量(以像素/点为单位)。

这可以通过用户选择的语言读取,然后根据需要更正bbox并再次传递给ghostscript,如下所示:Cropping a PDF using Ghostscript 9.01

1 个答案:

答案 0 :(得分:1)

如果您确定只涉及文本(而不是在其上绘制文本的图像或绘制符号的路径),您可以使用iText(或者很可能也使用iTextSharp的某些.NET语言)轻松地在Java中构建这样的工具)使用解析器包功能。

iText in Action第2版第15.3.4章介绍了如何查找文本边距,示例代码可以在SourceForge iText SVN存储库的ShowTextMargins.java中找到。

通过操纵各个页面的MediaBox条目,您可以根据需要调整边距。