Creating PDF With Java and Itext
Creating PDF With Java and Itext
by Lars Vogel
30.06.2009 - 11.10.2010
Java and PDF with iText This article demonstrate how to create PDF files with Java and the iText library. In this tutorial iText version 5.0.x is used
Table of Contents
1. Overview 2. Installation 3. Create a PDF 4. Formatting your output 5. Read an existing pdf 6. Thank you 7. Questions and Discussion 8. Links and Literature 8.1. Source Code 8.2. iText Resources 8.3. vogella Resources
1. Overview
iText is a Java library originally created by Bruno Lowagie which allows to create PDF, read PDF and manipulate them. The following tutorial will show how to create PDF files with iText. This tutorial assumes that you have basis Java and Eclipse knowledge. iText has a hierarchical structure. The smallest text unit is a "Chunk" which is a String with a pre-defined font. A "Phrase" combines several Chunks and allows to define line spacing. "Paragraph" is a subclass of "Phrase" and allows to define more layout attributes, e.g. margins. The class "Anchor" is a subclass of "Paragraph" and serves as the basis for hyperlinks in the generated PDF.
2. Installation
Download the iText core binary from the webpage http://sourceforge.net/projects/itext/ . The download contains one jar which is required if you want to use iText.
3. Create a PDF
Create a new Java project "de.vogella.itext.write" with the package "de.vogella.itext.write". Create a folder "lib" and put the iText library (jar file) into this folder. Add the jar to your classpath. Create the following class "FirstPdf.java" . I assume that the coding is pretty much self-explaining. I tried to add lots of comments to make it easier to understand. For more complex examples have a look at the
iText Homepage .
p a c k a g ed e . v o g e l l a . i t e x t . w r i t e ; i m p o r tj a v a . i o . F i l e O u t p u t S t r e a m ; i m p o r tj a v a . u t i l . D a t e ; i m p o r tc o m . i t e x t p d f . t e x t . A n c h o r ; i m p o r tc o m . i t e x t p d f . t e x t . B a d E l e m e n t E x c e p t i o n ; i m p o r tc o m . i t e x t p d f . t e x t . B a s e C o l o r ; i m p o r tc o m . i t e x t p d f . t e x t . C h a p t e r ; i m p o r tc o m . i t e x t p d f . t e x t . D o c u m e n t ; i m p o r tc o m . i t e x t p d f . t e x t . D o c u m e n t E x c e p t i o n ; i m p o r tc o m . i t e x t p d f . t e x t . E l e m e n t ; i m p o r tc o m . i t e x t p d f . t e x t . F o n t ; i m p o r tc o m . i t e x t p d f . t e x t . L i s t ; i m p o r tc o m . i t e x t p d f . t e x t . L i s t I t e m ; i m p o r tc o m . i t e x t p d f . t e x t . P a r a g r a p h ; i m p o r tc o m . i t e x t p d f . t e x t . P h r a s e ; i m p o r tc o m . i t e x t p d f . t e x t . S e c t i o n ; i m p o r tc o m . i t e x t p d f . t e x t . p d f . P d f P C e l l ; i m p o r tc o m . i t e x t p d f . t e x t . p d f . P d f P T a b l e ; i m p o r tc o m . i t e x t p d f . t e x t . p d f . P d f W r i t e r ;
p u b l i cc l a s sF i r s t P d f{ p r i v a t es t a t i cS t r i n gF I L E=" c : / t e m p / F i r s t P d f . p d f " ; p r i v a t es t a t i cF o n tc a t F o n t=n e wF o n t ( F o n t . F o n t F a m i l y . T I M E S _ R O M A N ,1 8 , F o n t . B O L D ) ; p r i v a t es t a t i cF o n tr e d F o n t=n e wF o n t ( F o n t . F o n t F a m i l y . T I M E S _ R O M A N ,1 2 , F o n t . N O R M A L ,B a s e C o l o r . R E D ) ; p r i v a t es t a t i cF o n ts u b F o n t=n e wF o n t ( F o n t . F o n t F a m i l y . T I M E S _ R O M A N ,1 6 , F o n t . B O L D ) ; p r i v a t es t a t i cF o n ts m a l l B o l d=n e wF o n t ( F o n t . F o n t F a m i l y . T I M E S _ R O M A N ,1 2 , F o n t . B O L D ) ; p u b l i cs t a t i cv o i dm a i n ( S t r i n g [ ]a r g s ){ t r y{ D o c u m e n td o c u m e n t=n e wD o c u m e n t ( ) ; P d f W r i t e r . g e t I n s t a n c e ( d o c u m e n t ,n e wF i l e O u t p u t S t r e a m ( F I L E ) ) ; d o c u m e n t . o p e n ( ) ; a d d M e t a D a t a ( d o c u m e n t ) ; a d d T i t l e P a g e ( d o c u m e n t ) ; a d d C o n t e n t ( d o c u m e n t ) ; d o c u m e n t . c l o s e ( ) ; }c a t c h( E x c e p t i o ne ){ e . p r i n t S t a c k T r a c e ( ) ; } } / /i T e x ta l l o w st oa d dm e t a d a t at ot h eP D Fw h i c hc a nb ev i e w e di ny o u rA d o b e / /R e a d e r / /u n d e rF i l e>P r o p e r t i e s p r i v a t es t a t i cv o i da d d M e t a D a t a ( D o c u m e n td o c u m e n t ){ d o c u m e n t . a d d T i t l e ( " M yf i r s tP D F " ) ; d o c u m e n t . a d d S u b j e c t ( " U s i n gi T e x t " ) ; d o c u m e n t . a d d K e y w o r d s ( " J a v a ,P D F ,i T e x t " ) ; d o c u m e n t . a d d A u t h o r ( " L a r sV o g e l " ) ; d o c u m e n t . a d d C r e a t o r ( " L a r sV o g e l " ) ; } p r i v a t es t a t i cv o i da d d T i t l e P a g e ( D o c u m e n td o c u m e n t ) t h r o w sD o c u m e n t E x c e p t i o n{ P a r a g r a p hp r e f a c e=n e wP a r a g r a p h ( ) ; / /W ea d do n ee m p t yl i n e a d d E m p t y L i n e ( p r e f a c e ,1 ) ; / /L e t sw r i t eab i gh e a d e r p r e f a c e . a d d ( n e wP a r a g r a p h ( " T i t l eo ft h ed o c u m e n t " ,c a t F o n t ) ) ; a d d E m p t y L i n e ( p r e f a c e ,1 ) ; / /W i l lc r e a t e :R e p o r tg e n e r a t e db y :_ n a m e ,_ d a t e p r e f a c e . a d d ( n e wP a r a g r a p h ( " R e p o r tg e n e r a t e db y :"+S y s t e m . g e t P r o p e r t y ( " u s e r . n a m e " ) +" ,"+n e wD a t e ( ) ,/ / $ N O N N L S 1 $/ / $ N O N N L S 2 $/ / $ N O N N L S 3 $ s m a l l B o l d ) ) ; a d d E m p t y L i n e ( p r e f a c e ,3 ) ; p r e f a c e . a d d ( n e wP a r a g r a p h ( " T h i sd o c u m e n td e s c r i b e ss o m e t h i n gw h i c hi sv e r yi m p o r t a n t" , s m a l l B o l d ) ) ; a d d E m p t y L i n e ( p r e f a c e ,8 ) ; p r e f a c e . a d d ( n e wP a r a g r a p h ( " T h i sd o c u m e n ti sap r e l i m i n a r yv e r s i o na n dn o ts u b j e c tt oy o u rl i c e n s ea g r e e m e n to ra n yo t h e ra g r e e m e n tw i t hv o g e l l a . c o m; ) . " , r e d F o n t ) ) ; d o c u m e n t . a d d ( p r e f a c e ) ; / /S t a r tan e wp a g e d o c u m e n t . n e w P a g e ( ) ; } p r i v a t es t a t i cv o i da d d C o n t e n t ( D o c u m e n td o c u m e n t )t h r o w sD o c u m e n t E x c e p t i o n{ A n c h o ra n c h o r=n e wA n c h o r ( " F i r s tC h a p t e r " ,c a t F o n t ) ; a n c h o r . s e t N a m e ( " F i r s tC h a p t e r " ) ; / /S e c o n dp a r a m e t e ri st h en u m b e ro ft h ec h a p t e r C h a p t e rc a t P a r t=n e wC h a p t e r ( n e wP a r a g r a p h ( a n c h o r ) ,1 ) ;
P a r a g r a p hs u b P a r a=n e wP a r a g r a p h ( " S u b c a t e g o r y1 " ,s u b F o n t ) ; S e c t i o ns u b C a t P a r t=c a t P a r t . a d d S e c t i o n ( s u b P a r a ) ; s u b C a t P a r t . a d d ( n e wP a r a g r a p h ( " H e l l o " ) ) ; s u b P a r a=n e wP a r a g r a p h ( " S u b c a t e g o r y2 " ,s u b F o n t ) ; s u b C a t P a r t=c a t P a r t . a d d S e c t i o n ( s u b P a r a ) ; s u b C a t P a r t . a d d ( n e wP a r a g r a p h ( " P a r a g r a p h1 " ) ) ; s u b C a t P a r t . a d d ( n e wP a r a g r a p h ( " P a r a g r a p h2 " ) ) ; s u b C a t P a r t . a d d ( n e wP a r a g r a p h ( " P a r a g r a p h3 " ) ) ; / /A d dal i s t c r e a t e L i s t ( s u b C a t P a r t ) ; P a r a g r a p hp a r a g r a p h=n e wP a r a g r a p h ( ) ; a d d E m p t y L i n e ( p a r a g r a p h ,5 ) ; s u b C a t P a r t . a d d ( p a r a g r a p h ) ; / /A d dat a b l e c r e a t e T a b l e ( s u b C a t P a r t ) ; / /N o wa d da l lt h i st ot h ed o c u m e n t d o c u m e n t . a d d ( c a t P a r t ) ; / /N e x ts e c t i o n a n c h o r=n e wA n c h o r ( " S e c o n dC h a p t e r " ,c a t F o n t ) ; a n c h o r . s e t N a m e ( " S e c o n dC h a p t e r " ) ; / /S e c o n dp a r a m e t e ri st h en u m b e ro ft h ec h a p t e r c a t P a r t=n e wC h a p t e r ( n e wP a r a g r a p h ( a n c h o r ) ,1 ) ; s u b P a r a=n e wP a r a g r a p h ( " S u b c a t e g o r y " ,s u b F o n t ) ; s u b C a t P a r t=c a t P a r t . a d d S e c t i o n ( s u b P a r a ) ; s u b C a t P a r t . a d d ( n e wP a r a g r a p h ( " T h i si sav e r yi m p o r t a n tm e s s a g e " ) ) ; / /N o wa d da l lt h i st ot h ed o c u m e n t d o c u m e n t . a d d ( c a t P a r t ) ; } p r i v a t es t a t i cv o i dc r e a t e T a b l e ( S e c t i o ns u b C a t P a r t ) t h r o w sB a d E l e m e n t E x c e p t i o n{ P d f P T a b l et a b l e=n e wP d f P T a b l e ( 3 ) ; / /t . s e t B o r d e r C o l o r ( B a s e C o l o r . G R A Y ) ; / /t . s e t P a d d i n g ( 4 ) ; / /t . s e t S p a c i n g ( 4 ) ; / /t . s e t B o r d e r W i d t h ( 1 ) ; P d f P C e l lc 1=n e wP d f P C e l l ( n e wP h r a s e ( " T a b l eH e a d e r1 " ) ) ; c 1 . s e t H o r i z o n t a l A l i g n m e n t ( E l e m e n t . A L I G N _ C E N T E R ) ; t a b l e . a d d C e l l ( c 1 ) ; c 1=n e wP d f P C e l l ( n e wP h r a s e ( " T a b l eH e a d e r2 " ) ) ; c 1 . s e t H o r i z o n t a l A l i g n m e n t ( E l e m e n t . A L I G N _ C E N T E R ) ; t a b l e . a d d C e l l ( c 1 ) ; c 1=n e wP d f P C e l l ( n e wP h r a s e ( " T a b l eH e a d e r3 " ) ) ; c 1 . s e t H o r i z o n t a l A l i g n m e n t ( E l e m e n t . A L I G N _ C E N T E R ) ; t a b l e . a d d C e l l ( c 1 ) ; t a b l e . s e t H e a d e r R o w s ( 1 ) ; t a b l e . a d d C e l l ( " 1 . 0 " ) ; t a b l e . a d d C e l l ( " 1 . 1 " ) ; t a b l e . a d d C e l l ( " 1 . 2 " ) ; t a b l e . a d d C e l l ( " 2 . 1 " ) ; t a b l e . a d d C e l l ( " 2 . 2 " ) ; t a b l e . a d d C e l l ( " 2 . 3 " ) ; s u b C a t P a r t . a d d ( t a b l e ) ; } p r i v a t es t a t i cv o i dc r e a t e L i s t ( S e c t i o ns u b C a t P a r t ){ L i s tl i s t=n e wL i s t ( t r u e ,f a l s e ,1 0 ) ; l i s t . a d d ( n e wL i s t I t e m ( " F i r s tp o i n t " ) ) ; l i s t . a d d ( n e wL i s t I t e m ( " S e c o n dp o i n t " ) ) ; l i s t . a d d ( n e wL i s t I t e m ( " T h i r dp o i n t " ) ) ; s u b C a t P a r t . a d d ( l i s t ) ; } p r i v a t es t a t i cv o i da d d E m p t y L i n e ( P a r a g r a p hp a r a g r a p h ,i n tn u m b e r ){ f o r( i n ti=0 ;i<n u m b e r ;i + + ){ p a r a g r a p h . a d d ( n e wP a r a g r a p h ( "" ) ) ; } } }
Connect
BACK TO TOP
6. Thank you
Please help me to support this article: