首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从pdf中提取区域

从pdf中提取区域
EN

Stack Overflow用户
提问于 2013-03-30 05:32:29
回答 3查看 1.3K关注 0票数 1

我想从pdf页面中提取一个由x-y坐标给出的区域。提取的区域可以作为页面存储在新的pdf文档中。这需要做几次,所以我希望这个过程是脚本化的。有没有什么工具/库可以帮助你做到这一点?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-01 07:27:49

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

看一下来自chapter 6 of iText in Action — 2nd Edition的示例TilingHero.java / TilingHero.cs。核心代码是:

代码语言:javascript
运行
复制
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为准-或者以商业形式提供)

票数 2
EN

Stack Overflow用户

发布于 2013-03-30 21:21:51

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

代码语言:javascript
运行
复制
pdftoppm -f <first page> -l <last page> -jpeg -x <start x> -y <start y> -W <width> -H <height> -jpeg <in file> > <out file>

例如,从点(x,y) = (100,200) (裁剪区域的左上角)开始裁剪第一个PDF页面的区域,宽度为50,高度为80,然后使用以下命令将其保存为JPEG文件:

代码语言:javascript
运行
复制
pdftoppm -f 1 -l 1 -jpeg -x 100 -y 200 -W 50 -H 80 'my.pdf' > 'crop.jpg'

如果您在文档解析方面遇到问题,可以使用'pdftoppm‘的'-r’选项(有关更多信息,请参阅'pdftoppm‘的手册页)。

当然,如果需要,您可以很容易地将JPEG文件转换为PDF。

票数 1
EN

Stack Overflow用户

发布于 2013-04-01 02:02:41

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

代码语言:javascript
运行
复制
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)位于页面的左下角。

这样就可以很容易地编写脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15711729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档