作成日: 2025/10/21 最終更新日: 2025/10/21
文書種別
不具合
状況
回避方法あり
詳細
FlexReport デザイナで、各種フォントを指定したSuperLabelフィールドを追加してレポート定義ファイルを作成します。次いで、WinForms アプリケーションでこのレポート定義ファイルを読み込み、C1PdfFilter クラスを用いてPDF出力すると、フォントが反映されない場合があります。
各SuperLabeフィールドに以下のフォントを設定してレポートを保存し、C1FlexReportのRenderToFilterメソッドで引数にC1PdfFilter クラスを指定してPDF出力すると、以下のようなフォントで出力されます。この場合、MSゴシックのみフォントが正しく反映されます。
| レポートでの設定 | PDFでの表示 |
|---|---|
| 游ゴシック | Microsoft YaHei |
| UDデジタル教科書体NP | Microsoft YaHei |
| UDデジタル教科書体NK | Microsoft YaHei |
| MS明朝 | MSゴシック |
| MSゴシック | MSゴシック |
回避方法
以下の3通りの方法が考えられます。
(1)SuperLabel フィールドの代わりにField を使用
a. C1PdfFilterの代わりに PDFFilter クラス を使用して出力します。
b. 後述の "Microsoft Print to PDF" のプリンタを指定して印刷します。
(2)FlexViewer の 印刷機能を使用
ビューワのメニュー > 印刷で、"Microsoft Print to PDF" のプリンタを指定して印刷します。
(3)"Microsoft Print to PDF"を指定して Print メソッドで印刷
下記コードを使用し、"Microsoft Print to PDF"を指定してPrintメソッドで印刷します。
◎サンプルコード(VB)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles ToolStripButton3.Click
Dim filename As String = "c1FlexReport.pdf"
Dim settings As New System.Drawing.Printing.PrinterSettings() With {
.PrinterName = "Microsoft Print to PDF",
.PrintToFile = True,
.PrintFileName = filename
}
Dim printOptions As New C1.Win.C1Document.C1PrintOptions() With {
.PrinterSettings = settings,
.OmitPrintDialog = True
}
C1FlexReport1.Print(printOptions)
End Sub◎サンプルコード(C#)
private void button1_Click(object sender, EventArgs e)
{
string filename = "c1FlexReport_MSPrintToPDF.pdf";
var settings = new PrinterSettings
{
PrinterName = "Microsoft Print to PDF",
PrintToFile = true,
PrintFileName = filename
};
var printOptions = new C1PrintOptions
{
PrinterSettings = settings,
OmitPrintDialog = true
};
c1FlexReport1.Print(printOptions);
}