#!/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-live-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; }