2017-04-22 15 views
0

大胆な単語をpdfファイルの大文字にpdfboxライブラリを使ってテキストファイルにエクスポートしようとしています。私は太字の単語の後に空白行を1つ生きたい。あなたはPDFファイル(Dictionary.pdf)から15ページから始まり、その定義を持つ辞書を見ることができます。単語は太字で、定義は通常のフォントです。ここでpdfから大胆な単語を抽出する

は私が見えるように私のテキストファイルにする方法である:
「辞書出典:
ΑΒΑθΗΣ
ΑΒΑθΗΣ
ΑΒΑθΕΣ
ΕΠΙΘ:ότανκάτιείναιαβαθές、δενέχειμεγάλοβάθος(= ρηχός 、άβαθος≠βαθύς):ταπαιδιάμαθαίνουν κολύμπιστααβαθήνερά ....ここで」

は私のコードが、国連です。幸い、太字は通常のフォントと区別できません。コードをデバッグした後、大胆な文字があっても、text.getFont()。getFontDescriptor()。isForceBold()はfalseで、text.getFont()。getFontDescriptor()。getFontWeight()= 0です。 (この状況で)太字テキストのフォント名はそうあなたを太字単語が含まれているため、あなたは

作品完全

if (text.getFont().getName().contains("Bold") &&wasBold) 
にif文

if (text.getFont().getFontDescriptor().isForceBold() || 
       text.getFont().getFontDescriptor().getFontWeight() > 680 &&wasBold) 

を交換

public class PDFBoldParser extends PDFTextStripper { 

    PrintWriter writer; 
    boolean wasBold=false; 

    public PDFBoldParser(String filepath) throws IOException{ 
     writer=new PrintWriter(filepath,"UTF-8"); 
     writer.println("Dictionary Source:"); 
    } 

    @Override 
    protected void processTextPosition(TextPosition text){ 
     if(text.getFont().getFontDescriptor()!=null){ 
      if (text.getFont().getFontDescriptor().isForceBold() || 
        text.getFont().getFontDescriptor().getFontWeight() > 680 &&wasBold) { 
       writer.print(text.toString().toUpperCase()); 
       wasBold=true; 
      } 
      else if(text.getFont().getFontDescriptor().isForceBold() || 
        text.getFont().getFontDescriptor().getFontWeight() > 680 &&!wasBold){ 
       writer.println(); 
       writer.print(text.toString().toUpperCase()); 
       wasBold=true; 
      } 
      else{ 
       writer.print(text.toString()); 
       wasBold=false; 
      } 
     } 
    } 

    public void closeParser(){ 
     writer.close(); 
    } 
} 
+1

フォント名を見ることができます。太字のフォントには太字が付いていることがあります(必ずしもそうではありません)。 –

+0

私のために働いてくれてありがとう! –

+1

あなたのコードであなた自身で質問に答えてください。私は今日はあまりにも怠惰です:-) –

答えて

3

だけであれば文字が太字であるかどうかを判断できます。

関連する問題