java PrintJob.defaultPage()返回什么?

eoigrqb6  于 2023-05-12  发布在  Java
关注(0)|答案(1)|浏览(103)

文档说它创建了一个新的pageFormat示例,并将其设置为默认大小和方向。这里的默认值是什么?是打印机专用页吗?

wvt8vs2t

wvt8vs2t1#

正如Mark所说,默认的页面格式是从PrinterJob的PrintService获取的。
内部sun.print.RasterPrinterJob类具有以下内容:

public PageFormat defaultPage(PageFormat page) {
    PageFormat newPage = (PageFormat) page.clone();

    Paper newPaper = new Paper();

    double ptsPerInch = 72.0;
    double w, h;

    Media media = null;

    PrintService service = getPrintService();
    if (service != null) {
        MediaSize size;

        media = (Media)service.getDefaultAttributeValue(Media.class);
        if (media instanceof MediaSizeName &&
           ((size = MediaSize.getMediaSizeForName((MediaSizeName) media)) != null)) {

            w =  size.getX(MediaSize.INCH) * ptsPerInch;
            h =  size.getY(MediaSize.INCH) * ptsPerInch;
            newPaper.setSize(w, h);
            newPaper.setImageableArea(ptsPerInch, ptsPerInch,
                                      w - 2.0*ptsPerInch,
                                      h - 2.0*ptsPerInch);
            newPage.setPaper(newPaper);
            return newPage;
        }
    }

如果未定义打印服务,则该方法福尔斯到猜测:

/* Default to A4 paper outside North America. */
String defaultCountry = Locale.getDefault().getCountry();
if (!Locale.getDefault().equals(Locale.ENGLISH) && // ie "C"
    defaultCountry != null &&
    !defaultCountry.equals(Locale.US.getCountry()) &&
    !defaultCountry.equals(Locale.CANADA.getCountry())) {

    double mmPerInch = 25.4;
    w = Math.rint((210.0*ptsPerInch)/mmPerInch);
    h = Math.rint((297.0*ptsPerInch)/mmPerInch);
    newPaper.setSize(w, h);
    newPaper.setImageableArea(ptsPerInch, ptsPerInch,
                              w - 2.0*ptsPerInch,
                              h - 2.0*ptsPerInch);
}

(为了清晰起见,我在某些地方对上面的代码进行了格式化和修剪。
因此,总的来说,该方法返回:

  • PrintService的默认页面大小(如果可用)(即打印机的默认页面大小,可能来自打印机的默认托盘)
  • 否则,如果运行时区域设置不是英语,请使用纵向A4页面
  • 否则,退回到默认的“纸张”,即8½×11英寸,边距为1英寸。

相关问题