aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/pdfbox/examples
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/pdfbox/examples')
-rw-r--r--src/main/java/org/pdfbox/examples/AbstractExample.java125
-rw-r--r--src/main/java/org/pdfbox/examples/fdf/PrintFields.java163
-rw-r--r--src/main/java/org/pdfbox/examples/fdf/SetField.java128
-rw-r--r--src/main/java/org/pdfbox/examples/fdf/package.html9
-rw-r--r--src/main/java/org/pdfbox/examples/package.html9
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/AddJavascript.java96
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/AddMessageToEachPage.java148
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java180
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/CreateBlankPDF.java123
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/CreateBookmarks.java119
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/EmbeddedFiles.java170
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/HelloWorld.java137
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/HelloWorldTTF.java134
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/HelloWorldType1AfmPfb.java134
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/ImageToPDF.java146
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/PrintBookmarks.java142
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/PrintDocumentMetaData.java165
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/RemoveFirstPage.java98
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/ReplaceString.java186
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/RubberStamp.java113
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/ShowColorBoxes.java135
-rw-r--r--src/main/java/org/pdfbox/examples/pdmodel/package.html9
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/AppendAndFillDoc.java282
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/AppendDoc.java357
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/CopyDoc.java140
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/FieldsDoc.java177
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/WriteDecodedDoc.java151
-rw-r--r--src/main/java/org/pdfbox/examples/persistence/package.html9
-rw-r--r--src/main/java/org/pdfbox/examples/signature/ShowSignature.java168
-rw-r--r--src/main/java/org/pdfbox/examples/signature/package.html9
-rw-r--r--src/main/java/org/pdfbox/examples/util/ExtractTextByArea.java119
-rw-r--r--src/main/java/org/pdfbox/examples/util/PrintTextLocations.java144
-rw-r--r--src/main/java/org/pdfbox/examples/util/package.html9
33 files changed, 0 insertions, 4234 deletions
diff --git a/src/main/java/org/pdfbox/examples/AbstractExample.java b/src/main/java/org/pdfbox/examples/AbstractExample.java
deleted file mode 100644
index 1350b73..0000000
--- a/src/main/java/org/pdfbox/examples/AbstractExample.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.pdfbox.cos.COSDocument;
-
-import org.pdfbox.pdmodel.PDDocument;
-
-import org.pdfbox.pdfwriter.COSWriter;
-
-/**
- * A simple class which has some methods used by all examples.
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.3 $
- */
-public abstract class AbstractExample
-{
- /**
- * Close the stream.
- *
- * @param stream The stream to close.
- *
- * @throws IOException If there is an error closing the stream.
- */
- public void close( InputStream stream ) throws IOException
- {
- if( stream != null )
- {
- stream.close();
- }
- }
-
- /**
- * Close the stream.
- *
- * @param stream The stream to close.
- *
- * @throws IOException If there is an error closing the stream.
- */
- public void close( OutputStream stream ) throws IOException
- {
- if( stream != null )
- {
- stream.close();
- }
- }
-
- /**
- * Close the document.
- *
- * @param doc The doc to close.
- *
- * @throws IOException If there is an error closing the document.
- */
- public void close( COSDocument doc ) throws IOException
- {
- if( doc != null )
- {
- doc.close();
- }
- }
-
- /**
- * Close the document.
- *
- * @param doc The doc to close.
- *
- * @throws IOException If there is an error closing the document.
- */
- public void close( PDDocument doc ) throws IOException
- {
- if( doc != null )
- {
- doc.close();
- }
- }
-
- /**
- * Close the writer.
- *
- * @param writer The writer to close.
- *
- * @throws IOException If there is an error closing the writer.
- */
- public static void close( COSWriter writer ) throws IOException
- {
- if( writer != null )
- {
- writer.close();
- }
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/fdf/PrintFields.java b/src/main/java/org/pdfbox/examples/fdf/PrintFields.java
deleted file mode 100644
index 189ba72..0000000
--- a/src/main/java/org/pdfbox/examples/fdf/PrintFields.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/**
- * Copyright (c) 2003-2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.fdf;
-
-import java.io.IOException;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.pdfbox.pdmodel.interactive.form.PDAcroForm;
-import org.pdfbox.pdmodel.interactive.form.PDField;
-
-import org.pdfbox.exceptions.CryptographyException;
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentCatalog;
-
-/**
- * This example will take a PDF document and print all the fields from the file.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.15 $
- */
-public class PrintFields
-{
-
- /**
- * This will print all the fields from the document.
- *
- * @param pdfDocument The PDF to get the fields from.
- *
- * @throws IOException If there is an error getting the fields.
- */
- public void printFields( PDDocument pdfDocument ) throws IOException
- {
- PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
- PDAcroForm acroForm = docCatalog.getAcroForm();
- List fields = acroForm.getFields();
- Iterator fieldsIter = fields.iterator();
-
- System.out.println(new Integer(fields.size()).toString() + " top-level fields were found on the form");
-
- while( fieldsIter.hasNext())
- {
- PDField field = (PDField)fieldsIter.next();
- processField(field, "|--", field.getPartialName());
- }
- }
-
- private void processField(PDField field, String sLevel, String sParent) throws IOException
- {
- List kids = field.getKids();
- if(kids != null)
- {
- Iterator kidsIter = kids.iterator();
- if(!sParent.equals(field.getPartialName()))
- {
- sParent = sParent + "." + field.getPartialName();
- }
- System.out.println(sLevel + sParent);
- //System.out.println(sParent + " is of type " + field.getClass().getName());
- while(kidsIter.hasNext())
- {
- Object pdfObj = kidsIter.next();
- if(pdfObj instanceof PDField)
- {
- PDField kid = (PDField)pdfObj;
- processField(kid, "| " + sLevel, sParent);
- }
- }
- }
- else
- {
- String outputString = sLevel + sParent + "." + field.getPartialName() + " = " + field.getValue() +
- ", type=" + field.getClass().getName();
-
- System.out.println(outputString);
- }
- }
-
- /**
- * This will read a PDF file and print out the form elements.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- *
- * @throws IOException If there is an error importing the FDF document.
- * @throws CryptographyException If there is an error decrypting the document.
- */
- public static void main(String[] args) throws IOException, CryptographyException
- {
- PDDocument pdf = null;
- try
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- pdf = PDDocument.load( args[0] );
- PrintFields exporter = new PrintFields();
- if( pdf.isEncrypted() )
- {
- try
- {
- pdf.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: The document is encrypted." );
- usage();
- }
- }
- exporter.printFields( pdf );
- }
- }
- finally
- {
- if( pdf != null )
- {
- pdf.close();
- }
- }
- }
- /**
- * This will print out a message telling how to use this example.
- */
- private static void usage()
- {
- System.err.println( "usage: org.pdfbox.examples.fdf.PrintFields <pdf-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/fdf/SetField.java b/src/main/java/org/pdfbox/examples/fdf/SetField.java
deleted file mode 100644
index 904feeb..0000000
--- a/src/main/java/org/pdfbox/examples/fdf/SetField.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/**
- * Copyright (c) 2003-2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.fdf;
-
-import java.io.IOException;
-
-import org.pdfbox.pdmodel.interactive.form.PDAcroForm;
-import org.pdfbox.pdmodel.interactive.form.PDField;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentCatalog;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.examples.AbstractExample;
-
-/**
- * This example will take a PDF document and set a FDF field in it.
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.6 $
- */
-public class SetField extends AbstractExample
-{
-
- /**
- * This will set a single field in the document.
- *
- * @param pdfDocument The PDF to set the field in.
- * @param name The name of the field to set.
- * @param value The new value of the field.
- *
- * @throws IOException If there is an error setting the field.
- */
- public void setField( PDDocument pdfDocument, String name, String value ) throws IOException
- {
- PDDocumentCatalog docCatalog = pdfDocument.getDocumentCatalog();
- PDAcroForm acroForm = docCatalog.getAcroForm();
- PDField field = acroForm.getField( name );
- if( field != null )
- {
- field.setValue( value );
- }
- else
- {
- System.err.println( "No field found with name:" + name );
- }
-
- }
-
- /**
- * This will read a PDF file and set a field and then write it the pdf out again.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- *
- * @throws IOException If there is an error importing the FDF document.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public static void main(String[] args) throws IOException, COSVisitorException
- {
- SetField setter = new SetField();
- setter.setField( args );
- }
-
- private void setField( String[] args ) throws IOException, COSVisitorException
- {
- PDDocument pdf = null;
- try
- {
- if( args.length != 3 )
- {
- usage();
- }
- else
- {
- SetField example = new SetField();
-
- pdf = PDDocument.load( args[0] );
- example.setField( pdf, args[1], args[2] );
- pdf.save( args[0] );
- }
- }
- finally
- {
- if( pdf != null )
- {
- pdf.close();
- }
- }
- }
- /**
- * This will print out a message telling how to use this example.
- */
- private static void usage()
- {
- System.err.println( "usage: org.pdfbox.examples.fdf.SetField <pdf-file> <field-name> <field-value>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/fdf/package.html b/src/main/java/org/pdfbox/examples/fdf/package.html
deleted file mode 100644
index 5c80aca..0000000
--- a/src/main/java/org/pdfbox/examples/fdf/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-These are examples that use the FDF features of a PDF document.
-</body>
-</html>
diff --git a/src/main/java/org/pdfbox/examples/package.html b/src/main/java/org/pdfbox/examples/package.html
deleted file mode 100644
index fe059eb..0000000
--- a/src/main/java/org/pdfbox/examples/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-The packages in this package will show how to use the PDFBox API.
-</body>
-</html>
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/AddJavascript.java b/src/main/java/org/pdfbox/examples/pdmodel/AddJavascript.java
deleted file mode 100644
index d04700e..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/AddJavascript.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.interactive.action.type.PDActionJavaScript;
-
-import java.io.IOException;
-
-/**
- * This is an example of how to set some javascript in the document.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.2 $
- */
-public class AddJavascript
-{
- private AddJavascript()
- {
- //static class, should not be instantiated.
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- try
- {
- document = PDDocument.load( args[0] );
- PDActionJavaScript javascript = new PDActionJavaScript(
- "app.alert( {cMsg: 'PDFBox rocks!', nIcon: 3, nType: 0, cTitle: 'PDFBox Javascript example' } );");
- document.getDocumentCatalog().setOpenAction( javascript );
- if( document.isEncrypted() )
- {
- throw new IOException( "Encrypted documents are not supported for this example" );
- }
- document.save( args[1] );
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.AddJavascript <input-pdf> <output-pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/AddMessageToEachPage.java b/src/main/java/org/pdfbox/examples/pdmodel/AddMessageToEachPage.java
deleted file mode 100644
index efb6ec1..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/AddMessageToEachPage.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.IOException;
-import java.util.List;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.common.PDRectangle;
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-
-import org.pdfbox.pdmodel.font.PDFont;
-import org.pdfbox.pdmodel.font.PDType1Font;
-
-
-/**
- * This is an example of how to add a message to every page
- * in a pdf document.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.2 $
- */
-public class AddMessageToEachPage
-{
- /**
- * Constructor.
- */
- public AddMessageToEachPage()
- {
- super();
- }
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- * @param message The message to write in the file.
- * @param outfile The resulting PDF.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt( String file, String message, String outfile ) throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = PDDocument.load( file );
-
- List allPages = doc.getDocumentCatalog().getAllPages();
- PDFont font = PDType1Font.HELVETICA_BOLD;
- float fontSize = 12.0f;
-
- for( int i=0; i<allPages.size(); i++ )
- {
- PDPage page = (PDPage)allPages.get( i );
- PDRectangle pageSize = page.findMediaBox();
- float stringWidth = font.getStringWidth( message );
- float centeredPosition = (pageSize.getWidth() - (stringWidth*fontSize)/1000f)/2f;
- PDPageContentStream contentStream = new PDPageContentStream(doc, page, true, true);
- contentStream.beginText();
- contentStream.setFont( font, fontSize );
- contentStream.moveTextPositionByAmount( centeredPosition, 30 );
- contentStream.drawString( message );
- contentStream.endText();
- contentStream.close();
- }
-
-
- doc.save( outfile );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- AddMessageToEachPage app = new AddMessageToEachPage();
- try
- {
- if( args.length != 3 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1], args[2] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <input-file> <Message> <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java b/src/main/java/org/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
deleted file mode 100644
index 35080cd..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/AddMetadataFromDocInfo.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentCatalog;
-import org.pdfbox.pdmodel.PDDocumentInformation;
-import org.pdfbox.pdmodel.common.PDMetadata;
-import org.pdfbox.util.DateConverter;
-
-import java.io.ByteArrayInputStream;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-
-/**
- * This is an example on how to add metadata to a document.
- *
- * Usage: java org.pdfbox.examples.pdmodel.AddMetadataToDocument &lt;input-pdf&gt; &lt;output-pdf&gt;
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.2 $
- */
-public class AddMetadataFromDocInfo
-{
- private static final String PADDING =
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " " +
- " ";
-
-
-
- private AddMetadataFromDocInfo()
- {
- //utility class
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
-
- try
- {
- document = PDDocument.load( args[0] );
- if( document.isEncrypted() )
- {
- System.err.println( "Error: Cannot add metadata to encrypted document." );
- System.exit( 1 );
- }
- PDDocumentCatalog catalog = document.getDocumentCatalog();
- PDDocumentInformation info = document.getDocumentInformation();
-
- //Right now, PDFBox does not have any XMP library, so we will
- //just consruct the XML by hand.
- StringBuffer xmp= new StringBuffer();
- xmp.append(
- "<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>\n" +
- "<?adobe-xap-filters esc=\"CRLF\"?>\n" +
- "<x:xmpmeta>\n" +
- " <rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>\n" +
- " <rdf:Description rdf:about='' xmlns:pdf='http://ns.adobe.com/pdf/1.3/' " +
- "pdf:Keywords='" + fixNull( info.getKeywords() ) + "' " +
- "pdf:Producer='" + fixNull( info.getProducer() ) + "'></rdf:Description>\n" +
- " <rdf:Description rdf:about='' xmlns:xap='http://ns.adobe.com/xap/1.0/' " +
- "xap:ModifyDate='" + fixNull( info.getModificationDate() ) + "' " +
- "xap:CreateDate='" + fixNull( info.getCreationDate() ) + "' " +
- "xap:CreatorTool='" + fixNull( info.getCreator() ) + "' " +
- "xap:MetadataDate='" + fixNull( new GregorianCalendar() )+ "'>\n" +
- " </rdf:Description>\n" +
- " <rdf:Description rdf:about='' xmlns:dc='http://purl.org/dc/elements/1.1/' " +
- "dc:format='application/pdf'>\n" +
- " <dc:title>\n" +
- " <rdf:Alt>\n" +
- " <rdf:li xml:lang='x-default'>" + fixNull( info.getTitle() ) +"</rdf:li>\n" +
- " </rdf:Alt>\n" +
- " </dc:title>\n" +
- " <dc:creator>\n" +
- " <rdf:Seq>\n" +
- " <rdf:li>PDFBox.org</rdf:li>\n" +
- " </rdf:Seq>\n" +
- " </dc:creator>\n" +
- " <dc:description>\n" +
- " <rdf:Alt>\n" +
- " <rdf:li xml:lang='x-default'>" + fixNull( info.getSubject() ) +"</rdf:li>\n" +
- " </rdf:Alt>\n" +
- " </dc:description>\n" +
- " </rdf:Description>\n" +
- " </rdf:RDF>\n" +
- "</x:xmpmeta>\n" );
-
- //xmp spec says we should put padding, so that the metadata can be appended to
- //in place
- xmp.append( PADDING );
- xmp.append( PADDING );
- xmp.append( PADDING );
- xmp.append( "\n<?xpacket end='w'?>" );
- ByteArrayInputStream mdInput = new ByteArrayInputStream( xmp.toString().getBytes() );
- PDMetadata metadataStream = new PDMetadata(document, mdInput, false );
- catalog.setMetadata( metadataStream );
-
-
- document.save( args[1] );
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- private static String fixNull( String string )
- {
- return string == null ? "" : string;
- }
-
- private static String fixNull( Calendar cal )
- {
- return cal == null ? "" : DateConverter.toISO8601( cal );
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.AddMetadata <input-pdf> <output-pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/CreateBlankPDF.java b/src/main/java/org/pdfbox/examples/pdmodel/CreateBlankPDF.java
deleted file mode 100644
index 6d942ac..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/CreateBlankPDF.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdfwriter.COSWriter;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-/**
- * This will create a blank PDF and write the contents to a file.
- *
- * usage: java org.pdfbox.examples.pdmodel.CreateBlankPDF &lt;outputfile.pdf&gt;
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.7 $
- */
-public class CreateBlankPDF
-{
-
- /**
- * This will create a blank PDF and write the contents to a file.
- *
- * @param file The name of the file to write to.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error while generating the document.
- */
- public void create( String file ) throws IOException, COSVisitorException
- {
- PDDocument document = null;
- FileOutputStream output = null;
- COSWriter writer = null;
- try
- {
- document = new PDDocument();
- //Every document requires at least one page, so we will add one
- //blank page.
- PDPage blankPage = new PDPage();
- document.addPage( blankPage );
- output = new FileOutputStream( file );
- writer = new COSWriter( output );
- writer.write( document.getDocument() );
- }
- finally
- {
- if( writer != null )
- {
- writer.close();
- }
- if( output != null )
- {
- output.close();
- }
- if( document != null )
- {
- document.close();
- }
- }
- }
-
- /**
- * This will create a blank document.
- *
- * @param args The command line arguments.
- *
- * @throws IOException If there is an error writing the document data.
- * @throws COSVisitorException If there is an error generating the data.
- */
- public static void main( String[] args ) throws IOException, COSVisitorException
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- CreateBlankPDF creator = new CreateBlankPDF();
- creator.create( args[0] );
- }
- }
-
- /**
- * This will print the usage of this class.
- */
- private static void usage()
- {
- System.err.println( "usage: java org.pdfbox.examples.pdmodel.CreateBlankPDF <outputfile.pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/CreateBookmarks.java b/src/main/java/org/pdfbox/examples/pdmodel/CreateBookmarks.java
deleted file mode 100644
index 88c09fb..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/CreateBookmarks.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.pdmodel.interactive.documentnavigation.destination.PDPageFitWidthDestination;
-import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
-import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
-
-import java.util.List;
-
-/**
- * This is an example on how to add bookmarks to a PDF document. It simply
- * adds 1 bookmark for every page.
- *
- * Usage: java org.pdfbox.examples.pdmodel.CreateBookmarks &lt;input-pdf&gt; &lt;output-pdf&gt;
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.1 $
- */
-public class CreateBookmarks
-{
- private CreateBookmarks()
- {
- //utility class
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- try
- {
- document = PDDocument.load( args[0] );
- if( document.isEncrypted() )
- {
- System.err.println( "Error: Cannot add bookmarks to encrypted document." );
- System.exit( 1 );
- }
- PDDocumentOutline outline = new PDDocumentOutline();
- document.getDocumentCatalog().setDocumentOutline( outline );
- PDOutlineItem pagesOutline = new PDOutlineItem();
- pagesOutline.setTitle( "All Pages" );
- outline.appendChild( pagesOutline );
- List pages = document.getDocumentCatalog().getAllPages();
- for( int i=0; i<pages.size(); i++ )
- {
- PDPage page = (PDPage)pages.get( i );
- PDPageFitWidthDestination dest = new PDPageFitWidthDestination();
- dest.setPage( page );
- PDOutlineItem bookmark = new PDOutlineItem();
- bookmark.setDestination( dest );
- bookmark.setTitle( "Page " + (i+1) );
- pagesOutline.appendChild( bookmark );
- }
- pagesOutline.openNode();
- outline.openNode();
-
- document.save( args[1] );
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.CreateBookmarks <input-pdf> <output-pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/EmbeddedFiles.java b/src/main/java/org/pdfbox/examples/pdmodel/EmbeddedFiles.java
deleted file mode 100644
index 86bc447..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/EmbeddedFiles.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/**
- * Copyright (c) 2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentNameDictionary;
-import org.pdfbox.pdmodel.PDEmbeddedFilesNameTreeNode;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.common.filespecification.PDComplexFileSpecification;
-import org.pdfbox.pdmodel.common.filespecification.PDEmbeddedFile;
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-
-import org.pdfbox.pdmodel.font.PDFont;
-import org.pdfbox.pdmodel.font.PDType1Font;
-
-
-/**
- * This is an example that creates a simple document and embeds a file into it..
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.1 $
- */
-public class EmbeddedFiles
-{
- /**
- * Constructor.
- */
- public EmbeddedFiles()
- {
- super();
- }
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt( String file) throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage( page );
- PDFont font = PDType1Font.HELVETICA_BOLD;
-
- PDPageContentStream contentStream = new PDPageContentStream(doc, page);
- contentStream.beginText();
- contentStream.setFont( font, 12 );
- contentStream.moveTextPositionByAmount( 100, 700 );
- contentStream.drawString( "Go to Document->File Attachments to View Embedded Files" );
- contentStream.endText();
- contentStream.close();
-
- //embedded files are stored in a named tree
- PDEmbeddedFilesNameTreeNode efTree = new PDEmbeddedFilesNameTreeNode();
-
-
- //first create the file specification, which holds the embedded file
- PDComplexFileSpecification fs = new PDComplexFileSpecification();
- fs.setFile( "Test.txt" );
- //create a dummy file stream, this would probably normally be a FileInputStream
- byte[] data = "This is the contents of the embedded file".getBytes();
- ByteArrayInputStream fakeFile =
- new ByteArrayInputStream( data );
- PDEmbeddedFile ef = new PDEmbeddedFile(doc, fakeFile );
- //now lets some of the optional parameters
- ef.setSubtype( "test/plain" );
- ef.setSize( data.length );
- ef.setCreationDate( new GregorianCalendar() );
- fs.setEmbeddedFile( ef );
-
- //now add the entry to the embedded file tree and set in the document.
- Map efMap = new HashMap();
- efMap.put( "My first attachment", fs );
- efTree.setNames( efMap );
- PDDocumentNameDictionary names = new PDDocumentNameDictionary( doc.getDocumentCatalog() );
- names.setEmbeddedFiles( efTree );
- doc.getDocumentCatalog().setNames( names );
-
-
- doc.save( file );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document with an embedded file.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- EmbeddedFiles app = new EmbeddedFiles();
- try
- {
- if( args.length != 1 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorld.java b/src/main/java/org/pdfbox/examples/pdmodel/HelloWorld.java
deleted file mode 100644
index 9bceca7..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorld.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/**
- * Copyright (c) 2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.IOException;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-
-import org.pdfbox.pdmodel.font.PDFont;
-import org.pdfbox.pdmodel.font.PDType1Font;
-
-
-/**
- * This is an example that creates a simple document.
- *
- * The example is taken from the pdf file format specification.
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.5 $
- */
-public class HelloWorld
-{
- /**
- * Constructor.
- */
- public HelloWorld()
- {
- super();
- }
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- * @param message The message to write in the file.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt( String file, String message) throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage( page );
- PDFont font = PDType1Font.HELVETICA_BOLD;
-
- PDPageContentStream contentStream = new PDPageContentStream(doc, page);
- contentStream.beginText();
- contentStream.setFont( font, 12 );
- contentStream.moveTextPositionByAmount( 100, 700 );
- contentStream.drawString( message );
- contentStream.endText();
- contentStream.close();
- doc.save( file );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- HelloWorld app = new HelloWorld();
- try
- {
- if( args.length != 2 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <output-file> <Message>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldTTF.java b/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldTTF.java
deleted file mode 100644
index 16b1423..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldTTF.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-
-package org.pdfbox.examples.pdmodel;
-
-import java.io.IOException;
-
-import org.pdfbox.exceptions.COSVisitorException;
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-import org.pdfbox.pdmodel.font.PDFont;
-import org.pdfbox.pdmodel.font.PDTrueTypeFont;
-
-/**
- * This is an example that creates a simple document
- * with a ttf-font.
- *
- * @author <a href="mailto:m.g.n@gmx.de">Michael Niedermair</a>
- * @version $Revision: 1.2 $
- */
-public class HelloWorldTTF
-{
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- * @param message The message to write in the file.
- * @param fontfile The ttf-font file.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt(final String file, final String message,
- final String fontfile) throws IOException, COSVisitorException
- {
-
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage(page);
- PDFont font = PDTrueTypeFont.loadTTF(doc, fontfile);
-
- PDPageContentStream contentStream = new PDPageContentStream(doc,
- page);
- contentStream.beginText();
- contentStream.setFont(font, 12);
- contentStream.moveTextPositionByAmount(100, 700);
- contentStream.drawString(message);
- contentStream.endText();
- contentStream.close();
- doc.save(file);
- System.out.println(file + " created!");
- }
- finally
- {
- if (doc != null)
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document
- * with a ttf-font.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
-
- HelloWorldTTF app = new HelloWorldTTF();
- try
- {
- if (args.length != 3)
- {
- app.usage();
- }
- else
- {
- app.doIt(args[0], args[1], args[2]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println("usage: " + this.getClass().getName()
- + " <output-file> <Message> <ttf-file>");
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldType1AfmPfb.java b/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldType1AfmPfb.java
deleted file mode 100644
index 2457a2e..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/HelloWorldType1AfmPfb.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-
-package org.pdfbox.examples.pdmodel;
-
-import java.io.IOException;
-
-import org.pdfbox.exceptions.COSVisitorException;
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-import org.pdfbox.pdmodel.font.PDFont;
-import org.pdfbox.pdmodel.font.PDType1AfmPfbFont;
-
-/**
- * This is an example that creates a simple document
- * with a Type 1 font (afm + pfb).
- *
- * @author <a href="mailto:m.g.n@gmx.de">Michael Niedermair</a>
- * @version $Revision: 1.2 $
- */
-public class HelloWorldType1AfmPfb
-{
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- * @param message The message to write in the file.
- * @param fontfile The ttf-font file.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt(final String file, final String message,
- final String fontfile) throws IOException, COSVisitorException
- {
-
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage(page);
- PDFont font = new PDType1AfmPfbFont(doc,fontfile);
-
- PDPageContentStream contentStream = new PDPageContentStream(doc,
- page);
- contentStream.beginText();
- contentStream.setFont(font, 12);
- contentStream.moveTextPositionByAmount(100, 700);
- contentStream.drawString(message);
- contentStream.endText();
- contentStream.close();
- doc.save(file);
- System.out.println(file + " created!");
- }
- finally
- {
- if (doc != null)
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document
- * with a ttf-font.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
-
- HelloWorldType1AfmPfb app = new HelloWorldType1AfmPfb();
- try
- {
- if (args.length != 3)
- {
- app.usage();
- }
- else
- {
- app.doIt(args[0], args[1], args[2]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println("usage: " + this.getClass().getName()
- + " <output-file> <Message> <afm-file>");
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/ImageToPDF.java b/src/main/java/org/pdfbox/examples/pdmodel/ImageToPDF.java
deleted file mode 100644
index 9faf79d..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/ImageToPDF.java
+++ /dev/null
@@ -1,146 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.RandomAccessFile;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-
-import org.pdfbox.pdmodel.graphics.xobject.PDCcitt;
-import org.pdfbox.pdmodel.graphics.xobject.PDJpeg;
-import org.pdfbox.pdmodel.graphics.xobject.PDXObjectImage;
-
-
-/**
- * This is an example that creates a simple document.
- *
- * The example is taken from the pdf file format specification.
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.5 $
- */
-public class ImageToPDF
-{
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- * @param image The filename of the image to put in the PDF.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void createPDFFromImage( String file, String image) throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage( page );
-
- PDXObjectImage ximage = null;
- if( image.toLowerCase().endsWith( ".jpg" ) )
- {
- ximage = new PDJpeg(doc, new FileInputStream( image ) );
- }
- else if (image.toLowerCase().endsWith(".tif") || image.toLowerCase().endsWith(".tiff"))
- {
- ximage = new PDCcitt(doc, new RandomAccessFile(new File(image),"r"));
- }
- else
- {
- //BufferedImage awtImage = ImageIO.read( new File( image ) );
- //ximage = new PDPixelMap(doc, awtImage);
- throw new IOException( "Image type not supported:" + image );
- }
- PDPageContentStream contentStream = new PDPageContentStream(doc, page);
-
- contentStream.drawImage( ximage, 20, 20 );
-
- contentStream.close();
- doc.save( file );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a PDF document with a single image on it.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- ImageToPDF app = new ImageToPDF();
- try
- {
- if( args.length != 2 )
- {
- app.usage();
- }
- else
- {
- app.createPDFFromImage( args[0], args[1] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <output-file> <image>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/PrintBookmarks.java b/src/main/java/org/pdfbox/examples/pdmodel/PrintBookmarks.java
deleted file mode 100644
index 0a1a647..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/PrintBookmarks.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDDocumentOutline;
-import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineItem;
-import org.pdfbox.pdmodel.interactive.documentnavigation.outline.PDOutlineNode;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-
-/**
- * This is an example on how to access the bookmarks that are part of a pdf document.
- *
- * Usage: java org.pdfbox.examples.pdmodel.PrintBookmarks &lt;input-pdf&gt;
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.1 $
- */
-public class PrintBookmarks
-{
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- FileInputStream file = null;
- try
- {
- file = new FileInputStream( args[0] );
- PDFParser parser = new PDFParser( file );
- parser.parse();
- document = parser.getPDDocument();
- if( document.isEncrypted() )
- {
- try
- {
- document.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: Document is encrypted with a password." );
- System.exit( 1 );
- }
- }
- PrintBookmarks meta = new PrintBookmarks();
- PDDocumentOutline outline = document.getDocumentCatalog().getDocumentOutline();
- if( outline != null )
- {
- meta.printBookmark( outline, "" );
- }
- else
- {
- System.out.println( "This document does not contain any bookmarks" );
- }
- }
- finally
- {
- if( file != null )
- {
- file.close();
- }
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.PrintBookmarks <input-pdf>" );
- }
-
- /**
- * This will print the documents bookmarks to System.out.
- *
- * @param bookmark The bookmark to print out.
- * @param indentation A pretty printing parameter
- *
- * @throws IOException If there is an error getting the page count.
- */
- public void printBookmark( PDOutlineNode bookmark, String indentation ) throws IOException
- {
- PDOutlineItem current = bookmark.getFirstChild();
- while( current != null )
- {
- System.out.println( indentation + current.getTitle() );
- printBookmark( current, indentation + " " );
- current = current.getNextSibling();
- }
-
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/PrintDocumentMetaData.java b/src/main/java/org/pdfbox/examples/pdmodel/PrintDocumentMetaData.java
deleted file mode 100644
index c096113..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/PrintDocumentMetaData.java
+++ /dev/null
@@ -1,165 +0,0 @@
-/**
- * Copyright (c) 2003-2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentCatalog;
-import org.pdfbox.pdmodel.PDDocumentInformation;
-import org.pdfbox.pdmodel.common.PDMetadata;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-
-import java.text.SimpleDateFormat;
-
-import java.util.Calendar;
-
-/**
- * This is an example on how to get a documents metadata information.
- *
- * Usage: java org.pdfbox.examples.pdmodel.PrintDocumentMetaData &lt;input-pdf&gt;
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.10 $
- */
-public class PrintDocumentMetaData
-{
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- FileInputStream file = null;
- try
- {
- file = new FileInputStream( args[0] );
- PDFParser parser = new PDFParser( file );
- parser.parse();
- document = parser.getPDDocument();
- if( document.isEncrypted() )
- {
- try
- {
- document.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: Document is encrypted with a password." );
- System.exit( 1 );
- }
- }
- PrintDocumentMetaData meta = new PrintDocumentMetaData();
- meta.printMetadata( document );
- }
- finally
- {
- if( file != null )
- {
- file.close();
- }
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.PrintDocumentMetaData <input-pdf>" );
- }
-
- /**
- * This will print the documents data to System.out.
- *
- * @param document The document to get the metadata from.
- *
- * @throws IOException If there is an error getting the page count.
- */
- public void printMetadata( PDDocument document ) throws IOException
- {
- PDDocumentInformation info = document.getDocumentInformation();
- PDDocumentCatalog cat = document.getDocumentCatalog();
- PDMetadata metadata = cat.getMetadata();
- System.out.println( "Page Count=" + document.getNumberOfPages() );
- System.out.println( "Title=" + info.getTitle() );
- System.out.println( "Author=" + info.getAuthor() );
- System.out.println( "Subject=" + info.getSubject() );
- System.out.println( "Keywords=" + info.getKeywords() );
- System.out.println( "Creator=" + info.getCreator() );
- System.out.println( "Producer=" + info.getProducer() );
- System.out.println( "Creation Date=" + formatDate( info.getCreationDate() ) );
- System.out.println( "Modification Date=" + formatDate( info.getModificationDate() ) );
- System.out.println( "Trapped=" + info.getTrapped() );
- if( metadata != null )
- {
- System.out.println( "Metadata=" + metadata.getInputStreamAsString() );
- }
- }
-
- /**
- * This will format a date object.
- *
- * @param date The date to format.
- *
- * @return A string representation of the date.
- */
- private String formatDate( Calendar date )
- {
- String retval = null;
- if( date != null )
- {
- SimpleDateFormat formatter = new SimpleDateFormat();
- retval = formatter.format( date.getTime() );
- }
-
- return retval;
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/RemoveFirstPage.java b/src/main/java/org/pdfbox/examples/pdmodel/RemoveFirstPage.java
deleted file mode 100644
index 2b7242b..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/RemoveFirstPage.java
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.pdmodel.PDDocument;
-
-import java.io.IOException;
-
-/**
- * This is an example on how to remove pages from a PDF document.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.4 $
- */
-public class RemoveFirstPage
-{
- private RemoveFirstPage()
- {
- //utility class, should not be instantiated.
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- try
- {
- document = PDDocument.load( args[0] );
- if( document.isEncrypted() )
- {
- throw new IOException( "Encrypted documents are not supported for this example" );
- }
- if( document.getNumberOfPages() <= 1 )
- {
- throw new IOException( "Error: A PDF document must have at least one page, " +
- "cannot remove the last page!");
- }
- document.removePage( 0 );
- document.save( args[1] );
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.RemoveFirstPage <input-pdf> <output-pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/ReplaceString.java b/src/main/java/org/pdfbox/examples/pdmodel/ReplaceString.java
deleted file mode 100644
index bbf8688..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/ReplaceString.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.List;
-
-import org.pdfbox.cos.COSArray;
-import org.pdfbox.cos.COSString;
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdfparser.PDFStreamParser;
-import org.pdfbox.pdfwriter.ContentStreamWriter;
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.common.PDStream;
-
-import org.pdfbox.util.PDFOperator;
-
-
-/**
- * This is an example that will replace a string in a PDF with a new one.
- *
- * The example is taken from the pdf file format specification.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.2 $
- */
-public class ReplaceString
-{
- /**
- * Constructor.
- */
- public ReplaceString()
- {
- super();
- }
-
- /**
- * Locate a string in a PDF and replace it with a new string.
- *
- * @param inputFile The PDF to open.
- * @param outputFile The PDF to write to.
- * @param strToFind The string to find in the PDF document.
- * @param message The message to write in the file.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt( String inputFile, String outputFile, String strToFind, String message)
- throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = PDDocument.load( inputFile );
- List pages = doc.getDocumentCatalog().getAllPages();
- for( int i=0; i<pages.size(); i++ )
- {
- PDPage page = (PDPage)pages.get( i );
- PDStream contents = page.getContents();
- PDFStreamParser parser = new PDFStreamParser(contents.getStream() );
- parser.parse();
- List tokens = parser.getTokens();
- for( int j=0; j<tokens.size(); j++ )
- {
- Object next = tokens.get( j );
- if( next instanceof PDFOperator )
- {
- PDFOperator op = (PDFOperator)next;
- //Tj and TJ are the two operators that display
- //strings in a PDF
- if( op.getOperation().equals( "Tj" ) )
- {
- //Tj takes one operator and that is the string
- //to display so lets update that operator
- COSString previous = (COSString)tokens.get( j-1 );
- String string = previous.getString();
- string = string.replaceFirst( strToFind, message );
- previous.reset();
- previous.append( string.getBytes() );
- }
- else if( op.getOperation().equals( "TJ" ) )
- {
- COSArray previous = (COSArray)tokens.get( j-1 );
- for( int k=0; k<previous.size(); k++ )
- {
- Object arrElement = previous.getObject( k );
- if( arrElement instanceof COSString )
- {
- COSString cosString = (COSString)arrElement;
- String string = cosString.getString();
- string = string.replaceFirst( strToFind, message );
- cosString.reset();
- cosString.append( string.getBytes() );
- }
- }
- }
- }
- }
- //now that the tokens are updated we will replace the
- //page content stream.
- PDStream updatedStream = new PDStream(doc);
- OutputStream out = updatedStream.createOutputStream();
- ContentStreamWriter tokenWriter = new ContentStreamWriter(out);
- tokenWriter.writeTokens( tokens );
- page.setContents( updatedStream );
- }
- doc.save( outputFile );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will open a PDF and replace a string if it finds it.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- ReplaceString app = new ReplaceString();
- try
- {
- if( args.length != 4 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1], args[2], args[3] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() +
- " <input-file> <output-file> <search-string> <Message>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/RubberStamp.java b/src/main/java/org/pdfbox/examples/pdmodel/RubberStamp.java
deleted file mode 100644
index 158e0f8..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/RubberStamp.java
+++ /dev/null
@@ -1,113 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.pdmodel.common.PDRectangle;
-import org.pdfbox.pdmodel.interactive.annotation.PDAnnotationRubberStamp;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This is an example on how to add annotations to pages of a PDF document.
- *
- * @author Paul King
- * @version $Revision: 1.1 $
- */
-public class RubberStamp
-{
- private RubberStamp()
- {
- //utility class, should not be instantiated.
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- try
- {
- document = PDDocument.load( args[0] );
- if( document.isEncrypted() )
- {
- throw new IOException( "Encrypted documents are not supported for this example" );
- }
- List allpages = new ArrayList();
- document.getDocumentCatalog().getPages().getAllKids(allpages);
-
- for (int i=0; i < allpages.size(); i++)
- {
- PDPage apage = (PDPage) allpages.get(i);
- List annotations = apage.getAnnotations();
-
- PDAnnotationRubberStamp rs = new PDAnnotationRubberStamp();
- rs.setName(PDAnnotationRubberStamp.NAME_TOP_SECRET);
- rs.setRectangle(new PDRectangle(100,100));
- rs.setContents("A top secret note");
-
- annotations.add(rs);
- }
-
- document.save( args[1] );
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.RubberStamp <input-pdf> <output-pdf>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/ShowColorBoxes.java b/src/main/java/org/pdfbox/examples/pdmodel/ShowColorBoxes.java
deleted file mode 100644
index f936642..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/ShowColorBoxes.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/**
- * Copyright (c) 2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.pdmodel;
-
-import java.awt.Color;
-import java.io.IOException;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-
-/**
- * This is an example that creates a simple document.
- *
- * The example is taken from the pdf file format specification.
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.1 $
- */
-public class ShowColorBoxes
-{
- /**
- * Constructor.
- */
- public ShowColorBoxes()
- {
- super();
- }
-
- /**
- * create the second sample document from the PDF file format specification.
- *
- * @param file The file to write the PDF to.
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error writing the PDF.
- */
- public void doIt( String file) throws IOException, COSVisitorException
- {
- // the document
- PDDocument doc = null;
- try
- {
- doc = new PDDocument();
-
- PDPage page = new PDPage();
- doc.addPage( page );
-
- PDPageContentStream contentStream = new PDPageContentStream(doc, page);
- //first fill the entire background with cyan
- contentStream.setNonStrokingColor( Color.CYAN );
- contentStream.fillRect( 0,0, page.findMediaBox().getWidth(), page.findMediaBox().getHeight() );
-
- //then draw a red box in the lower left hand corner
- contentStream.setNonStrokingColor( Color.RED );
- contentStream.fillRect( 10, 10, 100, 100 );
-
- contentStream.close();
- doc.save( file );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will create a hello world PDF document.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- */
- public static void main(String[] args)
- {
- ShowColorBoxes app = new ShowColorBoxes();
- try
- {
- if( args.length != 1 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/pdmodel/package.html b/src/main/java/org/pdfbox/examples/pdmodel/package.html
deleted file mode 100644
index b9beefa..0000000
--- a/src/main/java/org/pdfbox/examples/pdmodel/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-These examples show how to use the classes in the PDModel package.
-</body>
-</html>
diff --git a/src/main/java/org/pdfbox/examples/persistence/AppendAndFillDoc.java b/src/main/java/org/pdfbox/examples/persistence/AppendAndFillDoc.java
deleted file mode 100644
index 01b8cf6..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/AppendAndFillDoc.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.persistence;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.FileInputStream;
-
-import java.util.Iterator;
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdfwriter.COSWriter;
-
-import org.pdfbox.cos.COSDocument;
-import org.pdfbox.cos.COSString;
-import org.pdfbox.cos.COSBase;
-import org.pdfbox.cos.COSDictionary;
-import org.pdfbox.cos.COSObject;
-import org.pdfbox.cos.COSName;
-import org.pdfbox.cos.COSArray;
-import org.pdfbox.cos.COSNumber;
-import org.pdfbox.cos.COSInteger;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-/**
- * This concatenates two documents with fields and fills the fields in the two templates using different
- * values.
- *
- * @author Michael Traut
- * @version $Revision: 1.6 $
- */
-public class AppendAndFillDoc
-{
- /**
- * Constructor.
- */
- public AppendAndFillDoc()
- {
- super();
- }
-
- /**
- * Append all pages from source to destination.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param destination the document to receive the pages
- * @param source the document originating the new pages
- *
- */
- public void appendDocument(COSDocument destination, COSDocument source)
- {
- COSDictionary pages2 = getPages(source);
- COSArray kids = (COSArray)pages2.getItem(COSName.getPDFName("Kids"));
- for (Iterator i = kids.iterator(); i.hasNext();)
- {
- COSDictionary page = (COSDictionary)((COSObject)i.next()).getObject();
- appendPage(destination, page);
- }
- }
- /**
- * append a page dict to destination.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param destination the document to receive the page
- * @param page the page to append to the document
- *
- */
- public void appendPage(COSDocument destination, COSDictionary page)
- {
- // get the parent object (pages dictionary)
- COSDictionary pages = getPages(destination);
- // and set in the page object
- page.setItem(COSName.PARENT, pages);
- // add new page to kids entry in the pages dictionary
- COSArray kids = (COSArray) pages.getItem(COSName.getPDFName("Kids"));
- kids.add(page);
- // and increase count
- COSNumber count = (COSNumber) pages.getItem(COSName.COUNT);
- pages.setItem(COSName.COUNT, new COSInteger(count.intValue() + 1));
- }
- /**
- * concat two pdf documents and fill fields in both templates
- * this is a bit tricky as one has to rename the fields if we use the same template two times.
- * here we don't user a clever algorithm to create dynamic fieldnames - this is left to the user..
- *
- * @param in1 The first template file
- * @param in2 The second template file
- * @param out The created fiel with all pages from document one and document two
- * @param name1 The name of the PDF field (FDF field) in the first template
- * @param value1 The value to be used for the field in the first template
- * @param name2 The name of the PDF field (FDF field) in the second template
- * @param value2 The value to be used for the field in the second template
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error generating the PDF document.
- */
- public void doIt( String in1,
- String in2,
- String out,
- String name1,
- String value1,
- String name2,
- String value2) throws IOException, COSVisitorException
- {
- COSDocument doc1 = null;
- COSDocument doc2 = null;
- InputStream is1 = null;
- InputStream is2 = null;
- PDFParser parser1 = null;
- PDFParser parser2 = null;
-
- OutputStream os = null;
- COSWriter writer = null;
- try
- {
- is1 = new FileInputStream(in1);
- parser1 = new PDFParser(is1);
- parser1.parse();
- doc1 = parser1.getDocument();
-
- is2 = new FileInputStream(in2);
- parser2 = new PDFParser(is2);
- parser2.parse();
- doc2 = parser2.getDocument();
-
- setField(doc1, "doc1", new COSString(name1), new COSString(value1));
- setField(doc2, "doc2", new COSString(name2), new COSString(value2));
-
- appendDocument(doc1, doc2);
-
- os = new FileOutputStream(out);
- writer = new COSWriter(os);
- writer.write(doc1);
- }
- finally
- {
- is1.close();
- doc1.close();
-
- is2.close();
- doc2.close();
-
- os.close();
- writer.close();
- }
- }
-
- /**
- * Lookup the pages dictionary in a document.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param doc the document where the pages dict is searched
- *
- * @return The Pages dictionary.
- */
- public COSDictionary getPages(COSDocument doc)
- {
- // todo should access via catalog instead!
- for (Iterator i = doc.getObjects().iterator(); i.hasNext();)
- {
- COSObject obj = (COSObject) i.next();
- COSBase base = obj.getObject();
- if (base instanceof COSDictionary)
- {
- COSDictionary dict = (COSDictionary) base;
- COSBase type = dict.getItem(COSName.TYPE);
- if (type != null && type.equals(COSName.getPDFName("Pages")))
- {
- return dict;
- }
- }
- }
- return null;
- }
- /**
- * This will concat two pdf documents and fill fields in both.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- AppendAndFillDoc app = new AppendAndFillDoc();
- try
- {
- if( args.length != 7 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1], args[2], args[3], args[4], args[5], args[6]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- /**
- * lookup and fill the field.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param doc the document where the field resides
- * @param prefix a prefix to use to make the field name unique in the new document
- * @param name the name of the PDF Annotation field
- * @param value The desired value to be used for the field
- *
- */
- public void setField(COSDocument doc, String prefix, COSString name, COSString value)
- {
- for (Iterator i = doc.getObjects().iterator(); i.hasNext();)
- {
- COSObject obj = (COSObject) i.next();
- COSBase base = obj.getObject();
- if (base instanceof COSDictionary)
- {
- COSDictionary dict = (COSDictionary) base;
- COSBase type = dict.getItem(COSName.TYPE);
- if (type != null && type.equals(COSName.getPDFName("Annot")))
- {
- COSBase subtype = dict.getItem(COSName.getPDFName("Subtype"));
- if (subtype != null && subtype.equals(COSName.getPDFName("Widget")))
- {
- // we found the field
- COSBase fname = dict.getItem(COSName.getPDFName("T"));
- if (fname != null && fname.equals(name))
- {
- dict.setItem(COSName.getPDFName("V"), value);
- dict.setItem(COSName.getPDFName("T"), new COSString(prefix + name.getString()));
- }
- }
- }
- }
- }
- }
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() +
- " <input-file1> <input-file2> <output-file> <name1> <value1> <name2> <value2>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/persistence/AppendDoc.java b/src/main/java/org/pdfbox/examples/persistence/AppendDoc.java
deleted file mode 100644
index 68e254c..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/AppendDoc.java
+++ /dev/null
@@ -1,357 +0,0 @@
-/**
- * Copyright (c) 2003-2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.persistence;
-
-import java.io.IOException;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.pdfbox.cos.COSBase;
-import org.pdfbox.cos.COSDictionary;
-import org.pdfbox.cos.COSName;
-import org.pdfbox.cos.COSArray;
-import org.pdfbox.cos.COSNumber;
-import org.pdfbox.cos.COSInteger;
-import org.pdfbox.cos.COSObject;
-import org.pdfbox.cos.COSStream;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDDocumentInformation;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.common.PDStream;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-/**
- * This example concatenates two documents and writes the result.
- *
- * @author Michael Traut
- * @version $Revision: 1.17 $
- */
-public class AppendDoc
-{
- /**
- * Constructor.
- */
- public AppendDoc()
- {
- super();
- }
- /**
- * append all pages from source to destination.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param destination the document to receive the pages
- * @param source the document originating the new pages
- *
- * @throws IOException If there is an error accessing data from either document.
- */
- public void appendDocument(PDDocument destination, PDDocument source) throws IOException
- {
- if( destination.isEncrypted() )
- {
- throw new IOException( "Error: destination PDF is encrypted, can't append encrypted PDF documents." );
- }
- if( source.isEncrypted() )
- {
- throw new IOException( "Error: destination PDF is encrypted, can't append encrypted PDF documents." );
- }
- PDDocumentInformation destInfo = destination.getDocumentInformation();
- PDDocumentInformation srcInfo = source.getDocumentInformation();
- destInfo.getDictionary().mergeInto( srcInfo.getDictionary() );
-
- COSDictionary destTrailer = destination.getDocument().getTrailer();
- COSDictionary destRoot = (COSDictionary)destTrailer.getDictionaryObject( COSName.ROOT );
-
- COSDictionary srcTrailer = source.getDocument().getTrailer();
- COSDictionary srcRoot = (COSDictionary)srcTrailer.getDictionaryObject( COSName.ROOT );
-
- COSName openAction = COSName.getPDFName( "OpenAction" );
- if( destRoot.getDictionaryObject( openAction ) == null )
- {
- COSBase open = srcRoot.getDictionaryObject( openAction );
- if( open != null )
- {
- destRoot.setItem( openAction, copyStreamsIntoDocument( destination, open ) );
- }
- }
-
- COSName acroForm = COSName.getPDFName( "AcroForm" );
- COSDictionary destAcroForm = (COSDictionary)destRoot.getDictionaryObject( acroForm );
- COSDictionary srcAcroForm = (COSDictionary)srcRoot.getDictionaryObject( acroForm );
- if( srcAcroForm != null )
- {
- if( destAcroForm == null )
- {
- destRoot.setItem( acroForm, copyStreamsIntoDocument( destination, srcAcroForm ) );
- }
- else
- {
- //****************need to do proper merge***************
- //destAcroForm.addAll( (COSArray)copyStreamsIntoDocument( destination, srcAcroForm ) );
- }
- }
-
- COSName threads = COSName.getPDFName( "Threads" );
- COSArray destThreads = (COSArray)destRoot.getDictionaryObject( threads );
- COSArray srcThreads = (COSArray)srcRoot.getDictionaryObject( threads );
- if( srcThreads != null )
- {
- if( destThreads == null )
- {
- destRoot.setItem( threads, copyStreamsIntoDocument( destination, srcThreads ) );
- }
- else
- {
- destThreads.addAll( (COSArray)copyStreamsIntoDocument( destination, srcThreads ) );
- }
- }
-
- COSName names = COSName.getPDFName( "Names" );
- COSDictionary destNames = (COSDictionary)destRoot.getDictionaryObject( names );
- COSDictionary srcNames = (COSDictionary)srcRoot.getDictionaryObject( names );
- if( srcNames != null )
- {
- if( destNames == null )
- {
- destRoot.setItem( names, copyStreamsIntoDocument( destination, srcNames ) );
- }
- else
- {
- //warning, potential for collision here!!
- destNames.mergeInto( (COSDictionary)copyStreamsIntoDocument( destination, srcNames ) );
- }
- }
-
- COSName outlines = COSName.getPDFName( "Outlines" );
- COSDictionary destOutlines = (COSDictionary)destRoot.getDictionaryObject( outlines );
- COSDictionary srcOutlines = (COSDictionary)srcRoot.getDictionaryObject( outlines );
- if( srcOutlines != null && destOutlines == null )
- {
- destRoot.setItem( outlines, copyStreamsIntoDocument( destination, srcOutlines ) );
- }
-
- COSName pagemode = COSName.getPDFName( "PageMode" );
- COSBase srcPageMode = srcRoot.getDictionaryObject( pagemode );
- if( srcOutlines != null && destOutlines == null )
- {
- destRoot.setItem( pagemode, copyStreamsIntoDocument( destination, srcPageMode ) );
- }
-
- COSName pageLabels = COSName.getPDFName( "PageLabels" );
- COSDictionary destLabels = (COSDictionary)destRoot.getDictionaryObject( pageLabels );
- COSDictionary srcLabels = (COSDictionary)srcRoot.getDictionaryObject( pageLabels );
- if( srcLabels != null )
- {
- int destPageCount = destination.getNumberOfPages();
- COSArray destNums = null;
- if( destLabels == null )
- {
- destLabels = new COSDictionary();
- destNums = new COSArray();
- destLabels.setItem( COSName.getPDFName( "Nums" ), destNums );
- destRoot.setItem( pageLabels, destLabels );
- }
- else
- {
- destNums = (COSArray)destLabels.getDictionaryObject( COSName.getPDFName( "Nums" ) );
- }
- COSArray srcNums = (COSArray)srcLabels.getDictionaryObject( COSName.getPDFName( "Nums" ) );
- for( int i=0; i<srcNums.size(); i+=2 )
- {
- COSNumber labelIndex = (COSNumber)srcNums.getObject( i );
- long labelIndexValue = labelIndex.intValue();
- destNums.add( new COSInteger( labelIndexValue + destPageCount ) );
- destNums.add( copyStreamsIntoDocument( destination, srcNums.getObject( i+1 ) ) );
- }
- }
-
- COSName metadata = COSName.getPDFName( "Metadata" );
- COSStream destMetadata = (COSStream)destRoot.getDictionaryObject( metadata );
- COSStream srcMetadata = (COSStream)srcRoot.getDictionaryObject( metadata );
- if( destMetadata == null && srcMetadata != null )
- {
- PDStream newStream = new PDStream( destination, srcMetadata.getUnfilteredStream(), false );
- newStream.getStream().mergeInto( srcMetadata );
- newStream.addCompression();
- destRoot.setItem( metadata, newStream );
- }
-
- //finally append the pages
- List pages = source.getDocumentCatalog().getAllPages();
- Iterator pageIter = pages.iterator();
- while( pageIter.hasNext() )
- {
- PDPage page = (PDPage)pageIter.next();
- PDPage newPage =
- new PDPage( (COSDictionary)copyStreamsIntoDocument( destination, page.getCOSDictionary() ) );
- destination.addPage( newPage );
- }
- }
- Map clonedVersion = new HashMap();
-
- private COSBase copyStreamsIntoDocument( PDDocument destination, COSBase base ) throws IOException
- {
-
- COSBase retval = (COSBase)clonedVersion.get( base );
- if( retval != null )
- {
- return retval;
- }
- if( base instanceof COSObject )
- {
- COSObject object = (COSObject)base;
- retval = new COSObject(copyStreamsIntoDocument( destination, object.getObject() ) );
- }
- else if( base instanceof COSArray )
- {
- retval = new COSArray();
- COSArray array = (COSArray)base;
- for( int i=0; i<array.size(); i++ )
- {
- ((COSArray)retval).add( copyStreamsIntoDocument( destination, array.get( i ) ) );
- }
- }
- else if( base instanceof COSDictionary )
- {
- COSDictionary dic = (COSDictionary)base;
- List keys = dic.keyList();
- if( base instanceof COSStream )
- {
- COSStream originalStream = (COSStream)base;
- PDStream stream = new PDStream( destination, originalStream.getFilteredStream(), true );
- clonedVersion.put( base, stream.getStream() );
- for( int i=0; i<keys.size(); i++ )
- {
- COSName key = (COSName)keys.get( i );
- stream.getStream().setItem( key, copyStreamsIntoDocument(destination,dic.getItem(key)));
- }
- retval = stream.getStream();
- }
- else
- {
- retval = new COSDictionary();
- clonedVersion.put( base, retval );
- for( int i=0; i<keys.size(); i++ )
- {
- COSName key = (COSName)keys.get( i );
- ((COSDictionary)retval).setItem( key, copyStreamsIntoDocument(destination,dic.getItem(key)));
- }
- }
- }
- else
- {
- retval = base;
- }
- clonedVersion.put( base, retval );
- return retval;
- }
-
- /**
- * concat two pdf documents.
- *
- * @param in1 The first template file
- * @param in2 The second template file
- * @param out The created fiel with all pages from document one and document two
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error generating the PDF document.
- */
- public void doIt(String in1, String in2, String out) throws IOException, COSVisitorException
- {
- PDDocument doc1 = null;
- PDDocument doc2 = null;
- try
- {
- doc1 = PDDocument.load( in1 );
- doc2 = PDDocument.load( in2 );
-
- appendDocument(doc1, doc2);
- doc1.save( out );
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- finally
- {
- close( doc1 );
- close( doc2 );
- }
- }
-
- private void close( PDDocument doc ) throws IOException
- {
- if( doc != null )
- {
- doc.close();
- }
- }
-
- /**
- * This will concat two pdf documents.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- AppendDoc app = new AppendDoc();
- try
- {
- if( args.length != 3 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1], args[2]);
- }
- }
- catch( Exception e )
- {
- e.printStackTrace();
- }
- }
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <input-file1> <input-file2> <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/persistence/CopyDoc.java b/src/main/java/org/pdfbox/examples/persistence/CopyDoc.java
deleted file mode 100644
index a3b7e3f..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/CopyDoc.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.persistence;
-
-import java.io.IOException;
-
-import org.pdfbox.cos.COSDocument;
-
-
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdfwriter.COSWriter;
-import org.pdfbox.exceptions.COSVisitorException;
-
-/**
- * This is an example used to copy a documents contents from a source doc to destination doc
- * via an in-memory document representation.
- *
- * @author Michael Traut
- * @version $Revision: 1.7 $
- */
-public class CopyDoc
-{
- /**
- * Constructor.
- */
- public CopyDoc()
- {
- super();
- }
-
- /**
- * This will perform the document copy.
- *
- * @param in The filename used for input.
- * @param out The filename used for output.
- *
- * @throws IOException If there is an error parsing the document.
- * @throws COSVisitorException If there is an error while copying the document.
- */
- public void doIt(String in, String out) throws IOException, COSVisitorException
- {
- java.io.InputStream is = null;
- java.io.OutputStream os = null;
- COSWriter writer = null;
- try
- {
- is = new java.io.FileInputStream(in);
- PDFParser parser = new PDFParser(is);
- parser.parse();
-
- COSDocument doc = parser.getDocument();
-
- os = new java.io.FileOutputStream(out);
- writer = new COSWriter(os);
-
- writer.write(doc);
-
- }
- finally
- {
- if( is != null )
- {
- is.close();
- }
- if( os != null )
- {
- os.close();
- }
- if( writer != null )
- {
- writer.close();
- }
- }
- }
-
- /**
- * This will copy a PDF document.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- CopyDoc app = new CopyDoc();
- try
- {
- if( args.length != 2 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <input-file> <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/persistence/FieldsDoc.java b/src/main/java/org/pdfbox/examples/persistence/FieldsDoc.java
deleted file mode 100644
index e506fe1..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/FieldsDoc.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.persistence;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.FileOutputStream;
-
-import java.util.Iterator;
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdfwriter.COSWriter;
-
-import org.pdfbox.cos.COSDocument;
-import org.pdfbox.cos.COSString;
-import org.pdfbox.cos.COSBase;
-import org.pdfbox.cos.COSDictionary;
-import org.pdfbox.cos.COSObject;
-import org.pdfbox.cos.COSName;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-/**
- * This example fills a field in a pdf document and writes it to new destination.
- *
- * @author Michael Traut
- * @version $Revision: 1.5 $
- */
-public class FieldsDoc
-{
- /**
- * Constructor.
- */
- public FieldsDoc()
- {
- super();
- }
- /**
- * fill a field in the pdf.
- *
- * @param in The template file
- * @param out The file to write the PDF to.
- * @param name The name of the PDF field (FDF field)
- * @param value The value to be used for the field
- *
- * @throws IOException If there is an error writing the data.
- * @throws COSVisitorException If there is an error generating the PDF document.
- */
- public void doIt(String in, String out, String name, String value) throws IOException, COSVisitorException
- {
- java.io.InputStream is = null;
- COSDocument doc = null;
- OutputStream os = null;
- COSWriter writer = null;
- try
- {
- is = new java.io.FileInputStream(in);
- PDFParser parser = new PDFParser(is);
- parser.parse();
-
- doc = parser.getDocument();
-
- setField(doc, new COSString(name), new COSString(value));
-
- os = new FileOutputStream(out);
- writer = new COSWriter(os);
-
- writer.write(doc);
-
- }
- finally
- {
- is.close();
- doc.close();
- os.close();
- writer.close();
- }
- }
- /**
- * This will fill a field in a PDF document.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- FieldsDoc app = new FieldsDoc();
- try
- {
- if( args.length != 4 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1], args[2], args[3]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
- /**
- * lookup and fill the field.
- *
- * todo: this method will go to the pdfmodel package one day
- *
- * @param doc the document where the field resides
- * @param name the name of the PDF Annotation field
- * @param value The desired value to be used for the field
- *
- */
- public void setField(COSDocument doc, COSString name, COSString value)
- {
- for (Iterator i = doc.getObjects().iterator(); i.hasNext();)
- {
- COSObject obj = (COSObject) i.next();
- COSBase base = obj.getObject();
- if (base instanceof COSDictionary)
- {
- COSDictionary dict = (COSDictionary) base;
- COSBase type = dict.getItem(COSName.TYPE);
- if (type != null && type.equals(COSName.getPDFName("Annot")))
- {
- COSBase subtype = dict.getItem(COSName.getPDFName("Subtype"));
- if (subtype != null && subtype.equals(COSName.getPDFName("Widget")))
- {
- // we found the field
- COSBase fname = dict.getItem(COSName.getPDFName("T"));
- if (fname != null && fname.equals(name))
- {
- dict.setItem(COSName.getPDFName("V"), value);
- }
- }
- }
- }
- }
- }
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <input-file> <output-file> <name> <value>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/persistence/WriteDecodedDoc.java b/src/main/java/org/pdfbox/examples/persistence/WriteDecodedDoc.java
deleted file mode 100644
index 8fcab7f..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/WriteDecodedDoc.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Copyright (c) 2003-2004, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.persistence;
-
-import java.io.IOException;
-
-import java.util.Iterator;
-
-import org.pdfbox.cos.COSBase;
-import org.pdfbox.cos.COSObject;
-import org.pdfbox.cos.COSStream;
-
-import org.pdfbox.pdmodel.PDDocument;
-
-import org.pdfbox.exceptions.COSVisitorException;
-
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-/**
- * load document and write with all streams decoded.
- *
- * @author Michael Traut
- * @version $Revision: 1.8 $
- */
-public class WriteDecodedDoc
-{
-
- /**
- * Constructor.
- */
- public WriteDecodedDoc()
- {
- super();
- }
-
- /**
- * This will perform the document reading, decoding and writing.
- *
- * @param in The filename used for input.
- * @param out The filename used for output.
- *
- * @throws IOException If there is an error parsing the document.
- * @throws COSVisitorException If there is an error while copying the document.
- */
- public void doIt(String in, String out) throws IOException, COSVisitorException
- {
- PDDocument doc = null;
- try
- {
- doc = PDDocument.load( in );
- if( doc.isEncrypted() )
- {
- try
- {
- doc.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: The document is encrypted." );
- }
- catch( org.pdfbox.exceptions.CryptographyException e )
- {
- e.printStackTrace();
- }
- }
-
- for (Iterator i = doc.getDocument().getObjects().iterator(); i.hasNext();)
- {
- COSBase base = ((COSObject) i.next()).getObject();
- if (base instanceof COSStream)
- {
- // just kill the filters
- COSStream cosStream = (COSStream)base;
- cosStream.getUnfilteredStream();
- cosStream.setFilters(null);
- }
- }
- doc.save( out );
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will write a PDF document with completely decoded streams.
- * <br />
- * see usage() for commandline
- *
- * @param args command line arguments
- */
- public static void main(String[] args)
- {
- WriteDecodedDoc app = new WriteDecodedDoc();
- try
- {
- if( args.length != 2 )
- {
- app.usage();
- }
- else
- {
- app.doIt( args[0], args[1]);
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- System.err.println( "usage: " + this.getClass().getName() + " <input-file> <output-file>" );
- }
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/persistence/package.html b/src/main/java/org/pdfbox/examples/persistence/package.html
deleted file mode 100644
index 9c0d57f..0000000
--- a/src/main/java/org/pdfbox/examples/persistence/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-These examples will show how to use the persistence features of the PDFBox.
-</body>
-</html>
diff --git a/src/main/java/org/pdfbox/examples/signature/ShowSignature.java b/src/main/java/org/pdfbox/examples/signature/ShowSignature.java
deleted file mode 100644
index 7398534..0000000
--- a/src/main/java/org/pdfbox/examples/signature/ShowSignature.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/**
- * Copyright (c) 2003, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.signature;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-
-import java.security.cert.CertificateFactory;
-
-import java.util.Collection;
-
-import org.pdfbox.cos.COSArray;
-import org.pdfbox.cos.COSDictionary;
-import org.pdfbox.cos.COSName;
-import org.pdfbox.cos.COSString;
-
-import org.pdfbox.pdmodel.PDDocument;
-
-/**
- * This will read a document from the filesystem, decrypt it and do something with the signature.
- *
- * usage: java org.pdfbox.examples.signature.ShowSignature &lt;password&gt; &lt;inputfile&gt;
- *
- *
- * @author Ben Litchfield (ben@csh.rit.edu)
- * @version $Revision: 1.8 $
- */
-public class ShowSignature
-{
-
- /**
- * This is the entry point for the application.
- *
- * @param args The command-line arguments.
- *
- * @throws Exception If there is an error reading the file.
- */
- public static void main( String[] args ) throws Exception
- {
- ShowSignature show = new ShowSignature();
- show.showSignature( args );
- }
-
- private void showSignature( String[] args ) throws Exception
- {
- if( args.length != 2 )
- {
- usage();
- }
- else
- {
- String password = args[0];
- String infile = args[1];
- PDDocument document = null;
- try
- {
- document = PDDocument.load( infile );
-
- if( document.isEncrypted() )
- {
- document.decrypt( password );
- }
- else
- {
- System.err.println( "Warning: Document is not encrypted." );
- }
-
- COSDictionary trailer = document.getDocument().getTrailer();
- COSDictionary root = (COSDictionary)trailer.getDictionaryObject( COSName.ROOT );
- COSDictionary acroForm = (COSDictionary)root.getDictionaryObject( COSName.getPDFName( "AcroForm" ) );
- COSArray fields = (COSArray)acroForm.getDictionaryObject( COSName.getPDFName( "Fields" ) );
- for( int i=0; i<fields.size(); i++ )
- {
- COSDictionary field = (COSDictionary)fields.getObject( i );
- String type = field.getNameAsString( "FT" );
- if( "Sig".equals( type ) )
- {
- COSDictionary cert = (COSDictionary)field.getDictionaryObject( COSName.getPDFName( "V" ) );
- if( cert != null )
- {
- System.out.println( "Certificate found" );
- System.out.println( "Name=" + cert.getDictionaryObject( COSName.getPDFName( "Name" ) ) );
- System.out.println( "Modified=" + cert.getDictionaryObject( COSName.getPDFName( "M" ) ) );
- COSName subFilter = (COSName)cert.getDictionaryObject( COSName.getPDFName( "SubFilter" ) );
- if( subFilter != null )
- {
- if( subFilter.getName().equals( "adbe.x509.rsa_sha1" ) )
- {
- COSString certString = (COSString)cert.getDictionaryObject(
- COSName.getPDFName( "Cert" ) );
- byte[] certData = certString.getBytes();
- CertificateFactory factory = CertificateFactory.getInstance( "X.509" );
- ByteArrayInputStream certStream = new ByteArrayInputStream( certData );
- Collection certs = factory.generateCertificates( certStream );
- System.out.println( "certs=" + certs );
- }
- else if( subFilter.getName().equals( "adbe.pkcs7.sha1" ) )
- {
- COSString certString = (COSString)cert.getDictionaryObject(
- COSName.getPDFName( "Contents" ) );
- byte[] certData = certString.getBytes();
- CertificateFactory factory = CertificateFactory.getInstance( "X.509" );
- ByteArrayInputStream certStream = new ByteArrayInputStream( certData );
- Collection certs = factory.generateCertificates( certStream );
- System.out.println( "certs=" + certs );
- }
- else
- {
- System.err.println( "Unknown certificate type:" + subFilter );
- }
- }
- else
- {
- throw new IOException( "Missing subfilter for cert dictionary" );
- }
- }
- else
- {
- System.out.println( "Signature found, but no certificate" );
- }
- }
- }
- }
- finally
- {
- document.close();
- }
- }
- }
-
- /**
- * This will print a usage message.
- */
- private static void usage()
- {
- System.err.println( "usage: java org.pdfbox.examples.signature.ShowSignature " +
- "<password> <inputfile>" );
- }
-
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/signature/package.html b/src/main/java/org/pdfbox/examples/signature/package.html
deleted file mode 100644
index 731c0ff..0000000
--- a/src/main/java/org/pdfbox/examples/signature/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-These examples will show how to gain access to the PDF signature.
-</body>
-</html>
diff --git a/src/main/java/org/pdfbox/examples/util/ExtractTextByArea.java b/src/main/java/org/pdfbox/examples/util/ExtractTextByArea.java
deleted file mode 100644
index 042e3e6..0000000
--- a/src/main/java/org/pdfbox/examples/util/ExtractTextByArea.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.util;
-
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.util.PDFTextStripperByArea;
-
-import java.awt.Rectangle;
-
-import java.util.List;
-
-/**
- * This is an example on how to extract text from a specific area on the PDF document.
- *
- * Usage: java org.pdfbox.examples.util.ExtractTextByArea &lt;input-pdf&gt;
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.1 $
- */
-public class ExtractTextByArea
-{
- private ExtractTextByArea()
- {
- //utility class and should not be constructed.
- }
-
-
- /**
- * This will print the documents text in a certain area.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- try
- {
- document = PDDocument.load( args[0] );
- if( document.isEncrypted() )
- {
- try
- {
- document.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: Document is encrypted with a password." );
- System.exit( 1 );
- }
- }
- PDFTextStripperByArea stripper = new PDFTextStripperByArea();
- stripper.setSortByPosition( true );
- Rectangle rect = new Rectangle( 10, 280, 275, 60 );
- stripper.addRegion( "class1", rect );
- List allPages = document.getDocumentCatalog().getAllPages();
- PDPage firstPage = (PDPage)allPages.get( 0 );
- stripper.extractRegions( firstPage );
- System.out.println( "Text in the area:" + rect );
- System.out.println( stripper.getTextForRegion( "class1" ) );
-
- }
- finally
- {
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.util.ExtractTextByArea <input-pdf>" );
- }
-
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/util/PrintTextLocations.java b/src/main/java/org/pdfbox/examples/util/PrintTextLocations.java
deleted file mode 100644
index 6c83b57..0000000
--- a/src/main/java/org/pdfbox/examples/util/PrintTextLocations.java
+++ /dev/null
@@ -1,144 +0,0 @@
-/**
- * Copyright (c) 2005, www.pdfbox.org
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- * 3. Neither the name of pdfbox; nor the names of its
- * contributors may be used to endorse or promote products derived from this
- * software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
- * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- *
- * http://www.pdfbox.org
- *
- */
-package org.pdfbox.examples.util;
-
-import org.pdfbox.exceptions.InvalidPasswordException;
-
-import org.pdfbox.pdfparser.PDFParser;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-import org.pdfbox.util.PDFTextStripper;
-import org.pdfbox.util.TextPosition;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-
-import java.util.List;
-
-/**
- * This is an example on how to get some x/y coordinates of text.
- *
- * Usage: java org.pdfbox.examples.util.PrintTextLocations &lt;input-pdf&gt;
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.2 $
- */
-public class PrintTextLocations extends PDFTextStripper
-{
- /**
- * Default constructor.
- *
- * @throws IOException If there is an error loading text stripper properties.
- */
- public PrintTextLocations() throws IOException
- {
- //default constructor.
- }
-
- /**
- * This will print the documents data.
- *
- * @param args The command line arguments.
- *
- * @throws Exception If there is an error parsing the document.
- */
- public static void main( String[] args ) throws Exception
- {
- if( args.length != 1 )
- {
- usage();
- }
- else
- {
- PDDocument document = null;
- FileInputStream file = null;
- try
- {
- file = new FileInputStream( args[0] );
- PDFParser parser = new PDFParser( file );
- parser.parse();
- document = parser.getPDDocument();
- if( document.isEncrypted() )
- {
- try
- {
- document.decrypt( "" );
- }
- catch( InvalidPasswordException e )
- {
- System.err.println( "Error: Document is encrypted with a password." );
- System.exit( 1 );
- }
- }
- PrintTextLocations printer = new PrintTextLocations();
- List allPages = document.getDocumentCatalog().getAllPages();
- for( int i=0; i<allPages.size(); i++ )
- {
- PDPage page = (PDPage)allPages.get( i );
- System.out.println( "Processing page: " + i );
- printer.processStream( page, page.findResources(), page.getContents().getStream() );
- }
- }
- finally
- {
- if( file != null )
- {
- file.close();
- }
- if( document != null )
- {
- document.close();
- }
- }
- }
- }
-
- /**
- * A method provided as an event interface to allow a subclass to perform
- * some specific functionality when a character needs to be displayed.
- *
- * @param text The character to be displayed.
- */
- protected void showCharacter( TextPosition text )
- {
- System.out.println( "String[" + text.getX() + "," + text.getY() + "]" + text.getCharacter() );
- }
-
- /**
- * This will print the usage for this document.
- */
- private static void usage()
- {
- System.err.println( "Usage: java org.pdfbox.examples.pdmodel.PrintTextLocations <input-pdf>" );
- }
-
-} \ No newline at end of file
diff --git a/src/main/java/org/pdfbox/examples/util/package.html b/src/main/java/org/pdfbox/examples/util/package.html
deleted file mode 100644
index bc50f59..0000000
--- a/src/main/java/org/pdfbox/examples/util/package.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-
-</head>
-<body>
-The packages in this package will show how to use the PDFBox util API.
-</body>
-</html>