2

在 JavaFX 中,我想将照片打印到 10x15 纸上。有一些 Paper 常量,但没有 100x150 mm 常量。

是否可以创建自己的 Paper 以在 PageLayout 中使用它?

谢谢。

PageLayout pageLayout = printer.createPageLayout(Paper.JAPANESE_POSTCARD, PageOrientation.LANDSCAPE, Printer.MarginType.EQUAL);
        double scaleX = pageLayout.getPrintableWidth() / node.getBoundsInParent().getWidth();
        double scaleY = pageLayout.getPrintableHeight() / node.getBoundsInParent().getHeight();
    node.getTransforms().add(new Scale(scaleX, scaleY));
    PrinterJob job = PrinterJob.createPrinterJob(printer);
    if (job != null) {
        System.out.println("Job created!");
        boolean success = job.printPage(node);
        if (success) {
            System.out.println("Job successfully finished!");
            job.endJob();
        } else {
            System.out.println("Job NOT successful!");
        }
    }
4

2 回答 2

7

您可以使用可以访问 Paper 的包私有构造函数的类 PrintHelper。

Paper photo = PrintHelper.createPaper("10x15", 100, 150, Units.MM);
于 2015-12-23T10:16:59.547 回答
4

Paper 的构造函数是包私有的,因此除了类中列出的标准尺寸之外,您无法创建 Paper 尺寸。

但是,您可以使用反射创建自定义大小:

Constructor<Paper> c = Paper.class.getDeclaredConstructor(String.class,
                                         double.class, double.class, Units.class);
c.setAccessible(true);
Paper photo = c.newInstance("10x15", 100, 150, MM);

我还没有测试过它是否正常工作。

于 2014-03-25T09:42:49.057 回答