gpt4 book ai didi

java - 如何使用 iText 读取 PDF 文件作为模板

转载 作者:行者123 更新时间:2023-12-02 04:22:51 30 4
gpt4 key购买 nike

我正在尝试读取单页 PDF 文件并动态替换其中的一些内容(即日期、页码)。

Here是我的示例 PDF 文件。(该文件是使用 MS Word 创建的。所有元素都是表格)

我知道我可以使用 Acro Form 来完成此操作,但在 Word 中,用户创建模板要简单得多。

在此示例中,我想将 {CREATE_DATE} 替换为当前日期,{DATA_AREA} 将是内容区域,{PAGE_NUMBER}与当前页码。

到目前为止,我所做的是覆盖 ITextExtractionStrategy 并将其作为 delegate 传递给 GlyphTextEventListener。通过这样做,我可以读取每个字符,获取它的位置并计算它所需的总宽度,然后,我将结果传递给每个新页面的 IEventHandler

private void renderText(TextRenderInfo renderInfo) {

if (renderInfo.getText().trim().length() == 0) {
if (text.isEmpty()) {
return;
} else {

LineSegment ascent = renderInfo.getAscentLine();
endX = ascent.getEndPoint().get(0);
endY = ascent.getEndPoint().get(1);

Rectangle rectangle = new Rectangle(initX, initY, endX - initX, endY - initY);

FontFilter fontFilter = new FontFilter(rectangle);
boolean accept = fontFilter.accept(renderInfo, EventType.RENDER_TEXT);

float fontSize;
if (accept) {
fontSize = fontFilter.getFontSize();
}else {
fontSize = 8;
}


SimpleTextWithRectangle textWithRectangle = new SimpleTextWithRectangle(rectangle, text,
fontSize);
textWithRectangleList.add(textWithRectangle);

text = "";
initX = 0; initY = 0; endX = 0; endY = 0;
return;
}
}

LineSegment descent = renderInfo.getDescentLine();

if (text.isEmpty()) { // start word
initX = descent.getStartPoint().get(0);
initY = descent.getStartPoint().get(1);
}

text = text + renderInfo.getText();

}

我想要实现的是获取边界(如果可能,则为线条),以便我可以定义数据区域。

提前致谢。

最佳答案

我找到了一个可以为我提供线路的解决方案。

我的解决方案是覆盖RegexBasedLocationExtractionStrategy,然后实现eventOccurred 像这样:

    public void eventOccurred(IEventData data, EventType type) {
if (data instanceof TextRenderInfo) {
super.eventOccurred(data, type);

} else if (type == EventType.RENDER_PATH) {
readRectangles((PathRenderInfo) data);
} else if (type == EventType.RENDER_IMAGE) {
readImage((ImageRenderInfo) data);
}
}

现在在 readRectangles 中,我可以获取路径中的所有行并计算数据区域边界。

关于java - 如何使用 iText 读取 PDF 文件作为模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56625458/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com