初めて投稿致します。秋本と申します。
WinForm から CrystalReports2008 で作成したレポートを印刷する際に
余白(PageMargins)に設定した値が正しく適用されないという現象が発生しており、対応策をご教示ください。
【開発環境】
Microsoft Windows XP ver 2002 Service Pack 3
Microsoft VisualStudio 2008 ver 9.0.30729.1 SP (C#を使用)
Microsoft .NET Framework ver 3.5 SP1
Crystal Reports 2008 Developer ver 12.2.7.598
検証用のPCにOSをインストールし、VisualStudio 2008 をインストール後
Microsoft Update にて 2010-05-18 時点でリリースされている全ての更新プログラムをインストール
その後で Crystal Reports 2008 をインストールし、Crystal Reports 2008 の Service Pack 1、Service Pack 2、
Fix Pack 2.7 を順にインストールしました。
プリンタは以下の3台
Epson LP-8900 (ドライバは 3.16.4fm)
http://www.epson.jp/dl_soft/readme/6653.htm
XEROX DocuCenter Color f250 (ドライバは 2.6.3)
http://www.fujixerox.co.jp/download/dcc/download/f450series/artex_2k/
XEROX DocuPrint210 (ドライバは 3.8.6)
http://www.fujixerox.co.jp/download/docuprint/download/210series/prt_2k/
【実行環境】
同上
【再現手順】
VisualStudio 2008 で新規に WIndowsフォームアプリケーションを作成
フォームに CrystalReportsViewer と ボタンを設置
新しい項目として Crystal レポート を追加
CrystalReportsギャラリから、空のレポートを選択
詳細以外のセクションを非表示に設定
詳細セクションのセクションエキスパートで背景色に銀色を設定
詳細セクションの Height を 16771 に設定
デザイン>ページ設定のページオプションで
「書式設定ページサイズと用紙サイズを個別に設定する」のチェックを外し
用紙サイズを「A4 210 x 297 mm」に設定
余白は上下左右すべて 0 に設定
詳細セクションの左上、右上、左下、右下に何か適当に文字の入ったテキストオブジェクトを配置
ボタンの押下イベントに以下を記述
private void button1_Click(object sender, EventArgs e)
{
CrystalReport1 report = (CrystalReport1)crystalReportViewer1.ReportSource;
CrystalDecisions.Shared.PageMargins margins = new CrystalDecisions.Shared.PageMargins();
margins.topMargin = 0;
margins.bottomMargin = 0;
margins.leftMargin = 0;
margins.rightMargin = 0;
report.PrintOptions.ApplyPageMargins(margins);
crystalReportViewer1.RefreshReport();
report.PrintToPrinter(0, false, 1, 1);
}
上記イベント内に任意の余白を設定して、WinForm を実行後にボタン押下
【発生する現象】
u2026要はA4用紙全体を塗りつぶすだけのレポートに、上記イベント内で PageMargins を設定して
プリンタへ出力するわけですが
CrystalReportViewer 上では設定した余白(PageMargins)が忠実に反映されるのですが、実際にプリンタから
出力されたものを確認すると
leftMargin だけ設定した場合 > 左に余白ができず、上と右に余白ができる
topMargin だけ設定した場合 > 上に余白ができず、左と下に余白ができる
という具合に余白(PageMargins)で設定した値とは違う印刷結果になってしまいます。
Re: HELP - setting page margins doesn`t work correctly
上記スレッドの内容からすると SP3 がリリースされるまで待つしかないのでしょうか?