[Helma-user] Render PDF

Stefan Rinner rist at mac.com
Tue Jul 24 09:12:59 CEST 2007


On Jul 24, 2007, at 8:57 AM, Julian Tree wrote:

> Has anyone done in Helma?

yes

> Is there a prepackaged javascript lib for this?

none that I know of

> or should I create one using something like iText?
> http://itextdocs.lowagie.com/tutorial/
>
> Any recommendation welcome.  I am looking to create some read only  
> documents with barcodes (png images).

here's an excerpt from some code I use for creating bills - it loads  
a pdf with our letterhead, imports one of our CI fonts and places  
some text:

	var iText = Packages.com.lowagie.text;

	var letterHeadReader = iText.pdf.PdfReader( getResourcesFolderPath()  
+ "bill/letterhead.pdf" );

	var mm2pt = function( mm ){ return ( 72 / 25.4 ) * mm; };

	var pdfDoc = new iText.Document( iText.PageSize.A4, mm2pt( 26 ),  
mm2pt( 26 ), mm2pt( 120 ), mm2pt( 30 ) );
	var byteOutputStream = new Packages.java.io.ByteArrayOutputStream();
	var pdfWriter = iText.pdf.PdfWriter.getInstance( pdfDoc,  
byteOutputStream );
	pdfDoc.open();

	var letterHeadPage = pdfWriter.getImportedPage( letterHeadReader, 1 );
	var pdfWriteContentBytes = pdfWriter.getDirectContent();
	pdfWriteContentBytes.addTemplate( letterHeadPage, 0, 0 );

	var page = pdfDoc.getPageSize();

	var bembo11 = new iText.Font( iText.pdf.BaseFont.createFont 
( getResourcesFolderPath() + "bill/fonts/BemboStd.ttf",  
iText.pdf.BaseFont.IDENTITY_H, iText.pdf.BaseFont.EMBEDDED ), 11 );

	var addressString = "some string";

	var addressColumn = new iText.pdf.ColumnText( pdfWriteContentBytes );
	addressColumn.setSimpleColumn( mm2pt( 26 ), page.height() - mm2pt 
( 57 ), page.width() - mm2pt( 25 ), page.height() - mm2pt( 100 ), 15,  
iText.Element.ALIGN_LEFT );
	addressColumn.addText( new iText.Phrase( 15, addressString,  
bembo11 ) );
	addressColumn.go();

	pdfDoc.close();

	res.contentType = "application/pdf";
	res.writeBinary( byteOutputStream.toByteArray() );

stefan


More information about the Helma-user mailing list