hotkitty wrote:
> First and foremost thanks for all the help I've received on this
> board, especially Gunnar who keeps this place running!
> 
> I've come a long way in my code and am trying to format some text and
> then put it into a nice pdf file. My problem is putting the formatted
> text into the pdf and for it to display correctly. I am just trying to
> justify the text and then set the margins. I can put the text in the
> pdf and it looks like it is trying to justify it but it won't wrap to
> the next line. I've looked at the documentation for both the
> Text::Autoformat and PDF::API2 modules but can't seem to figure it
> out.
> 
> I have 2 questions: 1. What am I doing wrong in that the text will
> appear fine when I "print" it but that it won't appear correctly in
> the pdf file? 2. Also, if the text is more than 1 page, how can I get
> it to automatically create a new page and continue onto the newly
> created page?
> 
> My code:
> 
> 
> #!/usr/bin/perl
> 
> use warnings;
> 
> use LWP::Simple;
> use HTML::TokeParser;
> use PDF::API2;
> use Text::Autoformat;
> 
> 
> # Print out the subtitle
> 
> my $oldtext = "trying to test if this sentence will be formatted the
> correct way when it appears in the pdf file. For some reason I just
> can't seem to get this to work. Well, maybe I can find help to get
> this working. If I could get it to work it would really make my kitty
> purrrr";
> 
> my $newtext = autoformat $oldtext, { left=>8, right=>70, justify =>
> 'full' };
> print $newtext;
> 
> #----create the pdf file----->
> my $file = "This PDF";
> my $pdf = PDF::API2->new( -file => "$file.pdf" );
> my $page = $pdf->page;
> $page->mediabox ('A4');
> $page->bleedbox(25,25,5,10);
> $page->cropbox  (7.5,7.5,97.5,120.5);
> my %font = (
>       Helvetica => {
>            Bold   => $pdf->corefont( 'Helvetica-Bold',    -encoding =>
> 'latin1' ),
>            Roman  => $pdf->corefont( 'Helvetica',         -encoding =>
> 'latin1' ),
>            Italic => $pdf->corefont( 'Helvetica-Oblique', -encoding =>
> 'latin1' ),
>        },
>        Times => {
>            Bold   => $pdf->corefont( 'Times-Bold',   -encoding =>
> 'latin1' ),
>            Roman  => $pdf->corefont( 'Times',        -encoding =>
> 'latin1' ),
>            Italic => $pdf->corefont( 'Times-Italic', -encoding =>
> 'latin1' ),
>        },
>    );
> 
> my $main_text = $page->text;
> $main_text->font( $font{'Times'}{'Roman'}, 2 );
> $main_text->fillcolor('black');
> $main_text->translate( 5, 100 );
> $main_text->text("$newtext");
> 
> $pdf->save;
> $pdf->end();

Unfortunately PDF files aren't the easiest of things to create, but the program
below does what you want and should help you get started. Remember that, unless
you change from the default, all units are 1/72 of an inch; the origin of the
page is at the lower left corner and values for Y increase upwards.

There is no point in preformatting the text as newlines are ignored, and the
extra spaces will simply increase the distance between words.

This program translates to a point 1in from the left and top edges of an A4 page
and then adds the text as a paragraph in a box 2in high and 1in from the
right-hand edge. Note also that I've set the font point size to 12 (you had 2
before which is nearly invisible) and added 16pt leading (the distance between
the bases of the lines of text).

HTH,

Rob




use strict;
use warnings;

use PDF::API2;

my $oldtext = "trying to test if this sentence will be formatted the
correct way when it appears in the pdf file. For some reason I just
can't seem to get this to work. Well, maybe I can find help to get
this working. If I could get it to work it would really make my kitty
purrrr";

my $file = 'This PDF';
my $pdf = PDF::API2->new( -file => "$file.pdf" );
my $page = $pdf->page;

my $times = $pdf->corefont( 'Times', -encoding => 'latin1');

my $main_text = $page->text;

$main_text->font($times, 12);
$main_text->fillcolor('black');
$main_text->lead(16);
$main_text->translate(72, 700);
$main_text->paragraph($oldtext, 450, 144);

$pdf->save;
$pdf->end;

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to