我正在尝试使用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();
}
}
您可以查看字体名称,有时粗体字体中有“粗体”(但并非总是)。 –
非常感谢,为我工作! –
请用你的代码自己回答这个问题。今天我太懒了:-) –