Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: Add Border to a PDF file

by snoopy (Curate)
on Jul 24, 2007 at 03:23 UTC ( [id://628373]=note: print w/replies, xml ) Need Help??


in reply to Add Border to a PDF file

Do you mean adding a border around each page?

The following uses PDF::API2 directly to draw a 1 pt border 10pt (~3.5mm) in from the edge of the page

#!/usr/bin/perl use warnings; use strict; use PDF::API2; my $pdf = PDF::API2->open('/tmp/test.pdf'); foreach my $pagenum (1 .. $pdf->pages) { my $page = $pdf->openpage($pagenum); # # Get the page size # my @mbox = $page->get_mediabox; my $gfx = $page->gfx; # # Draw a box 10pt in from the edges of the page # $gfx->linewidth(1); $gfx->strokecolor('#000000'); $gfx->rect($mbox[0]+10, $mbox[1]+10, $mbox[2]-20, $mbox[3]-20); $gfx->stroke; } $pdf->savas('/tmp/test1.pdf');

Replies are listed 'Best First'.
Re^2: Add Border to a PDF file
by artist (Parson) on Jul 24, 2007 at 05:50 UTC
    Thanks, your code is a really a good beginning. Problem here that the border overwrites the content of the PDF file. In that cause, I would rather draw the border outside the content, or shrink the page first and then draw the border.
    --Artist
      Here's a second cut. This preserves the page size and shrinks the graphics by 10%:
      #!/usr/bin/perl use warnings; use strict; use PDF::API2; my $pdf_in = PDF::API2->open('/tmp/test.pdf'); my $pdf_out = PDF::API2->new; foreach my $pagenum (1 .. $pdf_in->pages) { my $page_in = $pdf_in->openpage($pagenum); # # create new page # my $page_out = $pdf_out->page(0); # # Get the page size # my @mbox = $page_in->get_mediabox; # # Inherit mediabox $page_out->mediabox(@mbox); # # # copy page as a form. reduce slightly. # my $xo = $pdf_out->importPageIntoForm($pdf_in, $pagenum); my $gfx = $page_out->gfx; $gfx->formimage($xo, my $_x = 20, my $_y = 20, my $_scale = .9); # # Draw a box 10pt in from the edges of the page # $gfx->linewidth(1); $gfx->strokecolor('#000000'); $gfx->rect($mbox[0]+10, $mbox[1]+10, $mbox[2]-20, $mbox[3]-20); $gfx->stroke; } $pdf_out->saveas('/tmp/test2.pdf');
        Thank you very much. This works perfect.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://628373]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (4)
As of 2024-04-25 23:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found