JavaFX8-打印3d场景

JavaFX8-打印3d场景,java,printing,javafx-8,Java,Printing,Javafx 8,我正在尝试使用JavaFX8打印API,当我尝试打印任何包含任何3D内容的场景/节点时,我遇到了问题。我一直在搜索这里和其他网站的答案,但没有找到任何帮助 如果节点仅包含二维内容,则场景将在我选择的打印机上打印而不会出现问题。但是如果我在场景中添加一个3D对象,整个东西都无法打印出来——没有任何错误,但没有任何内容。如果我在打印机上打印,则会“打印”一个空白页,如果我在文档打印机上打印,则会得到一个空文档 我尝试使用AWT打印机制将节点转换为可写映像,然后再转换为用于打印的BuffereImag

我正在尝试使用JavaFX8打印API,当我尝试打印任何包含任何3D内容的场景/节点时,我遇到了问题。我一直在搜索这里和其他网站的答案,但没有找到任何帮助

如果节点仅包含二维内容,则场景将在我选择的打印机上打印而不会出现问题。但是如果我在场景中添加一个3D对象,整个东西都无法打印出来——没有任何错误,但没有任何内容。如果我在打印机上打印,则会“打印”一个空白页,如果我在文档打印机上打印,则会得到一个空文档

我尝试使用AWT打印机制将节点转换为可写映像,然后再转换为用于打印的BuffereImage。它的工作原理是打印,但我们对它的质量不满意

我的打印呼叫者在这个阶段是相当标准的-

private void doPrintFX() {
    Printer printer = Printer.getDefaultPrinter();
    PageLayout pageLayout = printer.createPageLayout(
            Paper.A3, PageOrientation.LANDSCAPE, Printer.MarginType.DEFAULT);

    final double scaleFactor = computeScaleFactor(pageLayout.getPrintableWidth(),
            pageLayout.getPrintableHeight(),
            sceneNode.getBoundsInParent().getWidth(),
            sceneNode.getBoundsInParent().getHeight());
    if (scaleFactor != 0) {
        sceneNode.getTransforms().add(new Scale(scaleFactor, scaleFactor));
    }

    PrinterJob job = PrinterJob.createPrinterJob(printer);
    if (job != null) {
        System.out.println("Printing to " + job.getPrinter().getName());
        boolean success = job.printPage(pageLayout, sceneNode);
        if (success) {
            job.endJob();
        }
    }
}
我已经缩小了节点,使其成为一个非常简单的场景,其中包含两个矩形和一个圆柱体。我目前使用的代码是:

    Cylinder cylinder = new Cylinder(50, 150);
    cylinder.setLayoutX(250);
    cylinder.setLayoutY(100);
    canvas.getDrawingPane().getChildren().add(cylinder);

    Rectangle item = new Rectangle(50, 50, 100, 50);
    item.setStroke(Color.BLACK);
    item.setFill(null);
    canvas.getDrawingPane().getChildren().add(item);

    item = new Rectangle(75, 75, 100, 50);
    item.setStroke(Color.BLACK);
    item.setFill(null);
    canvas.getDrawingPane().getChildren().add(item);
canvas.getDrawingPane是一个窗格,是发送到打印功能的窗格


有人能告诉我我现在做的可能有什么问题吗?JavaFXPrintAPI支持打印3D节点吗?谢谢。

请回答我自己的问题


我发现FX8不支持3D打印。已将其记录下来,以便对版本9进行可能的增强。

您可以尝试在上提出此问题。谢谢。我也在那里问过。你听说过或知道另一种使用3d节点打印场景图的好方法吗?不,Brian,我从来没有使用过JavaFX的打印功能。不过还是感谢你发布这篇文章。这是我第一次看打印代码,它看起来非常像在swing中打印。所以没有办法提高BuffereImage的分辨率吗?是否有任何关于打印或在另一个对象中存储BuffereImage for quality 3D节点打印功能的更新?