Я печатаю бумагу формата Legal, когда я печатаю ее без открытого диалогового окна свойств, она печатается правильно, но когда я нажимаю кнопку «Свойства» для подтверждения типа страницы (независимо от того, нажимаю ли я «ОК» или «Отмена»«Затем Paper imageableArea изменяется, в то время как job.print (attributeSet) Диалог с кнопкой свойств
Ожидаемая высота / ширина: 612/1008
Фактическая высота / ширина: 612/ 792 (настройка в WPrinterJob.validatePaper ())
Печать страницы с выпуском
Вот мой код,
private void preparePageFormat(PageFormat pf)
{
Paper ppr = new Paper();
pf.setOrientation(PageFormat.LANDSCAPE);
MediaSizeName msn = MediaSizeName.NA_LEGAL;
MediaSize msz = MediaSize.getMediaSizeForName(msn);
double inch = 72.0;
width = msz.getX(MediaSize.INCH) * inch;
height = msz.getY(MediaSize.INCH) * inch;
ppr.setSize(a4Width, a4Height);
ppr.setImageableArea(0, 0, a4Width, a4Height);
pf.setPaper(ppr);
}
main()
{
PrinterJob job = PrinterJob.getPrinterJob();
PageFormat pageFormat = job.defaultPage();
preparePageFormat(pageFormat);
job.setPrintable(previewPanel.getPrintable(), pageFormat);
PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
attributeSet.add(OrientationRequested.LANDSCAPE);
attributeSet.add(MediaSizeName.NA_LEGAL);
if (job.printDialog(attributeSet))
{
attributeSet.add(new MediaPrintableArea((float)pageFormat.getImageableX(),(float)pageFormat.getImageableY(),
(float)pageFormat.getImageableWidth(),(float)pageFormat.getImageableHeight(),MediaPrintableArea.INCH));
job.print(attributeSet);
}
}