是否可以使用iText按位置查找文本?

时间:2019-01-14 16:21:43

标签: java pdf itext

我有一个PDF文件,该文件在页面的特定区域包含一些行(3);是否有可能在该特定区域中找到所有文本,并用固定的字符串重新放置?

1 个答案:

答案 0 :(得分:0)

要在某些指定区域查找文本,可以创建自己的IEventListener并使用它来解析页面。

有一个iText7官方示例,该示例显示了如何以这种方式处理图像。您可以通过听EventType.RENDER_TEXT而不是EventType.RENDER_IMAGE来方便地修改它。 https://github.com/itext/i7js-book/blob/develop/src/test/java/com/itextpdf/samples/book/part4/chapter15/Listing_15_31_MyImageRenderListener.java https://github.com/itext/i7js-book/blob/develop/src/test/java/com/itextpdf/samples/book/part4/chapter15/Listing_15_30_ExtractImages.java

如@mkl注释中所建议,可以通过编辑区域并在其上绘制文本来进行替换。 请注意,仅在要编辑的文本上绘制白色的div或summat是不够的,因为它仍将出现在页面的内容流中。相反,可以使用iText的pdfSweep。修订后的代码将显示为摘要:

    List <PdfCleanUpLocation> cleanUpLocations = new ArrayList<PdfCleanUpLocation>();
    cleanUpLocations.add(new PdfCleanUpLocation(pageNum, new Rectangle(215, 780, 10, 30), colorToDrawUponTheArea));
PdfCleanUpTool cleaner = new PdfCleanUpTool(pdfDocument, cleanUpLocations);
    cleaner.cleanUp();

然后可以使用ElementPropertyContainer#setFixedPositionCanvas将字符串放置在编辑区域上。