[Aspose.Cells for .NET]外字を文字化けしないようにする方法

Excel⇒PDF時に外字が文字化けします。
C#に外字フォントを読みこんで、文字化けせずにPDFに出力できますでしょうか。

前提としてWebServerがクラウド「Paas」のため、
Webサーバの[Fonts]フォルダに
外字ファイル[EUDC.EUF][EUDC.TTE]配置できない状況です。

C#に外字ファイルを埋め込んで、
フォントに外字を紐づけて
PDF出力前に外字を出力することはできますでしょうか。
サンプルコードを連携していただけますでしょうか。

@MOBILOTS,

入力Excelファイルと出力PDF(Aspose.Cellsによる)を圧縮して、圧縮されたアーカイブを添付していただけませんか。すぐに確認します。

Aspose.Cellsには​​、レンダリングタスク用のワークブックで使用される基になるフォントが必要であることに注意してください(ExcelからPDF、シートから画像機能など)。したがって、関連するフォントフォルダには基になるフォントが必要です。また、フォントフォルダはAPIによってシームレスにアクセスされる必要があります(権利の問題はないはずです)。プログラム/アプリケーションの開始時にコードにフォントフォルダパスを追加できます。詳細については、そのドキュメントを参照してください。

Unicode(基本多言語面)-私用領域
U+E000
周辺の外字をExcelで入力してPDF出力しています。

入力Excelファイルと出力PDF(Aspose.Cellsによる)を添付します。
Downloads.zip (12.3 KB)

@MOBILOTS,
分析のためにフォントファイルとスクリーンショットも共有していただけませんか。

外字ファイルは、顧客情報にあたりますので共有は控えさせていただきたいです。

サンプルは以下のUnicodeで設定しています。
E000、E002、E003
E010、E011、E012、E013

@MOBILOTS,

問題を正確に評価するには、スクリーンショット、フォントファイル、サンプルコードが必要です。私はあなたのファイルをMsExcelで開き、この表示(添付)を取得したので、問題を評価できません。
sc_shot1.png (28.8 KB)

外字エディタ.zip (52.6 KB)

サンプルの外字ファイルとキャプチャをZipにて添付します。

@MOBILOTS,

ファイルありがとうございます。

MSExcelで外部文字ファイル[EUDC.EUF] [EUDC.TTE]を設定または表示する方法を教えてください。そうすると、これらのキャラクターはスクリーンショットのようになります。

Client端末でコマンドプロンプトを管理者で開いて
C:\Windows\Fonts
にコピーしてください。
クライアント端末ではこれで文字化けせずに表示できます。

WebServerでは、クラウドのためフォルダにファイルを配置できない制約がありますので
外字ファイルをC#に埋め込んで、呼び出す実装が必要になります。
↑この方法を問合せ中です。

@MOBILOTS,
私たちはこれをチェックしており、すぐにフィードバックを共有します。

調査ありがとうございます。こちらの状況いかがでしょうか?

@MOBILOTS,
私たちはそれを整理しようとしましたが、まだ成功しませんでした。 さらに詳細な調査のために、この問題をデータベースに記録しています。 更新を共有する準備ができたら、ここで通知されます。

この問題は次のように記録されます。
CELLSNET-47673 - Prevent external characters from being garbled while converting Excel to PDF

@MOBILOTS,
FontConfigsのAPIは、外部フォントソースの構成をサポートしています。 例えば 外部フォントフォルダ(FolderFontSource)、フォントファイル(FileFontSource)、フォントファイルバイトデータ(MemoryFontSource)を設定します。
フォントファイルのバイトデータを使用した例を次に示します。 外部フォントを設定すると、出力はOKになります。

//フォントバイトデータを使用します。最初に埋め込みファイルデータを取得する必要があります。
FontConfigs.SetFontSources(new FontSourceBase[] { new MemoryFontSource(your embbed "EUDC.TTE" byte data)) });

Workbook wb = new Workbook("a_excel.xlsx");
wb.Save("output.pdf");

フィードバックをお寄せください。

連携ありがとうございます。
現在、上記方法で確認しております。

@MOBILOTS,

ご確認いただきありがとうございます。どういたしまして。

ありがとうございます。
上記方法で問題なく外字が表示できることを確認できました。

@MOBILOTS,
どういたしまして。提案されたコードセグメントによって問題が解決されることを知っておくとよいでしょう。ご不明な点や問題がございましたら、お気軽にご返信ください。