извлечение курсивного слова из PDF с помощью iText

Я пытаюсь извлечь некоторый контент из 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 Посмотрите на справочную часть, все названия журналов выделены курсивом, это то, что я хочу извлечь.


person 1a1a11a    schedule 26.05.2015    source источник
comment
Я также нашел эту страницу, но она также недостаточно полезна. itextpdf.com/sandbox/parse/ParseCustom   -  person 1a1a11a    schedule 26.05.2015
comment
Я также пробовал getTextRenderMode, все значения равны 0.   -  person 1a1a11a    schedule 26.05.2015
comment
Кроме того, font.getFontDescriptor(BaseFont.ITALICANGLE, 0) результаты также все 0.0   -  person 1a1a11a    schedule 26.05.2015
comment
Спасибо, Бруно! Я нашел это в вашей книге, но, прочитав страницу с некоторыми комментариями, теперь я полностью это понимаю. @БруноЛоваги   -  person 1a1a11a    schedule 26.05.2015
comment
Кстати, у меня вопрос по извлечению текста, я сравнивал PDFBox и iText, и обнаружил, что iText намного быстрее, чем PDFBox, но иногда в результате iText отсутствует пробел между словами, что редко бывает в PDFBox, есть ли любой параметр, который я могу настроить, чтобы изменить ситуацию? @БруноЛоваги   -  person 1a1a11a    schedule 26.05.2015
comment
Вы можете создать свой собственный TextExtractionStrategy, создав подкласс LocationTextExtractionStrategy, переопределив метод isChunkAtWordBoundary(). Этот метод вычисляет расстояние между двумя фрагментами текста и сравнивает его с шириной пробела встречающегося шрифта.   -  person Bruno Lowagie    schedule 26.05.2015