Я пытаюсь извлечь некоторый контент из PDF, в частности, я хочу извлечь весь текст, выделенный курсивом, и я использую iText. Затем я нашел этот пост получить курсивные строки из pdf очень полезным. И я использовал аналогичную стратегию.
Однако для моих PDF-файлов я просто не могу извлечь курсивный шрифт, поэтому я попытался распечатать имена шрифтов и обнаружил, что все имена шрифтов не являются обычными именами шрифтов, такими как «AdvPS_TTR», «FFHNAB+AdvGulliv-I», «PFIIDC+AdvOTce3d9a73», и именно по этой причине я не могу извлечь текст, выделенный курсивом. Вот у меня вопрос, что это за шрифты? Как узнать курсив или нет?
Если нужен код, я вставляю его ниже.
public class ItalicWordExtraction extends SimpleTextExtractionStrategy{
@Override
public void renderText(TextRenderInfo arg0){
DocumentFont font = arg0.getFont();
String[][] familyFontNamesArray = font.getFamilyFontName();
for (String[] familyFontNames : familyFontNamesArray){
for (String familyFontName : familyFontNames){
System.out.println(familyFontName);
if (familyFontName.toLowerCase().contains("italic"))
{
if (font.getFontDescriptor(BaseFont.ITALICANGLE, 0) < 0)
super.renderText(arg0);
break;
}
}
}
}
}
Вот пример файла: http://www.megafileupload.com/2pHH/pdf2.pdf Посмотрите на справочную часть, все названия журналов выделены курсивом, это то, что я хочу извлечь.
TextExtractionStrategy
, создав подклассLocationTextExtractionStrategy
, переопределив методisChunkAtWordBoundary()
. Этот метод вычисляет расстояние между двумя фрагментами текста и сравнивает его с шириной пробела встречающегося шрифта. - person Bruno Lowagie   schedule 26.05.2015