0

PageFormat 情報を使用して、印刷する前に javax.swing ベースの印刷出力を変更しようとしています。PrintJob (getPrinterJob() と printDialog() を使用して取得されます) から PageFormat を取得する方法について困惑しています。getPageFormat メソッドがあることは知っていますが、PrintRequestAttributeSet (printJob.getPrintService().getPrintAttributes() ではない) を取得する方法がわかりません。正直なところ、私が知りたいのはページの幅と高さだけです。どうすればそれができるかについてのアイデアはありますか? ありがとう。

4

2 に答える 2

2

「偽の」印刷ジョブを実行するアプローチは、少なくとも長期的には機能しません。私はそれを試してみました。最初はうまくいきました...その後、一部の顧客は奇妙な行動を報告し始めました。

一部のプリンタと一部の構成では、「偽の」ジョブでさえプリンタでアクティビティが発生することが判明しました。ドキュメントページは印刷されませんが、キューアクティビティ、ジョブヘッダーページ、および場合によっては少しのガベージ出力(私が覚えているように)。偽のキューエントリは、通常の印刷を妨害し、場合によってはユーザーを混乱させるのに十分でした。

はい、PageFormatを事前に取得するのは面倒でした。

于 2010-12-01T20:14:53.190 に答える
0

ページの幅と高さだけが必要な場合は、 PageFormat.getImageableWidth() と PageFormat.getImageableHeight() が探しているものだと思います。

申し訳ありませんが、それはあなたが望んでいたものではありません。ハックのためにこれはどうですか:

printable.setFakeJob(true);
job.print();
printable.setFakeJob(false);
job.print();

そしてあなたの印刷物で、

public int print(Graphics graphics, PageFormat pf, int pageIndex) {
    if (isFakeJob()) {
        /* use passed-in PageFormat to set up whatever you need to set up */
        return NO_SUCH_PAGE;
    } else {
        /* do your actual printing */
    }
}

確かに、きれいではありません。

于 2009-04-26T21:50:15.433 に答える