You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2013/08/18 17:02:08 UTC
svn commit: r1515127 [1/3] - in
/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: PDFReader.java
PrintPDF.java pdmodel/PDDocument.java pdmodel/PDPage.java
pdmodel/PDPageable.java util/PDFImageWriter.java util/RenderUtil.java
Author: lehmi
Date: Sun Aug 18 15:02:07 2013
New Revision: 1515127
URL: http://svn.apache.org/r1515127
Log:
PDFBOX-1698: (re)move the print and rendering stuff
Added:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/RenderUtil.java (with props)
Modified:
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PDFReader.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PrintPDF.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDDocument.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPage.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/PDPageable.java
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/PDFImageWriter.java
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PDFReader.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PDFReader.java?rev=1515127&r1=1515126&r2=1515127&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PDFReader.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PDFReader.java Sun Aug 18 15:02:07 2013
@@ -16,6 +16,18 @@
*/
package org.apache.pdfbox;
+import java.awt.image.BufferedImage;
+import java.awt.print.PrinterException;
+import java.awt.print.PrinterJob;
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+import javax.swing.JFileChooser;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.KeyStroke;
+
import org.apache.pdfbox.exceptions.InvalidPasswordException;
import org.apache.pdfbox.pdfviewer.PageWrapper;
import org.apache.pdfbox.pdfviewer.ReaderBottomPanel;
@@ -24,29 +36,17 @@ import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDPageable;
import org.apache.pdfbox.util.ExtensionFileFilter;
import org.apache.pdfbox.util.ImageIOUtil;
-
-import javax.swing.JFileChooser;
-import javax.swing.JScrollPane;
-import javax.swing.JPanel;
-import javax.swing.KeyStroke;
-
-import java.awt.image.BufferedImage;
-import java.awt.print.PrinterException;
-import java.awt.print.PrinterJob;
-import java.io.File;
-import java.io.IOException;
-import java.util.List;
+import org.apache.pdfbox.util.RenderUtil;
/**
- * An application to read PDF documents. This will provide Acrobat Reader like
- * funtionality.
- *
+ * An application to read PDF documents. This will provide Acrobat Reader like funtionality.
+ *
* @author <a href="ben@benlitchfield.com">Ben Litchfield</a>
- * @version $Revision: 1.5 $
+ *
*/
public class PDFReader extends javax.swing.JFrame
{
- private File currentDir=new File(".");
+ private File currentDir = new File(".");
private javax.swing.JMenuItem saveAsImageMenuItem;
private javax.swing.JMenuItem exitMenuItem;
private javax.swing.JMenu fileMenu;
@@ -60,16 +60,16 @@ public class PDFReader extends javax.swi
private ReaderBottomPanel bottomStatusPanel = new ReaderBottomPanel();
private PDDocument document = null;
- private List<PDPage> pages= null;
-
+ private List<PDPage> pages = null;
+
private int currentPage = 0;
private int numberOfPages = 0;
private String currentFilename = null;
private static final String PASSWORD = "-password";
private static final String NONSEQ = "-nonSeq";
- private static boolean useNonSeqParser = false;
-
+ private static boolean useNonSeqParser = false;
+
/**
* Constructor.
*/
@@ -79,10 +79,8 @@ public class PDFReader extends javax.swi
}
/**
- * This method is called from within the constructor to
- * initialize the form.
- * WARNING: Do NOT modify this code. The content of this method is
- * always regenerated by the Form Editor.
+ * This method is called from within the consructor to initialize the form.
+ *
*/
private void initComponents()
{
@@ -96,7 +94,6 @@ public class PDFReader extends javax.swi
nextPageItem = new javax.swing.JMenuItem();
previousPageItem = new javax.swing.JMenuItem();
-
setTitle("PDFBox - PDF Reader");
addWindowListener(new java.awt.event.WindowAdapter()
{
@@ -106,13 +103,11 @@ public class PDFReader extends javax.swi
}
});
-
JScrollPane documentScroller = new JScrollPane();
- documentScroller.setViewportView( documentPanel );
+ documentScroller.setViewportView(documentPanel);
-
- getContentPane().add( documentScroller, java.awt.BorderLayout.CENTER );
- getContentPane().add( bottomStatusPanel, java.awt.BorderLayout.SOUTH );
+ getContentPane().add(documentScroller, java.awt.BorderLayout.CENTER);
+ getContentPane().add(bottomStatusPanel, java.awt.BorderLayout.SOUTH);
fileMenu.setText("File");
openMenuItem.setText("Open");
@@ -127,14 +122,14 @@ public class PDFReader extends javax.swi
fileMenu.add(openMenuItem);
- printMenuItem.setText( "Print" );
+ printMenuItem.setText("Print");
printMenuItem.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
try
{
- if (document != null)
+ if (document != null)
{
PDPageable pageable = new PDPageable(document);
PrinterJob job = pageable.getPrinterJob();
@@ -145,26 +140,26 @@ public class PDFReader extends javax.swi
}
}
}
- catch( PrinterException e )
+ catch (PrinterException e)
{
e.printStackTrace();
}
}
});
- fileMenu.add( printMenuItem );
+ fileMenu.add(printMenuItem);
- saveAsImageMenuItem.setText( "Save as image" );
+ saveAsImageMenuItem.setText("Save as image");
saveAsImageMenuItem.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
- if (document != null)
+ if (document != null)
{
saveImage();
}
}
});
- fileMenu.add( saveAsImageMenuItem );
+ fileMenu.add(saveAsImageMenuItem);
exitMenuItem.setText("Exit");
exitMenuItem.addActionListener(new java.awt.event.ActionListener()
@@ -206,30 +201,28 @@ public class PDFReader extends javax.swi
setJMenuBar(menuBar);
-
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
- setBounds((screenSize.width-700)/2, (screenSize.height-600)/2, 700, 600);
+ setBounds((screenSize.width - 700) / 2, (screenSize.height - 600) / 2, 700, 600);
}
-
- private void updateTitle()
+ private void updateTitle()
{
- setTitle( "PDFBox - " + currentFilename + " ("+(currentPage+1)+"/"+numberOfPages+")");
+ setTitle("PDFBox - " + currentFilename + " (" + (currentPage + 1) + "/" + numberOfPages + ")");
}
-
+
private void nextPage()
{
- if (currentPage < numberOfPages-1)
+ if (currentPage < numberOfPages - 1)
{
currentPage++;
updateTitle();
showPage(currentPage);
}
}
-
+
private void previousPage()
{
- if (currentPage > 0 )
+ if (currentPage > 0)
{
currentPage--;
updateTitle();
@@ -242,7 +235,7 @@ public class PDFReader extends javax.swi
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(currentDir);
- ExtensionFileFilter pdfFilter = new ExtensionFileFilter(new String[] {"PDF"}, "PDF Files");
+ ExtensionFileFilter pdfFilter = new ExtensionFileFilter(new String[] { "PDF" }, "PDF Files");
chooser.setFileFilter(pdfFilter);
int result = chooser.showOpenDialog(PDFReader.this);
if (result == JFileChooser.APPROVE_OPTION)
@@ -264,22 +257,22 @@ public class PDFReader extends javax.swi
{
try
{
- if( document != null )
+ if (document != null)
{
document.close();
}
}
- catch( IOException io )
+ catch (IOException io)
{
- //do nothing because we are closing the application
+ // do nothing because we are closing the application
}
- this.setVisible( false );
+ this.setVisible(false);
this.dispose();
}
/**
* @param args the command line arguments
- *
+ *
* @throws Exception If anything goes wrong.
*/
public static void main(String[] args) throws Exception
@@ -287,18 +280,18 @@ public class PDFReader extends javax.swi
PDFReader viewer = new PDFReader();
String password = "";
String filename = null;
- for( int i = 0; i < args.length; i++ )
+ for (int i = 0; i < args.length; i++)
{
- if( args[i].equals( PASSWORD ) )
+ if (args[i].equals(PASSWORD))
{
i++;
- if( i >= args.length )
+ if (i >= args.length)
{
usage();
}
password = args[i];
}
- if( args[i].equals( NONSEQ ) )
+ if (args[i].equals(NONSEQ))
{
useNonSeqParser = true;
}
@@ -310,21 +303,21 @@ public class PDFReader extends javax.swi
// open the pdf if present
if (filename != null)
{
- viewer.openPDFFile( filename, password );
+ viewer.openPDFFile(filename, password);
}
viewer.setVisible(true);
}
private void openPDFFile(String filename, String password) throws Exception
{
- if( document != null )
+ if (document != null)
{
document.close();
documentPanel.removeAll();
}
-
- File file = new File( filename );
- parseDocument( file, password );
+
+ File file = new File(filename);
+ parseDocument(file, password);
pages = document.getDocumentCatalog().getAllPages();
numberOfPages = pages.size();
currentFilename = file.getAbsolutePath();
@@ -332,18 +325,18 @@ public class PDFReader extends javax.swi
updateTitle();
showPage(0);
}
-
+
private void showPage(int pageNumber)
{
- try
+ try
{
- PageWrapper wrapper = new PageWrapper( this );
- wrapper.displayPage( (PDPage)pages.get(pageNumber) );
+ PageWrapper wrapper = new PageWrapper(this);
+ wrapper.displayPage((PDPage) pages.get(pageNumber));
if (documentPanel.getComponentCount() > 0)
{
documentPanel.remove(0);
}
- documentPanel.add( wrapper.getPanel() );
+ documentPanel.add(wrapper.getPanel());
pack();
}
catch (IOException exception)
@@ -354,31 +347,31 @@ public class PDFReader extends javax.swi
private void saveImage()
{
- try
+ try
{
- PDPage pageToSave = (PDPage)pages.get(currentPage);
- BufferedImage pageAsImage = pageToSave.convertToImage();
+ BufferedImage pageAsImage = RenderUtil.convertToImage(pages.get(currentPage));
String imageFilename = currentFilename;
if (imageFilename.toLowerCase().endsWith(".pdf"))
{
- imageFilename = imageFilename.substring(0, imageFilename.length()-4);
+ imageFilename = imageFilename.substring(0, imageFilename.length() - 4);
}
- imageFilename += "_" + (currentPage + 1);
- ImageIOUtil.writeImage(pageAsImage, "png", imageFilename, BufferedImage.TYPE_USHORT_565_RGB, 300);
+ imageFilename += "_" + (currentPage + 1);
+ ImageIOUtil.writeImage(pageAsImage, "png", imageFilename, BufferedImage.TYPE_USHORT_565_RGB, 300);
}
catch (IOException exception)
{
exception.printStackTrace();
}
}
+
/**
* This will parse a document.
- *
+ *
* @param input The input stream for the document.
- *
+ *
* @throws IOException If there is an error parsing the document.
*/
- private void parseDocument( File file, String password )throws IOException
+ private void parseDocument(File file, String password) throws IOException
{
document = null;
if (useNonSeqParser)
@@ -388,17 +381,17 @@ public class PDFReader extends javax.swi
else
{
document = PDDocument.load(file);
- if( document.isEncrypted() )
+ if (document.isEncrypted())
{
try
{
- document.decrypt( password );
+ document.decrypt(password);
}
- catch( InvalidPasswordException e )
+ catch (InvalidPasswordException e)
{
- System.err.println( "Error: The document is encrypted." );
+ System.err.println("Error: The document is encrypted.");
}
- catch( org.apache.pdfbox.exceptions.CryptographyException e )
+ catch (org.apache.pdfbox.exceptions.CryptographyException e)
{
e.printStackTrace();
}
@@ -408,25 +401,23 @@ public class PDFReader extends javax.swi
/**
* Get the bottom status panel.
- *
+ *
* @return The bottom status panel.
*/
public ReaderBottomPanel getBottomStatusPanel()
{
return bottomStatusPanel;
}
-
+
/**
* This will print out a message telling how to use this utility.
*/
private static void usage()
{
- System.err.println(
- "usage: java -jar pdfbox-app-x.y.z.jar PDFReader [OPTIONS] <input-file>\n" +
- " -password <password> Password to decrypt the document\n" +
- " -nonSeq Enables the new non-sequential parser\n" +
- " <input-file> The PDF document to be loaded\n"
- );
+ System.err.println("usage: java -jar pdfbox-app-x.y.z.jar PDFReader [OPTIONS] <input-file>\n"
+ + " -password <password> Password to decrypt the document\n"
+ + " -nonSeq Enables the new non-sequential parser\n"
+ + " <input-file> The PDF document to be loaded\n");
}
}
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PrintPDF.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PrintPDF.java?rev=1515127&r1=1515126&r2=1515127&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PrintPDF.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/PrintPDF.java Sun Aug 18 15:02:07 2013
@@ -17,69 +17,68 @@
package org.apache.pdfbox;
import java.awt.print.PrinterJob;
+import java.io.File;
import javax.print.PrintService;
import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.pdmodel.PDPageable;
-
-import java.io.File;
+import org.apache.pdfbox.util.RenderUtil;
/**
* This is a command line program that will print a PDF document.
- *
+ *
* @author <a href="ben@benlitchfield.com">Ben Litchfield</a>
* @version $Revision: 1.4 $
*/
public class PrintPDF
{
- private static final String PASSWORD = "-password";
- private static final String SILENT = "-silentPrint";
+ private static final String PASSWORD = "-password";
+ private static final String SILENT = "-silentPrint";
private static final String PRINTER_NAME = "-printerName";
/**
* private constructor.
- */
+ */
private PrintPDF()
{
- //static class
+ // static class
}
/**
* Infamous main method.
- *
+ *
* @param args Command line arguments, should be one and a reference to a file.
- *
+ *
* @throws Exception If there is an error parsing the document.
*/
- public static void main( String[] args ) throws Exception
+ public static void main(String[] args) throws Exception
{
String password = "";
String pdfFile = null;
boolean silentPrint = false;
String printerName = null;
- for( int i=0; i<args.length; i++ )
+ for (int i = 0; i < args.length; i++)
{
- if( args[i].equals( PASSWORD ) )
+ if (args[i].equals(PASSWORD))
{
i++;
- if( i >= args.length )
+ if (i >= args.length)
{
usage();
}
password = args[i];
}
- else if( args[i].equals( PRINTER_NAME ) )
+ else if (args[i].equals(PRINTER_NAME))
{
i++;
- if( i >= args.length )
+ if (i >= args.length)
{
usage();
}
printerName = args[i];
}
- else if( args[i].equals( SILENT ) )
+ else if (args[i].equals(SILENT))
{
silentPrint = true;
}
@@ -89,7 +88,7 @@ public class PrintPDF
}
}
- if( pdfFile == null )
+ if (pdfFile == null)
{
usage();
}
@@ -97,23 +96,23 @@ public class PrintPDF
PDDocument document = null;
try
{
- document = PDDocument.load( pdfFile );
+ document = PDDocument.load(pdfFile);
- if( document.isEncrypted() )
+ if (document.isEncrypted())
{
- document.decrypt( password );
+ document.decrypt(password);
}
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setJobName(new File(pdfFile).getName());
- if(printerName != null )
+ if (printerName != null)
{
PrintService[] printService = PrinterJob.lookupPrintServices();
boolean printerFound = false;
- for(int i = 0; !printerFound && i < printService.length; i++)
+ for (int i = 0; !printerFound && i < printService.length; i++)
{
- if(printService[i].getName().indexOf(printerName) != -1)
+ if (printService[i].getName().indexOf(printerName) != -1)
{
printJob.setPrintService(printService[i]);
printerFound = true;
@@ -121,15 +120,18 @@ public class PrintPDF
}
}
- printJob.setPageable(new PDPageable(document, printJob));
- if( silentPrint || printJob.printDialog())
+ if (silentPrint)
+ {
+ RenderUtil.silentPrint(document, printJob);
+ }
+ else if (printJob.printDialog())
{
- printJob.print();
+ RenderUtil.print(document, printJob);
}
}
finally
{
- if( document != null )
+ if (document != null)
{
document.close();
}
@@ -141,10 +143,9 @@ public class PrintPDF
*/
private static void usage()
{
- System.err.println( "Usage: java -jar pdfbox-app-x.y.z.jar PrintPDF [OPTIONS] <PDF file>\n" +
- " -password <password> Password to decrypt document\n" +
- " -silentPrint Print without prompting for printer info\n"
- );
- System.exit( 1 );
+ System.err.println("Usage: java -jar pdfbox-app-x.y.z.jar PrintPDF [OPTIONS] <PDF file>\n"
+ + " -password <password> Password to decrypt document\n"
+ + " -silentPrint Print without prompting for printer info\n");
+ System.exit(1);
}
}