aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/pdfbox/TextToPDF.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/pdfbox/TextToPDF.java')
-rw-r--r--src/main/java/org/pdfbox/TextToPDF.java259
1 files changed, 0 insertions, 259 deletions
diff --git a/src/main/java/org/pdfbox/TextToPDF.java b/src/main/java/org/pdfbox/TextToPDF.java
deleted file mode 100644
index 413d981..0000000
--- a/src/main/java/org/pdfbox/TextToPDF.java
+++ /dev/null
@@ -1,259 +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;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.Reader;
-
-import org.pdfbox.pdmodel.PDDocument;
-import org.pdfbox.pdmodel.PDPage;
-
-import org.pdfbox.pdmodel.edit.PDPageContentStream;
-import org.pdfbox.pdmodel.font.PDSimpleFont;
-import org.pdfbox.pdmodel.font.PDTrueTypeFont;
-import org.pdfbox.pdmodel.font.PDType1Font;
-
-
-/**
- * This will take a text file and ouput a pdf with that text.
- *
- * @author Ben Litchfield (ben@benlitchfield.com)
- * @version $Revision: 1.3 $
- */
-public class TextToPDF
-{
- private int fontSize = 10;
- private PDSimpleFont font = PDType1Font.HELVETICA;
-
- /**
- * Create a PDF document with some text.
- *
- * @param text The stream of text data.
- *
- * @return The document with the text in it.
- *
- * @throws IOException If there is an error writing the data.
- */
- public PDDocument createPDFFromText( Reader text ) throws IOException
- {
- PDDocument doc = null;
- try
- {
-
- int margin = 40;
- float height = font.getFontDescriptor().getFontBoundingBox().getHeight()/1000;
-
- //calculate font height and increase by 5 percent.
- height = height*fontSize*1.05f;
- doc = new PDDocument();
- BufferedReader data = new BufferedReader( text );
- String nextLine = null;
- PDPage page = new PDPage();
- PDPageContentStream contentStream = null;
- float y = -1;
- float maxStringLength = page.getMediaBox().getWidth() - 2*margin;
- while( (nextLine = data.readLine()) != null )
- {
-
- String[] lineWords = nextLine.trim().split( " " );
- int lineIndex = 0;
- while( lineIndex < lineWords.length )
- {
- StringBuffer nextLineToDraw = new StringBuffer();
- float lengthIfUsingNextWord = 0;
- do
- {
- nextLineToDraw.append( lineWords[lineIndex] );
- nextLineToDraw.append( " " );
- lineIndex++;
- if( lineIndex < lineWords.length )
- {
- String lineWithNextWord = nextLineToDraw.toString() + lineWords[lineIndex];
- lengthIfUsingNextWord =
- (font.getStringWidth( lineWithNextWord )/1000) * fontSize;
- }
- }
- while( lineIndex < lineWords.length &&
- lengthIfUsingNextWord < maxStringLength );
- if( y < margin )
- {
- page = new PDPage();
- doc.addPage( page );
- if( contentStream != null )
- {
- contentStream.endText();
- contentStream.close();
- }
- contentStream = new PDPageContentStream(doc, page);
- contentStream.setFont( font, fontSize );
- contentStream.beginText();
- y = page.getMediaBox().getHeight() - margin + height;
- contentStream.moveTextPositionByAmount(
- margin, y );
-
- }
- //System.out.println( "Drawing string at " + x + "," + y );
-
-
- contentStream.moveTextPositionByAmount( 0, -height);
- y -= height;
- contentStream.drawString( nextLineToDraw.toString() );
- }
-
-
- }
- if( contentStream != null )
- {
- contentStream.endText();
- contentStream.close();
- }
- }
- catch( IOException io )
- {
- if( doc != null )
- {
- doc.close();
- }
- throw io;
- }
- return doc;
- }
-
- /**
- * This will create a PDF document with a single image on it.
- * <br />
- * see usage() for commandline
- *
- * @param args Command line arguments.
- *
- * @throws IOException If there is an error with the PDF.
- */
- public static void main(String[] args) throws IOException
- {
- TextToPDF app = new TextToPDF();
- PDDocument doc = null;
- try
- {
- if( args.length < 2 )
- {
- app.usage();
- }
- else
- {
- for( int i=0; i<args.length-2; i++ )
- {
- if( args[i].equals( "-standardFont" ))
- {
- i++;
- app.setFont( PDType1Font.getStandardFont( args[i] ));
- }
- else if( args[i].equals( "-ttf" ))
- {
- i++;
- PDTrueTypeFont font = PDTrueTypeFont.loadTTF( doc, new File( args[i]));
- app.setFont( font );
- }
- else if( args[i].equals( "-fontSize" ))
- {
- i++;
- app.setFontSize( Integer.parseInt( args[i] ) );
- }
- else
- {
- throw new IOException( "Unknown argument:" + args[i] );
- }
- }
- doc = app.createPDFFromText( new FileReader( args[args.length-1] ) );
- doc.save( args[args.length-2] );
- }
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- if( doc != null )
- {
- doc.close();
- }
- }
- }
-
- /**
- * This will print out a message telling how to use this example.
- */
- private void usage()
- {
- String[] std14 = PDType1Font.getStandard14Names();
- System.err.println( "usage: " + this.getClass().getName() + " [options] <output-file> <text-file>" );
- System.err.println( " -standardFont <name> default:" + PDType1Font.HELVETICA.getBaseFont() );
- for( int i=0; i<std14.length; i++ )
- {
- System.err.println( " " + std14[i] );
- }
- System.err.println( " -ttf <ttf file> The TTF font to use.");
- System.err.println( " -fontSize <fontSize> default:10" );
-
-
- }
- /**
- * @return Returns the font.
- */
- public PDSimpleFont getFont()
- {
- return font;
- }
- /**
- * @param aFont The font to set.
- */
- public void setFont(PDSimpleFont aFont)
- {
- this.font = aFont;
- }
- /**
- * @return Returns the fontSize.
- */
- public int getFontSize()
- {
- return fontSize;
- }
- /**
- * @param aFontSize The fontSize to set.
- */
- public void setFontSize(int aFontSize)
- {
- this.fontSize = aFontSize;
- }
-} \ No newline at end of file