Как получить PDF встроенные шрифты с использованием PDFBOX0.8.0 - PullRequest
3 голосов
/ 11 ноября 2011

Мой код:

        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 && 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);

Я получил вывод:

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.PDTrueTypce*

Почему ключ карты шрифтов - F0 / F1 / F2 / F6?Что это значит?Стоит ли перебирать все страницы PDF, чтобы получить все шрифты?

Спасибо за ваш ответ.

1 Ответ

0 голосов
/ 19 августа 2015

Похоже, что в загруженный PDF-файл загружено несколько шрифтов.Я не мог найти какой-либо способ извлечь шрифты из документа (который, я думаю, должен быть доступен для извлечения, поскольку мы загружаем шрифты в конкретный документ).

Я предполагаю, что когда вы загружаете шрифт в документ, он использует "F0", "F1" и т. Д. В качестве ключей для сопоставления с типом PDFont.Когда вы печатаете объект шрифтов, он печатает расположение объекта в памяти.

Чтобы получить все встроенные шрифты, вы можете создать новый объект HashMap (), затем выполнить итерацию по всем страницам и добавить каждый шрифт в ваш HashMap ().Затем вы можете перебирать ключи, получать объект шрифта PDFont и, используя font.getSubType (), получить какое-то описание шрифта.

Надеюсь, это поможет.Удачи!

...