You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2019/02/06 16:13:08 UTC

svn commit: r1853086 - /pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java

Author: tilman
Date: Wed Feb  6 16:13:08 2019
New Revision: 1853086

URL: http://svn.apache.org/viewvc?rev=1853086&view=rev
Log:
PDFBOX-4456: select exact printer name; warn when not found; tell printer names in usage message

Modified:
    pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java

Modified: pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java?rev=1853086&r1=1853085&r2=1853086&view=diff
==============================================================================
--- pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java (original)
+++ pdfbox/branches/2.0/tools/src/main/java/org/apache/pdfbox/tools/PrintPDF.java Wed Feb  6 16:13:08 2019
@@ -158,16 +158,21 @@ public final class PrintPDF
 
             if (printerName != null)
             {
-                PrintService[] printService = PrinterJob.lookupPrintServices();
+                PrintService[] printServices = PrinterJob.lookupPrintServices();
                 boolean printerFound = false;
-                for (int i = 0; !printerFound && i < printService.length; i++)
+                for (int i = 0; !printerFound && i < printServices.length; i++)
                 {
-                    if (printService[i].getName().contains(printerName))
+                    if (printServices[i].getName().equals(printerName))
                     {
-                        printJob.setPrintService(printService[i]);
+                        printJob.setPrintService(printServices[i]);
                         printerFound = true;
                     }
                 }
+                if (!printerFound)
+                {
+                    System.err.println("printer '" + printerName + "' not found, using default");
+                    showAvailablePrinters();
+                }
             }
             PDFPageable pageable = new PDFPageable(document, orientation, showPageBorder, dpi);
             pageable.setRenderingHints(renderingHints);
@@ -209,8 +214,18 @@ public final class PrintPDF
                 + "  -noColorOpt                          : Disable color optimizations\n"
                 + "                                           (useful when printing barcodes)\n"
                 + "  -silentPrint                         : Print without printer dialog box\n";
-        
         System.err.println(message);
+        showAvailablePrinters();
         System.exit(1);
     }
+
+    private static void showAvailablePrinters()
+    {
+        System.err.println("Available printer names:");
+        PrintService[] printServices = PrinterJob.lookupPrintServices();
+        for (PrintService printService : printServices)
+        {
+            System.err.println("    " + printService.getName());
+        }
+    }
 }