4.1.2 フォントの埋め込み

4-第2項フォントの埋め込み

狙い・効果

対象PDFにおいて、埋め込まれていないフォントを埋め込み状態にします。

処理の概要

入力PDFに埋め込まれていないフォントがあった場合に、出力PDFでは自動的に埋め込みフォントになります。埋め込みに使われるフォントが動作環境にインストールされていないと埋め込み対象であっても埋め込みされないので注意してください。PDFに埋め込みフォントを用いることで、文字のグリフで文字を表示できるビューワを用いていれば文字化けが発生しなくなります。

PDF Tool APIの主な機能

PtlPDFDocument.APIembedFonts(): フォント埋め込み

プログラム例

package cookbook;

import jp.co.antenna.ptl.*;

public class SetEmbedFonts {

    // そのクラスのusageを表示する関数
    private static void printUsage() {
        System.out.println("usage: java SetEmbedFonts in-pdf-file out-pdf-file");
    }
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        if (args.length < 2) {
            printUsage();
            return;
        }

        try (PtlParamInput inputFile = new PtlParamInput(args[0]);
             PtlParamOutput outputFile = new PtlParamOutput(args[1]);
             PtlPDFDocument doc = new PtlPDFDocument()) {
            // PDFファイルをロードします。
            doc.load(inputFile);

            // フォント埋め込みを設定する
            doc.embedFonts();
            // ファイルに保存します。
            doc.save(outputFile);
        }
        catch (PtlException pex) {
            System.out.println("PtlException : ErrorCode = " + pex.getErrorCode() +
                               "\n  " + pex.getErrorMessage());
        }
        catch (Exception ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        catch (Error ex) {
            System.out.println(ex.getMessage());
            ex.printStackTrace();
        }
        finally {
            System.out.println("-- 完了 --");
        }
    }
}

プログラムファイル名

SetEmbedFonts.java

入出力操作の例

C:\samples>java cookbook.SetEmbedFonts 
usage: java SetEmbedFonts in-pdf-file out-pdf-file

C:\samples>java cookbook.SetEmbedFonts emptyFontResource.pdf SetEmbedFonts.pdf 
-- 完了 --