JavaFX 8 인쇄 API를 사용하려고하는데 어떤 종류의 3D 콘텐츠가 포함 된 장면/노드를 인쇄하려고하면 문제가 발생합니다. 나는 여기와 다른 사이트 모두에서 대답을 찾고 있었고 도움이 될만한 것을 찾을 수 없었습니다.JavaFX 8 - 3d 장면 인쇄
노드에 2D 컨텐츠 만 포함되어 있으면 장면이 선택한 내 프린터에서 문제없이 인쇄됩니다. 그러나 장면에 단일 3D 객체를 추가하면 모든 내용이 오류없이 인쇄되지만 내용이 전혀 없습니다. 프린터로 인쇄 할 때 빈 페이지가 "인쇄"되고 문서 프린터로 인쇄하는 경우 빈 문서가 나타납니다.
AWT 인쇄 메커니즘을 사용하여 노드를 WritableImage로 변환 한 다음 인쇄용 BufferedImage로 변환 해 보았습니다. 이것은 인쇄한다는 점에서 효과가 있지만 우리가 얻은 품질에 만족하지 않습니다.
내 인쇄 호출자는이 단계에서 매우 표준이다 - 나는 사각형 및 실린더의 몇 가지를 포함하는 아주 간단한 장면으로 노드를 축소 한
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는 창이고 인쇄 기능에 전송되는 것입니다.
내가하고있는 일에 무엇이 잘못 될지 조언 해 줄 사람이 있습니까? JavaFX 인쇄 API가 3D 노드 인쇄를 지원합니까? 고맙습니다.
당신은 [openjfx-DEV 메일 링리스트]에서이 질문을 시도해 볼 수도 있습니다 (대한 가능성 향상을 위해 아래로 넣어왔다 FX 8에서 지원되지 않는 것을 발견 http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev). – jewelsea
주얼리 감사합니다. 나는 거기에서도 물었다. – user1460563
@ jewelsea. 3D 노드가있는 장면 그래프를 인쇄하는 또 다른 좋은 방법에 대해 들어 보셨습니까? –