Mega Code Archive

 
Categories / Java Tutorial / PDF
 

Add page event listener to PDF writer

import java.io.FileOutputStream; import java.util.HashMap; import java.util.Iterator; import com.lowagie.text.Chunk; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Paragraph; import com.lowagie.text.Rectangle; import com.lowagie.text.pdf.PdfPageEventHelper; import com.lowagie.text.pdf.PdfWriter; public class MainClass {   public static void main(String[] args) throws Exception {     Document document = new Document();     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("2.pdf"));     MyPdfPageEventHelper tracker = new MyPdfPageEventHelper();     writer.setPageEvent(tracker);     document.open();     document.add(createParagraph("Fox", "Hello lazy dog."));     document.newPage();     HashMap lines = tracker.getLines();     for (Iterator i = lines.keySet().iterator(); i.hasNext();) {       String speaker = (String) i.next();       Integer count = (Integer) lines.get(speaker);       document.add(new Paragraph(speaker + ": " + count.intValue() + " lines."));     }     document.close();   }   private static Paragraph createParagraph(String speaker, String line) {     Paragraph p = new Paragraph(18);     Chunk s = new Chunk(speaker + ": ", new Font(Font.HELVETICA, 12, Font.BOLD));     s.setGenericTag(speaker);     p.add(s);     p.add(line);     return p;   } } class MyPdfPageEventHelper extends PdfPageEventHelper {   protected HashMap lines = new HashMap();   public void onGenericTag(PdfWriter writer, Document document, Rectangle rect, String text) {     Integer count = (Integer) lines.get(text);     if (count == null) {       lines.put(text, new Integer(1));     } else {       lines.put(text, new Integer(count.intValue() + 1));     }   }   public HashMap getLines() {     return lines;   } }