【问题标题】:getting co ordinates of selected area from pdf using itext使用itext从pdf中获取选定区域的坐标
【发布时间】:2015-01-13 07:47:06
【问题描述】:

我正在尝试从 PDF 的特定部分删除文本。如果我知道该区域的 X、Y 坐标,我就可以删除文本。但我无法从 PDF 中获取所选区域的坐标。请帮助我。

【问题讨论】:

  • 问题不清楚,因为它说“我无法获取所选区域的坐标”,但它没有告诉我们有关选择标准的任何信息。选择是否手动完成?选择是基于注释的位置吗?选择是基于某些特定内容的出现吗?这个问题需要澄清。可能是stackoverflow.com/questions/13632541/…的副本

标签: java itext


【解决方案1】:

这个问题是你上一个问题的后续问题:Remove text occurrences contained in a specified area with iText

在这个问题中,您询问有关从特定 区域中删除内容的问题。现在您在问如何确定这个特定区域,但您的问题并不完整:您没有告诉我们选择该区域的任何标准。

您似乎正在尝试做一些称为修订的事情。这在 StackOverflow 问题中进行了解释:How to create and apply redactions?

在该问题的答案中,我解释了如何以编程方式创建编校注释。但是,编辑通常是使用 Adob​​e Acrobat 手动完成的:

箭头显示您需要的功能:工具 > 保护 > 标记为密文

如果您只需要坐标而不需要编辑注释,您可以引入另一个注释,允许您手动标记矩形,然后使用 iText 提取坐标。例如:如果矩形是一个表单域,那么很容易得到坐标。如果您要删除的内容是表单字段的值,则删除该内容会更容易:您只需删除该字段即可。

如果无法手动检索这些坐标,那么您可能会面临一些不可能的事情:例如:如果您对要删除的区域的内容一无所知,那么您到底是怎样的人?打算教程序需要删除什么?

如果您确实知道要查找的内容,则必须解析该内容。这个问题之前有人问过并回答过:Get the exact Stringposition in PDF

更新:

在 cmets 中,您解释了将 PDF 页面转换为图像,并在 Java Swing 应用程序中呈现图像,以便用户可以选择一个矩形。此矩形存储为java.awt.Image

由于Java中的坐标系与PDF中的坐标系不同,这会导致以下潜在问题。

  1. Y 轴不同:在 PDF 中,页面大小以矩形描述,我们称之为页面边界。最重要的页面边界是 MediaBox(强制)和 CropBox(可选)。 MediaBox 包含定义页面的矩形的左下角和右上角的坐标。在坐标系中,Y 轴指向上方。左下角的 Y 坐标低于右上角的 Y 坐标。在 Java 中则相反:对象顶部的 Y 坐标为 0,Y 轴指向下方:Y 值越高,该 Y 值处的对象越低。
  2. 可能存在偏移: 大多数情况下,MediaBox 的左下角坐标 X = 0,Y = 0。并非总是如此。可能需要考虑偏移量。
  3. 分辨率可以不同:默认用户单位对应一个点。例如:A4 页面大小为 595 x 842 个用户单位。每英寸有72个点。创建图像时,不一定以点为单位。也许您以像素为单位进行测量。也许您创建了一个每英寸 300 像素 (300 dpi) 的图像。

所有这些原因都可能导致您从 Swing 应用程序获得的矩形与您需要在 PDF 中使用的坐标不同。您需要考虑所有这些,否则,您将继续面临“它不起作用”的问题。这不是 iText 问题,这是数学问题。

【讨论】:

  • 我将 pdf 放入 jframe 并在特定区域绘制矩形,无论我想使用鼠标事件删除什么,并获得矩形坐标。基于此坐标,我从实际 pdf 中删除文本,但它的内容未删除,请提出我的错误建议。
  • 如何将 PDF 读入 JFrame(哪个工具?)以及坐标的性质(使用哪个坐标系)?如果你使用这些坐标在 PDF 上画一个矩形,你看到那个矩形了吗?如果不是,则您的坐标是错误的,因为它们不是 PDF 坐标系中的坐标。你最大的错误是你问的问题不具体。
  • 我将pdf页面转换为图像并将该图像添加到jframe并使用paint方法从该jframe中选择区域,然后获取java.awt.Rectangle。
  • 啊哈,这就是导致您的问题的原因:您使用的坐标系与 PDF 中的坐标系不同。
  • 他们是否有可能在 pdf 中选择上述文本区域。请帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 2020-08-27
相关资源
最近更新 更多