in reply to PDF::API2 text problem

I've found that directly inserting text into a PDF can be fraught with danger. I suspect that the text/graphics state has been left in an altered state; I.E. its undergone rotation or translation etc. I've found it more robust to recreate each page in the PDF and import each page as a form element. Then output any new text or graphics.
#!/usr/bin/perl use warnings; use strict; use PDF::API2; my $file = shift (@ARGV); my $pdf_in = PDF::API2->open($file); my $pdf = PDF::API2->new; my $pagenum = 1; my $page_in = $pdf_in->openpage($pagenum); my $page = $pdf->page(0); $page->mediabox($page_in->get_mediabox); $page->trimbox($page_in->get_trimbox); my $gfx = $page->gfx; my $xo = $pdf->importPageIntoForm($pdf_in, $pagenum); $gfx->formimage($xo, 0, 0, # x y 1); # scale my $font = $pdf->corefont('Helvetica-Bold'); my $text = $page->text(); $text->font($font,10); #10-point font size $text->translate(15,770); #top left corner.. 0,0 origin starts in the +bottom left corner $text->text('blah blah sample text'); $pdf->saveas($file);

Replies are listed 'Best First'.
Re^2: PDF::API2 text problem
by samwalker04 (Initiate) on Aug 31, 2012 at 01:12 UTC
    Thanks for the suggestion! Seems like that should work, as long as I wrap most of that code in a loop to make sure I import every page of the PDF, not just the first page. I'll give this a shot tomorrow and report back my results.
      It's working great. I simply wrapped the code in a while loop to process every page, but only stamp the new text on the first page. Thank you so much for your help.