• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
[Snippet] Creating on-demand PDF using iText
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Snippet] Creating on-demand PDF using iText


  • Subject: [Snippet] Creating on-demand PDF using iText
  • From: Stefan Pantke <email@hidden>
  • Date: Thu, 1 Dec 2005 02:03:28 +0100


Am 30.11.2005 um 22:20 schrieb Stefan Pantke:

I need to compose PDF output based on certain input,

For anybody interested, here is a snippet for outputting PDF
using iText - probably not the nicest solution, but for a newbie, this might
be a nice starting point:


>>>
//
// Main.java: Class file for WO Component 'Main'
// Project dprint
//
// Created by sp on 30.11.05
//

import com.webobjects.foundation.*;
import com.webobjects.appserver.*;
import com.webobjects.eocontrol.*;
import com.webobjects.eoaccess.*;
import com.webobjects.foundation.NSData;

// for iText
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.*;
import java.util.Date;
import java.awt.Color;

import com.lowagie.text.*;
import com.lowagie.text.pdf.PdfWriter;

 class TAPDFComponent extends WOComponent {
	private String _contentType = "application/pdf";

	public TAPDFComponent(WOContext context) {
		super(context);
	}
	public void setContentType(String aType) {
		_contentType = aType;
	}

	public String contentType() {
		return _contentType;
	}

	public void appendToResponse(WOResponse response, WOContext context) {
		// Voir page suivante …

		// Document document = new Document(PageSize.A4.rotate());
		Document document = new Document( PageSize.A4 );

        ByteArrayOutputStream oBuffer = new ByteArrayOutputStream();
		try {
			PdfWriter.getInstance( document, oBuffer );

try {

// step 2:
// we create a writer that listens to the document
// and directs a PDF-stream to a file

// step 3: we open the document
document.open();

// step 4: we add some content
document.add(new Paragraph("To create a document in landscape format, just make the height smaller than the width. For instance by rotating the PageSize Rectangle: PageSize.A4.rotate()"));
document.setPageSize(PageSize.A4);
document.newPage();
document.add(new Paragraph("This is portrait again"));
document.add(new Paragraph("Hello World"));
document.add(new Paragraph(new Date().toString()));


			Chunk c;
			c = new Chunk("background");
			c.setBackground(new Color(0xC0, 0xC0, 0xC0));
			document.add(c);
			

// the 14 standard fonts in PDF: do not use this Font constructor!
// this is for demonstration purposes only, use FontFactory!
Font[] fonts = new Font[14];
fonts[0] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.NORMAL);
fonts[1] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.ITALIC);
fonts[2] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.BOLD);
fonts[3] = new Font(Font.COURIER, Font.DEFAULTSIZE, Font.BOLD | Font.ITALIC);
fonts[4] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.NORMAL);
fonts[5] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.ITALIC);
fonts[6] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.BOLD);
fonts[7] = new Font(Font.HELVETICA, Font.DEFAULTSIZE, Font.BOLDITALIC);
fonts[8] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.NORMAL);
fonts[9] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.ITALIC);
fonts[10] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.BOLD);
fonts[11] = new Font(Font.TIMES_ROMAN, Font.DEFAULTSIZE, Font.BOLDITALIC);
fonts[12] = new Font(Font.SYMBOL);
fonts[13] = new Font(Font.ZAPFDINGBATS);
// add the content
for (int i = 0; i < 14; i++) {
document.add(new Paragraph("quick brown fox jumps over the lazy dog", fonts[i]));
}



} catch(DocumentException de) { System.err.println("Document problem: " + de.getMessage()); } catch ( Exception ex) { System.err.println("Document problem 2: " + ex.getMessage()); } // step 5: we close the document document.close();

			// we need to prepare NSData instead of String, since we are going to
			// output arbitraty data
			response.setContent( new NSData( oBuffer.toByteArray() ) );

			response.setHeader("application/pdf", "Content-Type");
		} catch ( Exception ex) {
			System.err.println("PDFWriter not inited: " + ex.getMessage());
		}


} }


public class Main extends TAPDFComponent { // WOComponent {

    public Main(WOContext context) {
        super(context);
    }

    public WOComponent generateTestPDF()
    {

        return null;
    }

}
<<<


Don't forget to install the iText JAR found here

	http://www.lowagie.com/iText/

in

	/Library/Java/Extensions

or another JAVA-well known place.


Cheers,

Stefan

_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: [Snippet] Creating on-demand PDF using iText
      • From: Chuck Hill <email@hidden>
References: 
 >Creating PDF output on demand (From: Stefan Pantke <email@hidden>)

  • Prev by Date: Useful list of WO sites
  • Next by Date: Re: [Snippet] Creating on-demand PDF using iText
  • Previous by thread: Creating PDF output on demand
  • Next by thread: Re: [Snippet] Creating on-demand PDF using iText
  • Index(es):
    • Date
    • Thread