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/01/26 12:00:25 UTC

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

Author: tilman
Date: Sat Jan 26 12:00:25 2019
New Revision: 1852218

URL: http://svn.apache.org/viewvc?rev=1852218&view=rev
Log:
PDFBOX-4435: add new option for PrintPDF command line utility

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=1852218&r1=1852217&r2=1852218&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 Sat Jan 26 12:00:25 2019
@@ -16,6 +16,7 @@
  */
 package org.apache.pdfbox.tools;
 
+import java.awt.RenderingHints;
 import java.awt.print.PrinterException;
 import java.awt.print.PrinterJob;
 import java.io.File;
@@ -27,6 +28,8 @@ import javax.print.PrintService;
 import org.apache.pdfbox.pdmodel.PDDocument;
 import org.apache.pdfbox.printing.Orientation;
 import org.apache.pdfbox.printing.PDFPageable;
+import org.apache.pdfbox.printing.PDFPrintable;
+import org.apache.pdfbox.printing.Scaling;
 
 /**
  * This is a command line program that will print a PDF document.
@@ -41,6 +44,7 @@ public final class PrintPDF
     private static final String ORIENTATION = "-orientation";
     private static final String BORDER = "-border";
     private static final String DPI = "-dpi";
+    private static final String NOCOLOROPT = "-noColorOpt";
 
     /**
      * private constructor.
@@ -73,6 +77,8 @@ public final class PrintPDF
         orientationMap.put("auto", Orientation.AUTO);
         orientationMap.put("landscape", Orientation.LANDSCAPE);
         orientationMap.put("portrait", Orientation.PORTRAIT);
+        RenderingHints renderingHints = null;
+
         for (int i = 0; i < args.length; i++)
         {
             if (args[i].equals(PASSWORD))
@@ -114,6 +120,16 @@ public final class PrintPDF
             {
                 showPageBorder = true;
             }
+            else if (args[i].equals(NOCOLOROPT))
+            {
+                renderingHints = new RenderingHints(null);
+                renderingHints.put(RenderingHints.KEY_INTERPOLATION,
+                                   RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
+                renderingHints.put(RenderingHints.KEY_RENDERING,
+                                   RenderingHints.VALUE_RENDER_QUALITY);
+                renderingHints.put(RenderingHints.KEY_ANTIALIASING,
+                                   RenderingHints.VALUE_ANTIALIAS_OFF);
+            }
             else if (args[i].equals(DPI))
             {
                 i++;
@@ -156,7 +172,10 @@ public final class PrintPDF
                 }
             }
             printJob.setPageable(new PDFPageable(document, orientation, showPageBorder, dpi));
-            
+            PDFPrintable printable = new PDFPrintable(document, Scaling.ACTUAL_SIZE, showPageBorder, dpi);
+            printable.setRenderingHints(renderingHints);
+            printJob.setPrintable(printable);
+
             if (silentPrint || printJob.printDialog())
             {
                 printJob.print();
@@ -185,6 +204,8 @@ public final class PrintPDF
                 + "  -border                              : Print with border\n"
                 + "  -dpi                                 : Render into intermediate image with\n"
                 + "                                           specific dpi and then print\n"
+                + "  -noColorOpt                          : Disable color optimizations\n"
+                + "                                           (useful when printing barcodes)\n"
                 + "  -silentPrint                         : Print without printer dialog box\n";
         
         System.err.println(message);