in reply to Putting text and images in PDFs using PDF::API2

To be honest, i don't like PDF::API2 a lot..
It gave me unsolvable problems, so i changed to XSL-FO and FOP.
It's relatively easy and offers great control for your layout.
See this node for more information.

"We all agree on the necessity of compromise. We just can't agree on when it's necessary to compromise." - Larry Wall.
  • Comment on Re: Putting text and images in PDFs using PDF::API2

Replies are listed 'Best First'.
Re^2: Putting text and images in PDFs using PDF::API2
by JamesNC (Chaplain) on Jan 17, 2006 at 13:22 UTC
    I wrote a PDF module a long time ago and have been using it for personal use. Recently I added html-like tables( has column and row spanning) to it and a few other items. Actually, I keep adding to it as I see reason to. A friend wanted to use it to create bi-lingual Biblical text and so I added unicode support and embeded TrueType fonts(which was lots of fun). You see I had to use iText (java) extensively at work, but really wanted something vastly easier to use for Perl, so I developed my own both as an exercise in learning the PDF Spec better and some Perl OOP. It's only real dependancy is Compress::Zlib. If you want to try it let me know. I call it MoosePdf, silly I know. But I gave it a really terse yet simple and IMHO intuitive syntax. For instance, one way to do the above program with just the raw text and image operators (with a table it would simpler) would be thus:
    use strict; use DBI; use MoosePdf; my $pdf = new MoosePdf('myPdf.pdf'); my $page = $pdf->addPage(size=>'595x852', margins=> 72); my $f = $page->addFont("Helvetica"); my $fb = $page->addFont("Helvetica-Bold"); my $image = $page->addImage(file=>"santa.jpg"); #path my $height = $image->getHeight; $page->showImage( image=>$image, x=>100, y=> 100+$height); $page->addText( text=>"Heading Here", x=>100, y=>100, font=>$fb, size= +> 10 ); my $dbh=DBI->connect("DBI:mysql:database=voice:host=localhost","userna +me","password") or die "$!\n"; my $sth=$dbh->prepare("select column1,column2,column3,column4,column5 +from test") or die "$!\n"; $sth->execute() or die "$!\n"; my $y = 750; while (my @row=$sth->fetchrow_array()) { $y -= 45; my $string=join(",",@row)."\n"; $page->addText( text=>$string, x=>100, y=>$y, font=>$f, size=> 10 ); if( $y < 100 ){ $page = $pdf->AddPage(); #inherits from existing page $page->addText(text=>"Heading Here", font=>$fb, size=>10, x=>100, y +=>800 ); $y = 750; } } $pdf->save();

    Anyway, if you want to try it, msg me with your email and I will send it and some examples to you if you will agree to not redistribute it as it needs more documentation.

    JamesNC
      I know this is an old post but I am interested to use ant test the module for PDF you had created, how could I get a copy and samples of this module like you said?