3

私のコード:

        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.PDTrueTypeFont@18fcdce}

なぜフォント マップのキーは F0/F1/F2/F6 なのですか? これらはどういう意味ですか?すべてのPDFページを反復してすべてのフォントを取得する必要がありますか?

ご回答有難うございます。

4

1 に答える 1

0

読み込んだPDFには複数のフォントが読み込まれているようです。ドキュメントからフォントを取得する方法がわかりませんでした (特定のドキュメントにフォントを読み込むので、取得できるはずです)。

フォントをドキュメントにロードすると、「F0」、「F1」などをキーとして使用してPDFontタイプにマップされると思います。フォントオブジェクトを印刷すると、オブジェクトのメモリ位置が印刷されます。

すべての埋め込みフォントを取得するには、新しい HashMap() オブジェクトを作成し、すべてのページを繰り返し処理して、各フォントを HashMap() に追加します。次に、キーを繰り返し処理し、PDFont フォント オブジェクトを取得し、font.getSubType() を使用してフォントの説明を取得します。

お役に立てれば。幸運を!

于 2015-08-19T16:07:23.270 に答える