Aldebaran has asked for the wisdom of the Perl Monks concerning the following question:
Hello Monks,
I'm looking for finishing touches on a perl-based list making capability by means of PDF::API2. I can't figure out the vertical spacing. I want the quote to follow the header, but as it is, it prints out on the same line. Furthermore, the text is chopped, rather than allowed to play out in paragraph form. (Maybe the mediabox methods?) Here's what I have
#!/usr/bin/perl use v5.14; use utf8; use PDF::API2; my @months = qw(January February March April May June July August September October November December); my @days = qw(Sun Mon Tue Wed Thu Fri Sat Sun); my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) = localtime(); print "$mday $months[$mon] $days[$wday]\n"; my $day = $mday + 1; my $yr = $year + 1900; my $header = "List for $days[$wday+1], $months[$mon] $day, $yr"; my $pdf = PDF::API2->new( width => 595, # A4 dimensions in point height => 842, # 1 point = 1/72 inch ); my $page = $pdf->page; my $txt = $page->text; my $font = $pdf->corefont('Times-Roman'); #header $txt->font( $font, 32 ); $txt->translate( 100, 650 ); $txt->text( $header, -encoding => 'utf8' ); #add randomtext my $quote = get_quote(); print "$quote\n"; $txt->font( $font, 20 ); $txt->translate( 100, 650 ); $txt->text( $quote, -encoding => 'utf8' ); my @task = ( 'wake no later than 8', 'stretch/take meds', 'make coffee/eat cereal', 'eat salad', 'bring food',, ); my $line = $page->gfx; $txt->font( $font, 20 ); my $vspace = 70; for my $i ( 0 .. $#task ) { my $linepos = 500 - ( $i * $vspace ); my $msg = '[ ] ' . $task[$i]; drawline( $line, $linepos ); $txt->translate( 70, $linepos + 10 ); $txt->text($msg); } my $new_name = join( '_', $months[$mon], $day, $yr, '.pdf' ); say "new_name is $new_name"; $pdf->saveas($new_name); sub drawline { my ( $line, $y ) = @_; my $x1 = 50; my $x2 = 550; $line->linewidth(3); $line->move( $x1, $y ); $line->line( $x2, $y ); $line->stroke; } sub get_quote { use HTML::TreeBuilder 5 -weak; my $site = 'http://motivationgrid.com/50-inspirational-quotes-to-li +ve-by/'; my $tree = HTML::TreeBuilder->new_from_url($site); my @quotes; for ( $tree->look_down( _tag => 'p' ) ) { if ( ( my $t = $_->as_text ) =~ m{ ^ \d+ \. \s+ }x ) { $t =~ s{ \x{2019} }{'}gx; $t =~ s{ \xA0 }{ }gx; $t =~ s{ \x{2013} }{--}gx; push @quotes, $t; } } my $randomelement = $quotes[ rand @quotes ]; print "$randomelement\n"; $randomelement =~ s/^\d+\.\s+//; return $randomelement; }
Thanks for your comment,
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: vertical spacing with PDF::API2
by poj (Abbot) on May 22, 2016 at 16:42 UTC | |
by Aldebaran (Curate) on May 24, 2016 at 08:51 UTC | |
by poj (Abbot) on May 24, 2016 at 09:50 UTC | |
by soonix (Chancellor) on May 24, 2016 at 14:32 UTC | |
by Aldebaran (Curate) on Jun 02, 2016 at 03:14 UTC | |
by soonix (Chancellor) on Jun 02, 2016 at 19:23 UTC |