Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Add Border to a PDF file

by snoopy (Deacon)
on Jul 24, 2007 at 03:23 UTC ( #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');


Comment on Re: Add Border to a PDF file
Download Code
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
Node Status?
node history
Node Type: note [id://628373]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (16)
As of 2015-07-28 21:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (259 votes), past polls