Sophie

Sophie

distrib > Mandriva > 2007.0 > i586 > media > contrib-release > by-pkgid > 29e0da3ddcddab73ae8621fc62033227 > files > 180

itext-manual-1.4.5-1mdv2007.0.i586.rpm

/*
 * $Id: Generic.java,v 1.4 2005/05/09 11:52:48 blowagie Exp $
 * $Name:  $
 *
 * This code is part of the 'iText Tutorial'.
 * You can find the complete tutorial at the following address:
 * http://itextdocs.lowagie.com/tutorial/
 *
 * This code is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 *
 * itext-questions@lists.sourceforge.net
 */

package com.lowagie.examples.objects.chunk;

import java.io.FileOutputStream;
import java.io.IOException;

import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.PdfContentByte;
import com.lowagie.text.pdf.PdfPageEventHelper;
import com.lowagie.text.pdf.PdfWriter;

/**
 * Demonstrates the use of the Generic PageEvent.
 * 
 * @author blowagie
 */

public class Generic extends PdfPageEventHelper {
	/**
	 * Draws an ellipse if the text was ellipse, a box if the text was box.
	 * 
	 * @see com.lowagie.text.pdf.PdfPageEventHelper#onGenericTag(com.lowagie.text.pdf.PdfWriter, com.lowagie.text.Document, com.lowagie.text.Rectangle, java.lang.String)
	 */
	public void onGenericTag(PdfWriter writer, Document document, Rectangle rect, String text) {
		if ("ellipse".equals(text)) {
			PdfContentByte cb = writer.getDirectContent();
			cb.setRGBColorStroke(0xFF, 0x00, 0x00);
			cb.ellipse(rect.left(), rect.bottom() - 5f, rect.right(), rect.top());
			cb.stroke();
			cb.resetRGBColorStroke();
		}
		else if ("box".equals(text)) {
			PdfContentByte cb = writer.getDirectContentUnder();
			rect.setGrayFill(0.5f);
			cb.rectangle(rect);
		}
    }
	/**
	 * Generic page event.
	 * 
	 * @param args no arguments needed here
	 */
	public static void main(String[] args) {

		System.out.println("Generic");

		// step 1: creation of a document-object
		Document document = new Document();
		try {
			// step 2:
			// we create a writer that listens to the document
			PdfWriter writer = PdfWriter.getInstance(document,
					new FileOutputStream("Generic.pdf"));
			writer.setPageEvent(new Generic());
			
			// step 3: we open the document
			document.open();
			// step 4:
			Paragraph p = new Paragraph("Generic page event");
			document.add(p);
			Chunk box = new Chunk("box");
			box.setGenericTag("box");
			Chunk ellipse = new Chunk("ellipse");
			ellipse.setGenericTag("ellipse");
			p = new Paragraph("In this example, we will add chunks that are tagged as an ");
			p.add(ellipse);
			p.add(" and chunks that are tagged as a ");
			p.add(box);
			p.add(". Can you see the difference between ");
			Chunk c1 = new Chunk("this");
			c1.setGenericTag("box");
			Chunk c2 = new Chunk("that");
			c2.setGenericTag("ellipse");
			p.add(c1);
			p.add(" and ");
			p.add(c2);
			p.add("? One is a ");
			p.add(box);
			p.add("; the other an ");
			p.add(ellipse);
			document.add(p);
		} catch (DocumentException de) {
			System.err.println(de.getMessage());
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
		}

		// step 5: we close the document
		document.close();
	}
}