我正在尝试从PDF文件中自动提取重要的关键字。我能够从PDF文档中获取文本信息。但是现在我需要知道,这些关键字具有哪种字体大小和字体系列。iText - 获取文本段的字体大小和族
下面的代码我已经有:
主要
public static void main(String[] args) throws IOException {
String src = "SEM_081145.pdf";
PdfReader reader = new PdfReader(src);
SemTextExtractionStrategy semTextExtractionStrategy = new SemTextExtractionStrategy();
PrintWriter out = new PrintWriter(new FileOutputStream(src + ".txt"));
Rectangle rect = new Rectangle(70, 80, 490, 580);
RenderFilter filter = new RegionTextRenderFilter(rect);
for (int i = 1; i <= reader.getNumberOfPages(); i++) {
// strategy = new FilteredTextRenderListener(new LocationTextExtractionStrategy(), filter);
out.println(PdfTextExtractor.getTextFromPage(reader, i, semTextExtractionStrategy));
}
out.flush();
out.close();
}
,我已经实现了TextExtraction战略SemTextExtractionStrategy
看起来像这样:
public class SemTextExtractionStrategy 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;
}
}
我可以得到FontType但没有办法获得字体大小。是否有另一种方法或如何获得当前文本段的字体大小?
或者是否有任何其他库可以从TextSegments中获取字体大小?我已经看了一下PDFBox和PDFTextStream。 Aspose的PDF Shareware Library可以完美地完成这项工作。但它非常昂贵,我需要使用一个开源项目。
Thx,稍后再尝试并发布其他人的java代码;) – Prine
它正在工作!将发布我的Java解决方案作为一个答案。再次感谢! – Prine
关于这个计算的问题。我们应该在这里使用基线还是下降线?如果我使用下降线,结果数字似乎更好地匹配其他应用程序(如OS X预览PDF注释工具)显示的“字体大小”。 – Thilo