2017-04-22 5 views
0

Ich versuche, die fett geschriebenen Wörter in Oberseiten einer pdf-Datei zu einer Textdatei unter Verwendung der pdfbox Bibliothek zu exportieren. Ich möchte eine leere Zeile nach dem Wort in Fettdruck leben. Wie Sie aus der PDF-Datei (Dictionary.pdf) ab Seite 15 entnehmen können, ist es ein Wörterbuch mit den Definitionen. Die Wörter sind fett und die Definitionen haben normale Schrift.Fett gedruckte Wörter aus pdf

Hier ist, wie ich zu meiner Textdatei aussehen soll:
„Wörterbuch Quelle:
ΑΒΑθΗΣ
ΑΒΑθΗΣ
ΑΒΑθΕΣ
ΕΠΙΘ .: όταν κάτι είναι αβαθές, δεν έχει μεγάλο βάθος (= ρηχός , άβαθος ≠ βαθύς). Τα παιδιά μαθαίνουν κολύμπι στα αβαθή νερά ....“

Hier ist mein Code, aber un glücklicherweise kann es nicht von normaler Schrift trennen. Nachdem Sie den Code debuggen erkannte ich, dass, selbst wenn es ein mutiges Zeichen der text.getFont() ist. GetFontDescriptor(). IsForceBold() falsch ist und text.getFont(). GetFontDescriptor(). GetFontWeight() = 0.

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

Sie auf den Namen der Schriftart aussehen könnte, manchmal fett Schriftarten „bold“ darin haben (aber nicht immer). –

+0

Danke das hat für mich funktioniert !!! –

+1

Bitte beantworten Sie die Frage selbst mit Ihrem Code. Ich bin heute zu faul :-) –

Antwort

3

einfach, wenn Sie die if-Anweisungen

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

mit

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

funktioniert perfekt ersetzen, weil der Font Name für den fett gedruckten Text (in dieser Situation) enthält das Wort, das Sie Bold so kann bestimmen, wo ein Zeichen fett ist oder nicht.

Verwandte Themen