2017-06-20 1 views
0

Je suis en train d'imprimer un nœud avec quelque chose de très basiqueJavaFX - Imprimer un nœud avec un DPI plus grand que 72

private void print(Node node) { 
    System.out.println("Creating a printer job..."); 

    PrinterJob job = PrinterJob.createPrinterJob(); 
    if (job != null && job.showPrintDialog(node.getScene().getWindow())) { 
     System.out.println(job.jobStatusProperty().asString()); 

     PageLayout pageLayout = Printer.getDefaultPrinter().createPageLayout(Paper.A4, PageOrientation.PORTRAIT, Printer.MarginType.HARDWARE_MINIMUM); 

     boolean printed = job.printPage(pageLayout, node); 
     if (printed) { 
      System.out.println("Printed."); 
      job.endJob(); 
     } else { 
      System.out.println("Printing failed."); 
     } 
    } else { 
     System.out.println("Could not create a printer job."); 
    } 
} 

Le problème est que je suis coincé avec une résolution DPI réglée sur 72. Est-ce une manière (sans multiplier les dimensions avec 72.0/wanted_dpi_resolution) de le changer dans une autre résolution DPI? (Mon écran est également de 96 DPI) Je suis très intéressé de pouvoir imprimer avec une valeur PPP d'au moins 96 DPI.

Merci et en attente de votre réponse.

Répondre

0

Meh la réponse courte est que c'est impossible.

Espérons que cela aidera quelqu'un d'autre avec le même problème que I. Veuillez trouver ci-joint le code suivant.

public static void printReport(ArrayList<MyPane> nodeList) { 
    System.out.println("Creating a printer job..."); 

    String printerName = CachedComponents.getPrinterName(); 

    Printer printer = null; 
    for (Printer p : Printer.getAllPrinters()) { 
     if (p.getName().equals(printerName)) { 
      printer = p; 
      break; 
     } 
    } 

    PrinterJob job = PrinterJob.createPrinterJob(printer); 
    if (job != null) { 
     job.getJobSettings().setPrintQuality(PrintQuality.HIGH); 

     PageLayout pageLayout = printer.createPageLayout(Paper.A4, PageOrientation.PORTRAIT, 
       Printer.MarginType.HARDWARE_MINIMUM); 

     boolean fail = false; 
     for (int i=0; i<nodeList.size(); i++) { 
      MyPane node = nodeList.get(i); 

      double scaleX = pageLayout.getPrintableWidth()/node.getBoundsInParent().getWidth(); 
      node.getTransforms().add(new Scale(scaleX, scaleX)); 

      boolean printed = job.printPage(pageLayout, node); 

      if (printed) { 
       System.out.println("Printed."); 
      } else { 
       System.out.println("Printing failed."); 
       fail = true; 
      } 
     } 
     if (!fail) { 
      job.endJob(); 
     } 
    } else { 
     System.out.println("Could not create a printer job."); 
    } 
} 

Vérifiez que la vérification est nulle.

À la votre!