PDFからテキストを抽出しようとしましたが、itextのおかげでテキスト全体を抽出できます。ただし、見出しのフォントを検出しようとしています。この情報を使用して、2 つの特定の見出しの間のテキストのみを抽出することを計画しています。たとえば、科学論文では、「導入」部分のみを抽出したいと考えています。これを行うには、次のリンクに適用しました。
iTextを使用してPDFファイルからテキストフォントを取得する
ただし、手動で確認すると、すべての単語に同じフォント タイプが表示されるようです (Word 文書にコピー ペーストすると、異なるフォントが表示されます)。これが私が書いたコードです。
PdfReader reader = new PdfReader(pdf);
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(txt), "UTF-8"));
SemTextExtractionStrategy semTextExtractionStrategy = new SemTextExtractionStrategy();
for (int j = 1; j <= reader.getNumberOfPages(); j++) {
out.println(PdfTextExtractor.getTextFromPage(reader, j, semTextExtractionStrategy));}
out.flush();
out.close();
そして、抽出戦略のために作成したクラス。
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.println(renderInfo.getFont().getFullFontName());
System.out.println(text);
}
@Override
public void endTextBlock() {
}
@Override
public void renderImage(ImageRenderInfo renderInfo) {
}
@Override
public String getResultantText() {
return text;
}
}
public static void main(String args[]) {
trial credentials = new trial();
}}
このコードの結果として、このような結果が得られます。いずれもフォントタイプ 4 です。
...
4 --> font type
[[Ljava.lang.String;@4371767c --> font getFullFontName() ---> it must be HelveticaNeue-Bold
INTRODUCTION --> original text
4
[[Ljava.lang.String;@4e19e97b --> it must be AGaramond-Regular
We
4
[[Ljava.lang.String;@72fb24c --> it must be AGaramond-Regular
have
...