- PR -

java.awt.print.PrinterJob.printDialog()で行うマージンの設定を自動で行うには?

1
投稿者投稿内容
みや
会議室デビュー日: 2005/12/20
投稿数: 5
投稿日時: 2005-12-20 18:36
java.awt.print.PrinterJob.printDialog()で出力されるポップアップメニュで
マージンの設定を行わないと決まった位置には出力されない印刷業務を抱えています。
これで、毎回毎回マージンを投入せずに、プログラムの中で値を指定してやりたいのですが、
そのようなメソッドが見付かりません。出来ないのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-20 18:56
引用:

みやさんの書き込み (2005-12-20 18:36) より:

これで、毎回毎回マージンを投入せずに、プログラムの中で値を指定してやりたいのですが、
そのようなメソッドが見付かりません。出来ないのでしょうか?


java.awt.print.Paper.setImageableArea だったかな。
java.awt.print.PageFormat クラスの setPaper メソッドで Paper を引き渡す。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みや
会議室デビュー日: 2005/12/20
投稿数: 5
投稿日時: 2005-12-20 18:58
前投稿が変更されましたので、こちらも削除します。


[ メッセージ編集済み 編集者: みや 編集日時 2005-12-20 19:14 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-20 19:10
すいません、先の投稿は誤字ってましたので削除して修正投稿しました。
なんせ 1 年以上触ってないものでして... (^^;)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みや
会議室デビュー日: 2005/12/20
投稿数: 5
投稿日時: 2005-12-20 19:12
引用:

じゃんぬねっとさんの書き込み (2005-12-20 18:56) より:
java.awt.print.PageFormat クラスの setPaper メソッドで Paper を引き渡す。



済みませんが、Paperになった後、どのようにすれば印刷出来るのでしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-20 19:45
引用:

みやさんの書き込み (2005-12-20 19:12) より:

済みませんが、Paperになった後、どのようにすれば印刷出来るのでしょうか?


java.awt.print.PrintJob.defaultPage が PageFormat に当たるはずですが...
defaultPage のインスタンスから setPaper メソッドを使って Paper って渡せませんでしたっけ?

コード:

    PrinterJob printerJob1 = PrinterJob.getPrinterJob();
    PageFormat pageFormat1 = printerJob1.defaultPage();

    Paper paper1 = pageFormat1.getPaper();
    paper1.setImageableArea([x], [y], [width], [height]);

    pageFormat1.setPaper(paper1);


こんなイメージ。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
みや
会議室デビュー日: 2005/12/20
投稿数: 5
投稿日時: 2005-12-21 10:23
どうも有り難う御座います。setPaper()が存在する理由が漸く分かりました。

PrinterJob job2 = PrinterJob.getPrinterJob();
PageFormat format = job2.pageDialog(job2.defaultPage());
Paper paper1 = format.getPaper();
paper1.setImageableArea(0,0,468,648);
format.setPaper(paper1);
job2.setPrintable(printable, format);
if(job2.printDialog()) {
job2.print();
}
のように、printDialog()を加えると、ダイアログで特別な値を打ち込まなくても、
setImageableArea(0,0, のマージン設定は反映されるのですが、printDialog()無しで
直接、job2.print()を発行すると、マージン設定が反映されません。
しかも、最初のダイアログは出てくるし、java.awt.print.*って本当に分け分からない
代物です。
1

スキルアップ/キャリアアップ(JOB@IT)