从pdf中提取区域

时间:2013-03-29 21:32:29

标签: pdf

我想从pdf页面中提取x-y坐标给出的区域。提取的区域可以作为页面存储在新的pdf文档中。这需要多次完成,所以我希望这个过程是脚本化的。是否有任何工具/库可以帮助实现这一目标?

3 个答案:

答案 0 :(得分:2)

如果iText(对于Java)或iText(夏普)(对于.Net)是可接受的库,您可以使用它们从某些PDF导入现有页面作为模板,其中哪些部分可以在另一个PDF中显示。

查看来自TilingHero.javaTilingHero.cs的示例chapter 6 / iText in Action — 2nd Edition。中央代码是:

PdfImportedPage page = writer.getImportedPage(reader, 1);
// adding the same page 16 times with a different offset
float x, y;
for (int i = 0; i < 16; i++) {
    x = -pagesize.getWidth() * (i % 4);
    y = pagesize.getHeight() * (i / 4 - 3);
    content.addTemplate(page, 4, 0, 0, 4, x, y);
    document.newPage();
}

如您所见,原始页面会导入一次,不同的部分会显示在不同的页面上。

(iText和iTextSharp可免费提供---受AGPL约束---或商业用途)

答案 1 :(得分:1)

您可以使用'pdftoppm'来完成此任务:

pdftoppm -f <first page> -l <last page> -jpeg -x <start x> -y <start y> -W <width> -H <height> -jpeg <in file> > <out file>

对于exaple,从点(x,y)=(100,200)裁剪第一个PDF页面的区域,这是裁剪区域的左上角,宽度为50,高度为80并保存JPEG文件使用:

完成
pdftoppm -f 1 -l 1 -jpeg -x 100 -y 200 -W 50 -H 80 'my.pdf' > 'crop.jpg'

如果您的文档解析遇到问题,可以使用'pdftoppm'的'-r'选项(有关详情,请参阅'pdftoppm'的手册页。)

当然,如果需要,您可以轻松地将JPEG文件转换为PDF格式。

答案 2 :(得分:1)

使用ghostscript,您可以通过以下方式裁剪pdf:

gs -f original.pdf -o final.pdf -sDEVICE=pdfwrite \
    -c "[/CropBox [x-left y-bottom x-right y-top] /PAGES pdfmark"

x-lefty-bottom等,坐标可以用所需的坐标代替。请注意,对于gs,坐标(0, 0)位于页面的左下角。

然后可以轻松编写脚本。