Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Adding Image to PDF

by Anonymous Monk
on Oct 10, 2012 at 15:43 UTC ( #998241=perlquestion: print w/replies, xml ) Need Help??
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi Monks!
I am working on creating pdf docs using "PDF::API2" and "PDF::Table" but I cant get or find anything about adding an image to the pdf, has anyone here done anyhting like that that could show me how to add a simple image file to the pdf using the modules above?
Code sample:
#!/usr/bin/perl use strict; use warnings; use PDF::API2; use PDF::Table; my $pdftable = new PDF::Table; my $pdf = new PDF::API2(-file => "table_test.pdf"); my $page = $pdf->page; #my $image = $pdf->image_jpeg( "images/logo.jpeg" ); #$pdf->page( $image->width, $image->height ); #$pdf->image( $image, 0, 0 ); # some data to layout my $some_data =[ ["image here","1 Lorem ipsum dolor", "Donec odio neque, faucibus vel", "consequat quis, tincidunt vel, felis."], ["Nulla euismod sem eget neque.", "Donec odio neque", "Sed eu velit."], ]; my $left_edge_of_table = 50; # build the table layout $pdftable->table( # required params $pdf, $page, $some_data, x => $left_edge_of_table, w => 495, start_y => 750, next_y => 700, start_h => 300, next_h => 500, # some optional params padding => 5, padding_right => 10, background_color_odd => "gray", background_color_even => "lightblue", #cell background color for +even rows ); # do other stuff with $pdf $pdf->saveas();

Thanks for helping!

Replies are listed 'Best First'.
Re: Adding Image to PDF
by Eliya (Vicar) on Oct 10, 2012 at 15:59 UTC
    ... my $image = $pdf->image_jpeg( "images/logo.jpeg" ); $page->gfx->image( $image, 0, 0 ); ...

    The key thing here is to call ->gfx on the page object (which kind of gets you the "graphics context" of that page).

Re: Adding Image to PDF
by frozenwithjoy (Priest) on Oct 10, 2012 at 15:53 UTC
Re: Adding Image to PDF
by MilanorTSW (Beadle) on Oct 10, 2012 at 16:06 UTC
    You'll have to use the gfx object method for that, AFAIK.
    my $gfx = $page->gfx; my $img = $pdf->image("images/logo.jpeg", 100, 60); # define the image + and image dimensions $gfx->image($img, $x, $y); # Add the image, including coordinates $gfx->close; # close up
      No luck, tried and getting an error:
      Can't locate object method "image" via package "PDF::API2" at +line 32.

      If I change this line:
      my $img = $pdf->image("images/logo.jpeg", 100, 60); # define the image + and image dimensions

      my $img = $pdf->image_jpeg("images/logo.jpeg", 100, 60); # define the +image and image dimensions

      I am getting this:
      Can't call method "val" on an undefined value at /usr/local/share/perl +5/PDF/API2/Resource/XObject/ line 66.

      Any more input? Thanks!
        The last error generally means that such image does not exist and as such the value is left unidentified. Are you sure the image is there? Also try $gfx->stroke; and $gfx->compress(); after closing.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://998241]
Front-paged by Corion
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (3)
As of 2018-01-22 13:28 GMT
Find Nodes?
    Voting Booth?
    How did you see in the new year?

    Results (233 votes). Check out past polls.