【问题标题】:Using Rectangle to select text in iText使用 Rectangle 在 iText 中选择文本
【发布时间】:2013-10-12 04:14:32
【问题描述】:

这是“iText in action”中使用 Rectangle 选择文档的一部分以从 pdf 文件中提取文本的示例:

PdfReader reader = new PdfReader(pdf);
PrintWriter out = new PrintWriter(new FileOutputStream(txt));
Rectangle rect = new Rectangle(70, 80, 420, 500);
RenderFilter filter = new RegionTextRenderFilter(rect);
TextExtractionStrategy strategy;
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
    strategy = new FilteredTextRenderListener(
     new LocationTextExtractionStrategy(), filter);
     out.println(PdfTextExtractor.getTextFromPage(reader, i, strategy));
}
out.flush();
out.close();

我不明白这些数字的含义(70、80、420、500)。通常, (70, 80) 是坐标,420 是宽度,500 是矩形的高度,但我不确定比例、如何测量以及它开始的确切点。 谁能帮我解释一下或展示一些示例图片?

【问题讨论】:

  • PDF 为每个页面定义了一个坐标系统,即您可以从 PdfReader 请求的媒体框。很常见的是原点位于左下角,单位为 1/72"。

标签: java pdf text itext


【解决方案1】:

在这种情况下,您有两个坐标:x = 70,y = 80 是左下角坐标; x = 420, y = 500 是右上角的坐标。 PDF 中使用的单位是“用户单位”。默认情况下,1 个用户单位等于 1 分,但可以使用/UserUnit 键更改默认值。正如 mkl 在他的评论中指出的那样,MediaBox 定义了页面大小。但是,您也可以拥有一个定义页面可见区域的 CropBox(如果存在,CropBox 应该始终小于 MediaBox)。

【讨论】:

  • 好的,我明白了。非常感谢!
猜你喜欢
  • 2021-10-22
  • 1970-01-01
  • 2018-07-03
  • 2014-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-04
相关资源
最近更新 更多