我正在嘗試從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