hotkitty wrote: > 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?
First of all I really should have coded my $page = $pdf->page; $page->mediabox('A4'); Otherwise your page sizes will be something else - probably 8in x 11in. You really need to learn PDF to do be able to create PDF documents. Take a look here http://www.adobe.com/devnet/pdf/pdf_reference.html But in the mean time take a look at the call to paragraph $main_text->paragraph($oldtext, 450, 144); which flows the text into a 2in high rectangle. If the text won't all fit then the method returns any excess characters, so you could write my $over = $main_text->paragraph($oldtext, 450, 36); print $over, "\n"; which puts as much of the text as possible into a half-inch high rectangle and print whatever remains to STDOUT. Try it and prove to yourself that it works. You need to do a lot of arithmetic to format the text as you want. First decide on your font size - my 12pt font was a random guess. If you have only 38 lines per page you may want something bigger. Then choose your leading - it's traditional to use about 20% over your font size, so for a 12pt font 14pt leading is more appropriate that the 16pt that I coded. Finally, if you want 38 lines per page then the bounding rectangle for your paragraph should be 38 x leading. Above all, remember that what you are doing is hard, and you should experiment a lot and look for examples in the Web. HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/