package pdftest; use strict; use English; use CGI qw(:all); my ($curr, $status, $message); sub pdftest { # This call to CGI initialises all the required variables $curr = CGI->new(); # This generates the HTML output for the test display page my $text1 = param("SUBMIT"); print header(); print start_html(-TITLE=>'Hello Trevor',-BGCOLOR=>'228b22',-TEXT=>'FFFFFF',-ALINK=>'FFFFFF', -VLINK=>'FFFFFF'); print center(); print "\n\n"; print h1($text1); print "\n\n"; print br(); # This call to PDFREP generates the first line of data for the pdf file # This should be called to generate the heading line once per output file # It will open the output file with the given name and the given directory. # It returns a status flag = 1 succesful and 0 failure and a message text. # The .pdf file extension is added automatically to the output file # It also opens the temporary file for page data which is the same name and directory # but the extension is .tmp. So make sure there is enough room in the area you are # working in. The tmp file is deleted at the end of run or in case of an error. # All sections of PDFREP return a status flag and error message this is so that the Package # will not fall over and leave the error coding to the individual programmer. # Nice open source let you do what you want huh. my $filenam = "pdftest1"; my $filedir = "../"; ($status, $message) = PDFREP->heading($filenam, $filedir); # This is the error checking if failed files have to be closed and deleted by the PDFREP Package. # This is done by calling the crashed part of the package with no parameters if (!$status) { print "

PDF FILE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } # The next item to setup in generating the pdf file is the fonts used throughout the document. # This is done by calling FONTSET with two parameters. # 1 = The font reference name - this will be used when writing out the data # 2 = The font to be used i.e. Arial or Helvetica etc. # # For this example two fonts will be used as per the example above. ($status, $message) = PDFREP->fontset('F1','Arial'); if (!$status) { print "

PDF FONT CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->fontset('F2','Helvetica-Bold'); if (!$status) { print "

PDF FONT CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } # So now we have the PDF file opened and ready for input the fonts have been specified so now lets # start writing the data. OH Joy OH Rapture. # This is done by calling the Pagedata section of PDFREP. This section has various parameters # 1 The type of data passed # np = new page # nl = new line # You specify one of these as the first parameter passed to identify what your upto. # Data is written out one line at a time so try not to exceed the characters. # Always start with new page. # The other parameters passed are # 2 = The column offset . This is the amount of characters from the left hand column of the line. # 3 = The font size to be used with the font set later. It is the text point size standard is 12 # 4 = The name of the font you want to use as previously set # 5 = The size of the font on the next data line to allow for correct data throws. # 6 = Italic 0 = No 1 = yes > 1 get some weird results. # 7 = Red colour # 8 = Green colour # 9 = Blue colour 0 0 0 = black 1 1 1 = white # 10 = The data. This is the textual data you require. # For a new page line there are two extra parameters required page size and orientation. The document # must have the same all the way through # 11 = Page Size LE = letter A4 = A4 # 12 = Page Orientation PO = Portrait LA = Landscape # Leaving these blank defaults to Letter Portrait # Again it is a good idea to check the status after every line of data output just in case an error # occurs like run out of disc space. OK in this example its a bit of a pain but thats life normally # this would be a nice loop. ($status, $message) = PDFREP->pagedata('np','0','12','F2','12','0','0','0','0','This is the first bit of text','LE','LA'); if (!$status) { print "

PDF NEW PAGE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the second bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the third bit of data'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the four bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F2','12','0','0','0','0','This is the five bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the six bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the seven bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the eight bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the ninth bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the tenth bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('np','0','12','F2','12','0','0','0','0','This is the first bit of text','LE','LA'); if (!$status) { print "

PDF NEW PAGE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the second bit of text'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } ($status, $message) = PDFREP->pagedata('nl','0','12','F1','12','0','0','0','0','This is the third bit of data'); if (!$status) { print "

PDF NEW DATA LINE CREATION FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } # OK so are all the data lines and pages written now. Hope so because it's time to write the # PDF file. This might take a minute because it's playing with reading the temporary file and # outputting this to the PDF File, It will also build the page cross reference list and all # the required trailer records just for fun or to make it easier for the programmer to remember what # is required when producing a PDF like the data haha. # So you think all the parameters are over well think again # 1 = Page size LE = Letter and A4 = A4 defaults to letter # 2 = Page orientation PO = Portrait and LA = Landscape ($status, $message) = PDFREP->writepdf('LE','LA'); if (!$status) { print "$status - $message
\n"; print "

PDF WRITE THE PDF FILE FAILED

- $message

\n"; ($status, $message) = PDFREP->crashed(); print "$status - $message
\n"; } else { print "$status - $message
\n"; } my $fileout = $filedir . $filenam . ".pdf"; print br(); print "\n\n"; print (""); print (""); print ("PDF file is ", $filenam); print (""); print (""); print "\n\n"; print end_html(); print "\n\n"; } 1;