1

Visual Studio 2010 Enterprise を使用しています。

これは、他のすべてのものに対して完全に機能する私のコードですが、実行時にマージンを変更しません。objRpt.PrintOptions.PageMargins.leftMargin、などの値を変更しても出力にもrightmargin反映されません。CrystalReportViewerHardcopy

コードは次のとおりです。

CrystalReport1 objRpt;
objRpt = new CrystalReport1();
adepter.Fill(Ds, "Customer");
objRpt.SetDataSource(Ds);
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); //Here it shows 1440 

objRpt.PrintOptions.PrinterName = "HP LaserJet 1020";
PageMargins margins = objRpt.PrintOptions.PageMargins;

margins.bottomMargin = 350;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 350;
objRpt.PrintOptions.ApplyPageMargins(margins);
MessageBox.Show("Left margin:"+objRpt.PrintOptions.PageMargins.leftMargin.ToString()); 

//Here it shows 350 BUT no use.

[レポート] > [デザイン] > [ページ設定] を右クリックして、デザイン時に余白を設定することができました。ここに設定すると、余白が完全に機能し、レポートビューアとハードコピーの両方に反映されます。しかし、上記のコードを使用すると、これは起こりません。

4

1 に答える 1

1

少し掘り下げてみると、Crystal Reports Viewerを使用すると(少なくともWindowsフォームのCrystal Reports Viewerで、上部の[印刷]ボタンをクリックすると、Crystal Reportsのマージン設定がデフォルトのプリンター設定で上書きされるように見えます)。レポートビューア)。これに対する考えられる回避策は、独自の印刷ボタンを使用して、独自のマージン設定を尊重するPrintToPrinterを呼び出すことです。その他の回避策は次のとおりです。-マージンを模倣するために必要な空白を使用してレポートを編集する-印刷呼び出しをインターセプトしてマージンを調整する(頭のてっぺんから関数呼び出しの名前を思い出せない)-デフォルトを設定する「プリンタなし」へのレポート用のプリンタ。レポートビューアからプリンタを選択すると、デフォルトのプリンタ設定が適用されます。

IDカードを印刷するアプリケーションで作業しているときに、この問題が発生しました。PrintToPrinter()を呼び出しても、カードに余白が必要になることはありません。レポートビューアで実行し、印刷ボタンをクリックすると、プリンタのデフォルト設定(0.17インチ程度のマージン)が強制的に使用されます。その結果、カードが正しく印刷されませんでした。

于 2012-04-26T20:02:46.850 に答える