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

PDF::API2 is confusing me to death..

by Bentov (Novice)
on Sep 02, 2005 at 16:18 UTC ( [id://488699]=perlquestion: print w/replies, xml ) Need Help??

Bentov has asked for the wisdom of the Perl Monks concerning the following question:

Greetings..I've been trying to get back into using perl, which just means I have more and more questions. I have been trying to use the PDF::API to create some pdfs from some text files. I know there are some converters already outthere, but I would like to just do it myself. This is what I have so far. It's not pretty I know....
#!/usr/bin/perl -w use strict; use PDF::API2; my $counter=0; my @line; my $line; my @files; my $files; my $xc=10; my $yc=780; my $pdf = PDF::API2->new(-file => "test.pdf"); my $page = $pdf->page; my $fnt = $pdf->corefont('Arial',-encode => 'latin1'); my $txt = $page->hybrid; $page->mediabox('LETTER'); $txt->textstart; $txt->font($fnt, 10); my $startdir="x:\\omni\\omni\\surgpref\\"; chdir($startdir); @files = <*.eal>; #.eal are just .txt files, I actually many differen +t extensions, that just designate different people. while ($files[$counter] ne "") { print("Encoding $files[$counter] to PDF format\n"); open(INFILE, "$startdir/$files[$counter]"); $line=<INFILE>; while($line ne "") { $txt->translate($xc,$yc); $yc-=10; if($yc==0){ $pdf->page(); $yc=780; } $txt->text($line); $counter++; $line=<INFILE>; } } $txt->textend; $pdf->save; $pdf->end( );
My problem is this(as far as I know the only one I have so far) after I have created a new page, the text just continues to be written on the first page. What am I missing? I have looked at multiple tutorials and have tried to understand the documentation, but I'm still not understanding how to switch to the next page to begin writing to it... Thanks in advance for you assistance. Bentov

Replies are listed 'Best First'.
Re: PDF::API2 is confusing me to death..
by mpeters (Chaplain) on Sep 02, 2005 at 17:24 UTC
    I you want to add a new page, you are correct in using the $pdf->page() method, but you need to tell it what page to create. By default it will just give you the first page (and create it if it doesn't exist). So doing something like this (untested):
    $page_num = 1; while ($files[$counter] ne "") { print("Encoding $files[$counter] to PDF format\n"); open(INFILE, "$startdir/$files[$counter]"); $line=<INFILE>; while($line ne "") { $txt->translate($xc,$yc); $yc-=10; if($yc==0){ $pdf->page($page_count); $txt = $page->hybrid; $txt->textstart; $txt->font($fnt, 10); $page->mediabox('LETTER'); $yc=780; } $txt->text($line); $counter++; $line=<INFILE>; } }
    Is probably more like what you want.

    -- More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. -- Bruce Schneier
      Hmmm, I am able to create multiple pages, but the text just writes over itself on the 1st page. I have some problems with your code,but I see where you are going with it, I'll try to make some mods to my program. I guess though I still have the problem that I don't understand what is supposed to select the second page. I know what creates the additional pages, but what says "hey, write to me now buddy!" Bentov
        I know what creates the additional pages, but what says "hey, write to me now buddy!"
        That's what the openpage() method does. It will return the page object. From that you can add whatever you want to that page. This is how I usually do that:
        my $current_page = $pdf->openpage($page_num); $current_page->gfx->textlabel( 100, # X coord 200, # Y coord $font, $font_size, "Some text to write", ); $current_page->update();

        -- More people are killed every year by pigs than by sharks, which shows you how good we are at evaluating risk. -- Bruce Schneier

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2024-04-18 17:48 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found