#!/usr/bin/perl -w use perlchartdir; use CGI qw(:standard); use strict; no warnings; use RTF::Writer; use constant mm => 25.4/72; use constant in => 1/72; use constant pt => 1; #------------------------------------------------------------------------------------------# #-------------------------- Main Variables (email,fonts,graphics, ect.) -------------------# #------------------------------------------------------------------------------------------# my $q = new CGI; print $q->header( "application/rtf" ); my %valueHash; my $fh; my $RTF_obj; #--> File variables #-----------------------> my $ID = "12345"; my $currencySymbol = $valueHash{"CurrencySymbol"}; my $rtfReport = "rtf_PCWS$ID".'.rtf'; my $rtfReportDel = "rtf_PCWS$ID".'.rtf'; my $CompanyName = "Company Name"; #-------------------------------------------------------------------------------------------------------------------------------------------------# #------------------------------------------------------------- START RTF -------------------------------------------------------------------------# #-------------------------------------------------------------------------------------------------------------------------------------------------# #--> Declare new rtf object either save to disk or save to string #$fh = RTF::Writer->new_to_file($rtfReport); $fh = RTF::Writer->new_to_string(\$RTF_obj); #--> MUST write a prolog - font and color table (RGB) #--> Font: when calling font use \f0 (or number of the array, to change font size double the size #--> example: for 12 point font do - \fs24 $fh->prolog( fonts => ['Arial'], colors => [ undef, # color 0 == black [255,0,0], # color 1 == red [0,128,0], # color 2 == green [0,0,255], # color 3 == blue [255,255,0], # color 4 == yellow [255,255,255],# color 5 == white [200,200,200],# color 6 == light gray [187,204,224],# color 7 == table blue [144,172,202],# color 8 == table header blue [102,102,102],# color 9 == gray ], ); #--> Setting up margins (these MUST be here) #----------------------------------------------> my $iMarginLeftInches = my $iMarginRightInches = 500; my $iMarginTop = 500; #--> Need bigger bottom margin for footer to fit: #-------------------------------------------------> my $iMarginBottom = 500; my $iMarginLeft = $iMarginLeftInches; my $iMarginRight = $iMarginRightInches; eval "\$fh->Margt$iMarginTop"; eval "\$fh->Margl$iMarginLeft"; eval "\$fh->Margr$iMarginRight"; eval "\$fh->Margb$iMarginBottom"; #### PAGEONE: { #---> Write Text ( parameters, Text ) - also does paragraphs #------------------------------------------------------------> writeText( '\par \f0 \fs20 \cf0\b', "Company Name: $CompanyName", ); lineBreak(); my @tableProp2 = ( widths => [inches(4), inches(4)], #--> width of each column align => 'l l ', ); my @tableProp2b = ( widths => [inches(4), inches(4)], #--> width of each column align => 'l l ', ); my $oDecl2 = RTF::Writer::TableRowDecl->new(@tableProp2,); $oDecl2->add_bgcolors(8); # Adds background color using color hash $fh->row($oDecl2, \'\fs20\b\cf5 rtf Desktop Manager', "Price"); my $oDecl2 = RTF::Writer::TableRowDecl->new(@tableProp2b,); $oDecl2->add_bgcolors(5); # Adds background color using color hash $fh->row($oDecl2, \'\fs20\b Software Services (Month to Month)', ""); $fh->row($oDecl2, \'\fs20 Asset Discovery (AD)', "0.45"); $fh->row($oDecl2, \'\fs20 Asset Management (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Software Distribution (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Patch Management (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Virus Protection (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 On-line Backup 5 GB (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 On-line Each Additional 5 GB (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Remote Control (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Data Encryption', "0.45"); $fh->row($oDecl2, \'\fs20 ', ""); $fh->row($oDecl2, \'\fs20\b Software Service Bundles', ""); $fh->row($oDecl2, \'\fs20 Management Suite (Asset Discovery and Asset Management) (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Compliance (Asset Discovery & Asset Management & Software Distribution) (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 Productivity (Asset Discovery & Asset Management & Software Distribution & Patch Management) (price/seat/month)', "0.45"); $fh->row($oDecl2, \'\fs20 ', ""); $fh->row($oDecl2, \'\fs20\b Software Services (12 month)', ""); $fh->row($oDecl2, \'\fs20 Asset Discovery (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Asset Management (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Software Distribution (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Patch Management (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Virus Protection (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 On-line Backup 5 GB (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 On-line Backup Additional 5 GB (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Remote Control (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Data Encryption', "0.45"); $fh->row($oDecl2, \'\fs20 ', ""); $fh->row($oDecl2, \'\fs20\b Software Service Bundles (12 month)', ""); $fh->row($oDecl2, \'\fs20 Management Suite (Asset Discovery & Asset Management) (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Compliance (Asset Discovery & Asset Management & Software Distribution) (price/seat/12 month)', "0.45"); $fh->row($oDecl2, \'\fs20 Productivity (Asset Discovery & Asset Management & Software Distribution & Patch Management) (price/seat/12 month)', "0.45"); } FOOTER: { my $sFooterHead = qq{\\pard\\ql\\plain\\f0\\fs18\\'a9}; my $sFooterTail = qq/\\par}/; $fh->print(\qq'{\\footer $sFooterHead', " Copyright 2001-2007 Alinean, Inc. and rtf Marketing, L.P. \t\t\t\t Page ", \q'\chpgn', \$sFooterTail, ); } # end of FOOTER block $fh->print(\$RTF_obj); $fh->close(); #-------------------------------------------------------------------------------------------------------------------------------------------------# #------------------------------------------------------------- FUNCTIONS -------------------------------------------------------------------------# #--> line breaks pass number of lines #--------------------------------------> sub lineBreak{ my $line = q'\par'; $fh->print(\$line); } #--> Creat Table #----------------> sub newtable(){ my(@tableProp, $tableColor, @localData) = @_; my $decl = RTF::Writer::TableRowDecl->new(@tableProp,); $decl->add_bgcolors($tableColor); $fh->row($decl, @$_) for @localData; } #--> Make image #---------------> sub newImage(){ $fh->paragraph( $fh->image( 'filename' => $_[0], ), ); } #--> Inches from twips #----------------------> sub inches{ my ($inches) = @_; my $twips = 1440; $inches = ($inches * $twips); return $inches; } #--> Write text Function #-----------------------> sub writeText(){ my($rtfFormat, $writeText) = @_; $fh->paragraph( \$rtfFormat, # 12pt, bold, italic "$writeText" ); } __END__