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