#embedded-fonts #pdfbox
#встроенные шрифты #pdfbox
Вопрос:
Мой код:
FileInputStream pdfFile = new FileInputStream("C:/work/pdf2tiff/test.PDF");
PDDocument pdDocument = PDDocument.load(pdfFile, true);
PDDocumentCatalog catalog = pdDocument.getDocumentCatalog();
List pages = catalog.getAllPages();
if (pages != null amp;amp; pages.size() > 0) {
for (int i = 0; i < pages.size(); i ) {
PDPage page = (PDPage) pages.get(i);
Map fonts = page.getResources().getFonts();
System.out.println("fonts=" fonts);
Я получил вывод:
шрифты ={F0=org.apache.pdfbox.pdmodel.font.PDType1Font@8aaed5,
F4=org.apache.pdfbox.pdmodel.font.PDType0Font@dc4414, F2=org.apache.pdfbox.pdmodel.font.PDType0Font@f98ce0, F6=org.apache.pdfbox.pdmodel.font.PDTrueTypeFont@18fcdce}
Почему ключ карты шрифтов — F0 / F1 / F2 / F6? Что это значит? Должен ли я повторить все страницы pdf, чтобы получить все шрифты?
Спасибо за ваш ответ.
Ответ №1:
Похоже, что в загруженный вами PDF-файл загружено несколько шрифтов. Я не смог придумать никакого способа извлечения шрифтов из документа (который, я думаю, должен быть доступен для нас, поскольку мы загружаем шрифты в определенный документ).
Я предполагаю, что когда вы загружаете шрифт в документ, он использует «F0», «F1» и т.д. В качестве ключей Для сопоставления с типом PDFont. Когда вы печатаете объект fonts, он печатает ячейку памяти объекта.
Чтобы получить все встроенные шрифты, вы можете создать новый объект HashMap(), затем выполнить итерацию по всем страницам и добавить каждый шрифт в вашу HashMap(). Затем вы можете выполнить итерацию по ключам, получить объект PDFont font и использовать font.getSubType(), чтобы получить какое-то описание шрифта.
Надеюсь, это поможет. Удачи!