2011-11-07 25 views
2

私はプリンタに直接レポートを生成していますが、いくつかの問題が発生しています。画面にレンダリングして結果のPDFを印刷すると、うまく印刷されます。しかし、私が直接印刷すると、奇妙なマージン問題が発生します。ターゲットは、4 "x3"ラベルのシマウマです。JasperReportsで印刷マージンを変更するには?

私は用紙サイズを設定した場合はそうのように:

MediaSizeName mediaSizeName=MediaSize.findMedia(4, 3, MediaPrintableArea.INCH); 
printRequestAttributeSet.add(mediaSizeName); 

結果は上マージンに対してラベルアップし、半インチ左マージン(何もないはずです)で、右マージンを約0.25であります"ラベルの一部が切り取られ、ボトムマラーリングが1.5インチになり、多くのラベルが切り取られます。

用紙サイズを設定しないと、上下の余白は完全です(つまり、ラベルの端には何もないことを意味します)が、まだ大きな下端になります(切り詰めた状態で)、右余白が大きくなります(印刷された情報に関しては同じ点で切り取られます)。

私はここで何が欠けていますか?

答えて

1

うわ、それはシステム上のプリンタ環境設定オプションであることが判明し、このすべての後に。画面からのPDF印刷がなぜ機能するのか説明できません。私は、プリンタの設定で、4 "x3"サイズのカスタムラベルストックを設定しようとしましたが、それは私のJavaアプリケーションには役に立たなかったので、間違ってコーディングしていたと思いました。そうではありません。明らかに、カスタムラベル在庫は正しく機能しません。私は高度なオプションに掘り下げてそこにサイズを設定することができました...

4

JasperDesignクラスのsetBottomMargin, setTopMargin, setRightMargin, setLeftMarginメソッド、またはJasperPrintクラスの同じメソッドを使用できます。

サンプルhereが表示されます。

たとえば、iReportのヘルプを使用して、レポートのテンプレートに余白を設定することもできます。
レポートテンプレートの抜粋:

<jasperReport ... language="groovy" pageWidth="595" pageHeight="842" columnWidth="593" leftMargin="1" rightMargin="1" topMargin="1" bottomMargin="1"> 

あなたはまた、MediaPrintableArea class constructorを見て、このpostを読むことができます。 UPDATED

this discussionからマージンを除去するための方法を

別ソリューション:

PageFormat pf = PrinterJob.getPrinterJob().defaultPage(); 
    Paper paper = new Paper(); 
    paper.setImageableArea(0, 0, paper.getWidth(), paper.getHeight()); // no margin = no scaling 
    pf.setPaper(paper); 
+0

Hmmm、残念ながら、そこには正しくセットされています(私は信じています)。 pageWidth = 288。インチ当たり72。左端7桁、右端7桁、最大幅は274ワイド、総計は288です。:-( –

+0

@BrianKnoblauch生成されたPDFファイルを印刷するとすべてが正常ですか? –

+0

生成されたPDF(exportToPdfStream経由)はきれいに出力され、何もクリップされません。 –

関連する問題