как получить PageFormat из Java.awt.print.PrinterJob - PullRequest
0 голосов
/ 26 апреля 2009

Я пытаюсь использовать информацию PageFormat для изменения распечатки на основе javax.swing до ее печати. Я озадачен тем, как я могу получить PageFormat из PrintJob (который получается с помощью getPrinterJob () и printDialog ()). Я знаю, что есть метод getPageFormat, но я не могу понять, как получить PrintRequestAttributeSet (который не является printJob.getPrintService (). GetPrintAttributes ()). Честно говоря, все, что я действительно хочу знать, это ширина и высота страницы. Любые идеи о том, как я могу это сделать? Спасибо.

Ответы [ 2 ]

2 голосов
/ 01 декабря 2010

Подход к запуску «поддельного» задания на печать НЕ работает, по крайней мере, в долгосрочной перспективе. Я попробовал это. Сначала это работало отлично ... потом некоторые клиенты стали сообщать о странном поведении.

Оказывается, с некоторыми принтерами и некоторыми конфигурациями, даже "поддельные" задания вызывают активность на принтере. Страницы документа не распечатываются, но активность очереди, страницы заголовков заданий, а иногда и вывод мусора (насколько я помню). Ложных записей в очереди было достаточно, чтобы в некоторых случаях мешать нормальной печати и вводить пользователя в заблуждение.

Да, заблаговременно заблаговременно получить формат страницы.

0 голосов
/ 27 апреля 2009

Если вам просто нужны ширина и высота страницы, я думаю 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 */
    }
}

Не очень, по общему признанию.

...