2014-11-11 4 views
2

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 노드 인쇄를 지원합니까? 고맙습니다.

+0

당신은 [openjfx-DEV 메일 링리스트]에서이 질문을 시도해 볼 수도 있습니다 (대한 가능성 향상을 위해 아래로 넣어왔다 FX 8에서 지원되지 않는 것을 발견 http://mail.openjdk.java.net/mailman/listinfo/openjfx-dev). – jewelsea

+0

주얼리 감사합니다. 나는 거기에서도 물었다. – user1460563

+0

@ jewelsea. 3D 노드가있는 장면 그래프를 인쇄하는 또 다른 좋은 방법에 대해 들어 보셨습니까? –

답변

1

관심이있을만한 다른 사람들을 위해 제 질문에 대답합니다.

나는 3D 프린팅 그것은 버전 9

+0

하지만 어쨌든 이것을 게시 해 주셔서 감사합니다. 이것은 처음으로 코드를 살펴보고 스윙에서의 인쇄와 매우 흡사합니다. – Thorn

+0

그래서 bufferedImage의 해상도를 향상시킬 방법이 없습니까? 품질 3D 노드가 인쇄하기 위해 bufferedImage를 다른 객체에 인쇄하거나 저장하는 기능에 대한 업데이트가 있습니까? –