gpt4 book ai didi

java - 在itextpdf中应用位置提取策略后,我们可以使用文本提取策略吗?

转载 作者:行者123 更新时间:2023-12-01 12:47:56 24 4
gpt4 key购买 nike

我使用以下代码从特定位置获取 PDF 中的数据。我想在该位置显示粗体文本。

Rectangle rect = new Rectangle(0,0,250,250);
RenderFilter filter = new RegiontextRenderFilter(rect);
fontBasedTextExtractionStrategy strategy = new fontBasedTextExtractionStrategy();
strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter); //Throws Error.

首先,创建一个名为 fontBasedTextExtractionStrategy 的新方法而不是简单的文本 TextExtractionStrategy 有帮助吗?类似下面的内容

 public class fontBasedTextExtractionStrategy implements TextExtractionStrategy {
private String text;

@Override
public void beginTextBlock() {
}

@Override
public void renderText(TextRenderInfo renderInfo) {
text = renderInfo.getText();

System.out.println(renderInfo.getFont().getFontType());

System.out.print(text);
}

@Override
public void endTextBlock() {
}

@Override
public void renderImage(ImageRenderInfo renderInfo) {
}

@Override
public String getResultantText() {
return text;
}
}

但是如何正确调用它呢?

最佳答案

请查看 ParseCustom例子。在此示例中,我们创建一个自定义 RenderFilter(不是 TextExtractionStrategy):

class FontRenderFilter extends RenderFilter {
public boolean allowText(TextRenderInfo renderInfo) {
String font = renderInfo.getFont().getPostscriptFontName();
return font.endsWith("Bold") || font.endsWith("Oblique");
}
}

此文本将过滤所有文本,以便仅过滤 Postscript 字体名称以 Bold 或 Oblique 结尾的文本。

这是使用此过滤器的方式:

public void parse(String filename) throws IOException {
PdfReader reader = new PdfReader(filename);
Rectangle rect = new Rectangle(36, 750, 559, 806);
RenderFilter regionFilter = new RegionTextRenderFilter(rect);
FontRenderFilter fontFilter = new FontRenderFilter();
TextExtractionStrategy strategy = new FilteredTextRenderListener(
new LocationTextExtractionStrategy(), regionFilter, fontFilter);
System.out.println(PdfTextExtractor.getTextFromPage(reader, 1, strategy));
reader.close();
}

如您所见,我们创建了一个 FilteredTextRenderListener,它采用两个过滤器:一个 RegionTextRenderFilter 和我们基于字体自制的过滤器。

关于java - 在itextpdf中应用位置提取策略后,我们可以使用文本提取策略吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24506830/

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