我正在嘗試使用pdfbox庫將粗體字導出爲pdf文件的大寫字母。我想在粗體字後面留一行空白。正如你可以從pdf文件(Dictionary.pdf)看到的那樣,從第15頁開始,它是一個帶有定義的字典。單詞用粗體表示,定義具有正常的字體。從pdf中提取粗體字
這裏是我想我的文本文件看起來像:
「字典來源:
ΑΒΑθΗΣ
ΑΒΑθΗΣ
ΑΒΑθΕΣ
ΕΠΙΘ:ότανκάτιείναιαβαθές,δενέχειμεγάλοβάθος(= ρηχός ,άβαθος≠βαθύς):Ταπαιδιάμαθαίνουν κολύμπιστααβαθήνερά ......」
這裏是我的代碼,但聯合國幸運的是,它不能將粗體和普通字體分開。在調試代碼後,我意識到即使存在粗體字符,text.getFont()。getFontDescriptor()。isForceBold()爲false,並且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();
}
}
您可以查看字體名稱,有時粗體字體中有「粗體」(但並非總是)。 –
非常感謝,爲我工作! –
請用你的代碼自己回答這個問題。今天我太懶了:-) –