Шрифты хранятся в каталоге (я полагаю, в подкаталоге шрифта типа). Если вы откроете PDF как текстовый файл, вы сможете найти записи каталога (они начинаются и заканчиваются на «<<» и «>>» соответственно.
В простом PDF-файле я нашел следующее:
<</Type/Font/BaseFont/Helvetica-Bold/Subtype/Type1/Encoding/WinAnsiEncoding>>
, таким образом, поиск префикса должен помочь вам (в некоторых файлах PDF есть пробелы между
компоненты, но '/ Type / Font' должны быть в порядке).
Конечно, это ручной процесс, хотя вы, вероятно, предпочтете автоматический.
С другой стороны, мы иногда используем identifont или , какой шрифт , чтобы найти необычные шрифты, которые создают нам проблему (шрифт логотипа).
С уважением
Гийом
Редактировать: следующий код найдет весь шрифт на страницах. Короче говоря, вы ищете в словаре каждой страницы субдиктивный «ресурс», а затем субдиктивный «шрифт». Каждая запись в последующем является словарем шрифта, описывающим шрифт.
PdfReader reader = new PdfReader(
new FileInputStream(new File("file.pdf")));
int nbmax = reader.getNumberOfPages();
System.out.println("nb pages " + nbmax);
for (int i = 1; i <= nbmax; i++) {
System.out.println("----------------------------------------");
System.out.println("Page " + i);
PdfDictionary dico = reader.getPageN(i);
PdfDictionary ressource = dico.getAsDict(PdfName.RESOURCES);
PdfDictionary font = ressource.getAsDict(PdfName.FONT);
// we got the page fonts
Set keys = font.getKeys();
Iterator it = keys.iterator();
while (it.hasNext()) {
PdfName name = (PdfName) it.next();
PdfDictionary fontdict = font.getAsDict(name);
PdfObject typeFont = fontdict.getDirectObject(PdfName.SUBTYPE);
PdfObject baseFont = fontdict.getDirectObject(PdfName.BASEFONT);
System.out.println(baseFont.toString());
}
}
Имя (переменная «имя» в следующем коде) - это то, что используется в тексте для изменения шрифта. В PDF вы должны найти его рядом с текстом. Следующий номер - это размер. Вот, например, его размер 12. (извините, код для этой части по-прежнему отсутствует).
BT
/F13 12 Tf
288 720 Td
the text to find Tj
ET