C#のスクラッチアプリケーションで、エクセルファイルの帳票をPDFに変換するという機能を実装しています。
行っているのは、microsoft.office.interop.excelを使用してエクセル帳票ファイルをオープンし、
それをExportAsFixedFormatでPDFとして出力する、というものです。
この機能で、通常では問題ないのですが、外字を使って入力されている帳票のPDF変換で
変換結果が外字の部分が文字化けする、という問題が発生しました。
読み込んでいるエクセル帳票ファイルをエクセル自体で開き、外字が正しく表示されていることを
確認し、そのままPDFとしてエクスポートする、あるいはPDFとして保存する、という手順を踏んだ
場合はPDFファイルに正しく表示されます。
同じ環境で上記のスクラッチアプリケーションをどうさせると、変換結果のPDFファイル上で
該当の外字の文字が文字化けてしまいます。
外字の設定回りでレジストリやC:\Windows\fontsフォルダ内のファイルにアクセスできるか、などの
調査をしましたが、エクセル自体で表示、出力できているので問題ないのでは、と判断しています。
このような問題を解決された方はおられませんでしょうか?
あるいは、何か対策するヒントなどございませんでしょうか。
開発環境は
Visual Studio 2017
.net framework 4.7
Office 2016
になります。
以下に、コードの抜粋を添付します。
Openメソッドでエクセルファイルを開き、SaveAsPDFでPDFとして出力する、というもので、
今回実現したい機能ではほぼこれらのコード部分しか利用していません。
C#
1 public class ExcelManager : IDisposable 2 { 3 private Application app = null; 4 private Workbook book = null; 5 private bool isDisposed = false; 6 7 /// <summary> 8 /// Excelワークブックを開く 9 /// </summary> 10 public void Open(string path) 11 { 12 // Excelアプリケーション生成 13 app = new Application() 14 { 15 // 非表示 16 Visible = false, 17 }; 18 19 app.DisplayAlerts = false; 20 21 // Bookを開く 22 book = app.Workbooks.Open(@path); 23 } 24 25 /// <summary> 26 /// Excelワークブックをファイル名を指定してPDF形式で保存する 27 /// </summary> 28 /// <returns>true:正常終了、false:保存失敗</returns> 29 public bool SaveAsPDF(string pdfPath) 30 { 31 try 32 { 33 // 全シートを選択する 34 book.Worksheets.Select(); 35 36 // ファイル名を指定してPDF形式で保存する 37 // ExportAsFixedFormatメソッド: ブックを PDF または XPS 形式に発行する 38 // Type : タイプ : XlFixedFormatType xlTypePDF=PDF, xlTypeXPS=XPS 39 // Filename: 出力ファイル名 40 // Quality : 出力品質: XlFixedFormatQuality xlQualityStandard=標準品質, xlqualityminimum=最小限の品質 41 book.ExportAsFixedFormat( 42 Type: XlFixedFormatType.xlTypePDF, 43 Filename: @pdfPath, 44 Quality: XlFixedFormatQuality.xlQualityStandard); 45 } 46 catch 47 { 48 return false; 49 } 50 51 return true; 52 } 53 }
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー