-Aspose.Cells for Java- フォント非埋込で作成したPDFを開くと文字化ける

Aspose.Cells for Javaを使用しています。
エクセルで作成した報告書雛形をテンプレートとして、Aspose.Cells for Javaでセルに値を埋め込み、PDFファイルで保存するといったことを行っています。

作成したPDFファイルのサイズを小さくしようと、フォント埋め込みを行わないようにして作成したPDFファイルを、AcrobatReaderで開いたところ、”「MS-PGothic」フォントの/Widthsが正しくありません。”というメッセージが表示され、開いたドキュメントが文字化けしていました。

解決方法等ございましたらご教示ください。

・実行環境
Windows 7 64bit
Java version 1.8.0_91
Aspose.Cells for Java version 17.9
Acrobat Reader DC 2018.009.20050
・エクセルのテンプレートファイルについて
Excel 2013で作成した.xslxファイル
フォントは「メイリオ」「MS P ゴシック」「MS ゴシック」を試しましたが、いずれも「~フォントの/Widthsが正しくありません。」と表示され文字化けします
・PDFファイルのオプション設定について
PdfSaveOptions#setEmbedStandardWindowsFonts(false)

以上、よろしくお願いいたします。

@HKishi,

詳細をお知らせいただきありがとうございます。

さて、あなたのテンプレートのExcelファイルとサンプルコードが必要です。 テンプレートExcelファイルをここに添付してください。

ちなみに、最新のバージョン/修正プログラムを試すことができますか?Aspose.Cells for Java v17.12の違いがあれば:

ご回答ありがとうございます。

1.「Aspose.Cells for Java v17.12」へのアップデートについて
アップデートいたしましたが解決しませんでした。

file.zip (39.1 KB)

2.「テンプレートのExcelファイル」について
ファイルを添付させていただきました。
file.zip>sample2.xlsx

3.サンプルコードについて
ファイルを添付させていただきました。
※実行環境とまったく同じではありませんが、概ね同様の処理を行っています。
file.zip>PdfTest.java

サンプルコードを実行した結果が、「file.zip>sample_1513755501987.pdf」となります。
サンプルコードでは文字化けが発生しませんでした。
なお、「file.zip>文字化け.pdf」が実際の実行環境で作成した文字化けが発生したPDFファイルとなります。

実際の実行環境は、WEBアプリケーションとなっており、WildFly 8.2.1.Final上で動かしています。

サンプルプログラムと実行環境の動作の違いとしては、
・PdfSaveOptions#setEmbedStandardWindowsFonts = false
サンプルプログラム:文字化けしない
実行環境(WEBアプリ):文字化けする(&ファイルサイズ小)
・PdfSaveOptions#setEmbedStandardWindowsFonts = true
サンプルプログラム:文字化けしない
実行環境(WEBアプリ):文字化けしない

フォントの埋め込みをなくし、ファイルサイズを小さくする方法は、
PdfSaveOptions#setEmbedStandardWindowsFonts = false
で正しいでしょうか?

お手数ですが、ご確認のほどよろしくお願いいたします。

@HKishi,

Excelファイル、出力PDFファイル、サンプルコードをお寄せいただきありがとうございます。

workbook.save("c:\\temp\\sample_" + String.valueOf(System.currentTimeMillis()) + ".pdf");

あなたのコード行を評価することで、フォントが埋め込まれたPDFファイル形式に常に保存されることがわかりました。
上記の問題を出力PDFファイルで見つけるには、代わりに次の行を使用する必要があります。
workbook.save("c:\\temp\\sample_" + String.valueOf(System.currentTimeMillis()) + ".pdf", options);
あなたの情報については、フォントを埋め込まずにPDFを設定すると、ASCII以外の文字(0〜255文字コード)では機能しません。 アジア系の文字の場合は、常にあなたの場合にフォントを埋め込む必要があります。

ご確認いただき、ありがとうございました。
サンプルプログラムのsave箇所のご指摘については、実装ミスでした。
修正後、動作確認にて実行環境同様に文字化けすることを確認しました。

フォント埋め込みを行うようにいたします。

ありがとうございました。

@HKishi

ご意見とAspose APIのご利用ありがとうございます。

あなたの問題は、プログラムの保存部分を修正することでソートされていることを知っておくと良いでしょう。 あなたが他の問題に遭遇した場合は、私たちに知らせてください。私たちはそれを調べて、あなたをさらに助けてくれることをうれしく思います。