PDF出力と直接プリンタ出力時のFONTについて

698 views
Skip to first unread message

Q ABB

unread,
Feb 7, 2017, 8:53:38 PM2/7/17
to RapidReportサポート QAフォーラム
お世話になります。

同一のRapidReportのレイアウトファイルで
同一データのレポート出力を行いました。
 1 PDF出力
 2 直接プリンタ出力
VB.Netのコーディングを行い、印刷物を確認したところ、
折り返し出力にしてあるフィールド(1行全角55文字が入るように広げたエリア(モックで確認))で
以下の出力差異が出ました。

 1 PDF出力では、
   1行に全角55文字が出力され、56以降は2行目へ出力
 2 直接プリンタ出力では、
   1行に全角54文字が出力され、55以降は2行目へ出力

ちなみに、コーディングは以下の通りです。
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
            'レポート設定
            Dim report As New Report(Json.Read(rptFileName))
            report.Fill(New ReportDataSource(objMainTbl), dataProvider)
 
            'ページ設定
            Dim pages As ReportPages = report.GetPages()
 
            'PDF出力コーディング ▼▼▼
            ' PDF出力
            Using fs As New FileStream("bbb.pdf", IO.FileMode.Create)
                Dim setting As PdfRendererSetting = New PdfRendererSetting()
                Dim sWinDir As String = System.Environment.GetEnvironmentVariable("windir")
                setting.FontMap("gothic") = iTextSharp.text.pdf.BaseFont.CreateFont(sWinDir & "\Fonts\msgothic.ttc,0", _
                                                                                    iTextSharp.text.pdf.BaseFont.IDENTITY_H, _
                                                                                    iTextSharp.text.pdf.BaseFont.EMBEDDED)
                setting.FontMap("mincho") = iTextSharp.text.pdf.BaseFont.CreateFont(sWinDir & "\Fonts\msmincho.ttc,0", _
                                                                                    iTextSharp.text.pdf.BaseFont.IDENTITY_H, _
                                                                                    iTextSharp.text.pdf.BaseFont.EMBEDDED)
                Dim renderer As New PdfRenderer(fs, setting)
                'バックスラッシュ文字を円マーク文字に変換します
                renderer.Setting.ReplaceBackslashToYen = True
                pages.Render(renderer)
            End Using
            'PDF出力コーディング ▲▲▲

            '直接印刷コーディング ▼▼▼
            '出力プリンタ設定
            pages.Report.Design.PrinterName = strPrinter
 
            Dim setting As New GdiRendererSetting
            setting.FontMap.Remove("gothic")
            setting.FontMap.Remove("mincho")
            setting.FontMap.Add("gothic", "MS ゴシック")
            setting.FontMap.Add("mincho", "MS 明朝")
            'プリント設定
            Dim printer1 As New Printer(pages, setting)
 
            'レポートページの出力
            printer1.PrintDocument.Print()
            ''直接印刷コーディング ▲▲▲
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

FONTが影響していると考えて、上記のコーディングを行っていますが、
どうしても、全く同じ出力物になりません。何か誤りがありますでしょうか?
Message has been deleted

RapidReport

unread,
Feb 7, 2017, 11:33:55 PM2/7/17
to RapidReportサポート QAフォーラム
伊藤です。

直接印刷とデザインの内容は一致するはずです。
掲載していただいたソースコードにも問題は無いと思います。
FontMapには、もともとMSゴシック/明朝が設定されているので、改めて設定しても効果はないはずです。

たとえば、以下のように書き換えてプレビュー画面を表示した場合はどうなるでしょうか?

 Dim preview As New FmPrintPreview(printer)
 preview.ShowDialog()

Q ABB

unread,
Feb 8, 2017, 12:14:39 AM2/8/17
to RapidReportサポート QAフォーラム
お世話になります。

伊藤さま、ご回答ありがとうございました。

「PDF出力と、直接プリンタ出力の結果が、まったく一緒にはならない。」
と言う回答内容、了解しました。

<ちなみに>
当方の処理は、以下のオペレーションで帳票を出力することを想定しています。
1.ASP.Netで、Webブラウザより、各担当者がRapidReportを確認出力(PDF出力)。
2.確認OKの場合に、サーバーDBにデータ転送。
3.サーバーの監視PG(VB.Net)で、自動でRapidReportを直接プリンタ出力(対象部署のプリンタに出力)。
4.担当部署の該当担当者が確認。
上記の運用上、「各担当確認者と部署担当者が、まったく一緒の印刷物を見るようにしたい!」
と言うのが、クライアントの要望でした。
(サーバー上でのプレビューは想定していません。申し訳ございません。)

時間があれば、
 Dim preview As New FmPrintPreview(printer)
 preview.ShowDialog()
を試して見ようと思います。

色々有難うございました。

Auto Generated Inline Image 1
Reply all
Reply to author
Forward
0 new messages