Re: Text formatting issues

[email protected] (hotkitty)
Newsgroups perl.beginners
Organization http://groups.google.com
Message-ID <[email protected]>
On May 7, 8:40 am, [email protected] (Rob Dixon) wrote:
> 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;- Hide quoted text -
>
> - Show quoted text -

Thank you! Again, you guys are extremely helpful! The code works
perfectly.
I want each PDF file to have 38 lines of text per page. If the text is
over 38 lines, then I want to create a new page and put that text in
page 2. Again, if page 2 has more than 38 lines of text, then add a
3rd page and so on and so forth until the end of the text that I have.
How would I do that in this situation?
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.