table of contents
PDF::Report(3pm) | User Contributed Perl Documentation | PDF::Report(3pm) |
NAME¶
PDF::Report - A wrapper written for PDF::API2
SYNOPSIS¶
use PDF::Report; my $pdf = new PDF::Report(%opts);
DESCRIPTION¶
This is a wrapper for Alfred Reibenschuh's PDF::API2 Defines methods to create PDF reports
VERSION¶
1.36
METHODS¶
new¶
my $pdf = new PDF::Report(%opts);
Creates a new pdf report object. If no %opts are specified the module will use the factory defaults.
Example:
my $pdf = new PDF::Report(PageSize => "letter", PageOrientation => "Landscape"); my $pdf = new PDF::Report(File => $file);
%opts:
PageSize - '4A', '2A', 'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', '4B', '2B', 'B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'LETTER', 'BROADSHEET', 'LEDGER', 'TABLOID', 'LEGAL', 'EXECUTIVE', '36X36' PageOrientation - 'Portrait', 'Landscape'
newpage¶
$pdf->newpage($nopage);
Creates a new blank page. Pass $nopage = 1 to toggle page numbering.
openpage¶
$pdf->openpage($index);
If no index is specified, this will open the last page of the document.
importpage¶
Import page from another PDF document, see PDF::API2
clonepage¶
Clone page within document, see PDF::API2
getPageDimensions¶
($pagewidth, $pageheight) = $pdf->getPageDimensions();
Returns the width and height of the page according to what page size chosen in "new".
addRawText¶
$pdf->addRawText($text, $x, $y, $color, $underline, $indent, $rotate);
Add $text at position $x, $y with $color, $underline, $indent and/or $rotate.
PDF::API2 Removes all space between every word in the string you pass and then rejoins each word with one space. If you want to use a string with more than one space between words for formatting purposes, you can either use the hack below or change PDF::API2 (that's what I did ;). The code below may or may not work according to what font you are using. I used 2 \xA0 per space because that worked for the Helvetica font I was using.
To use a fixed width string with more than one space between words, you can do something like:
sub replaceSpace { my $text = shift; my $nbsp = "\xA0"; my $new = ''; my @words = split(/ /, $text); foreach my $word (@words) { if (length($word)) { $new.=$word . ' '; } else { $new.=$nbsp . $nbsp; } } chop($new); return $new; }
setAddTextPos¶
$pdf->setAddTextPos($hPos, $vPos);
Set the position on the page. Used by the addText function.
getAddTextPos¶
($hPos, $vPos) = $pdf->getAddTextPos();
Return the (x, y) value of the text position.
setAlign¶
$pdf->setAlign($align);
Set the justification of the text. Used by the addText function.
getAlign¶
$align = $pdf->getAlign();
Returns the text justification.
wrapText¶
$newtext = $pdf->wrapText($text, $width);
This is a helper function called by addText, which can be called by itself. wrapText() wraps $text within $width.
addText¶
$pdf->addText($text, $hPos, $textWidth, $textHeight);
Takes $text and prints it to the current page at $hPos. You may just want to pass this function $text if the text is "pre-wrapped" and setAddTextPos has been called previously. Pass a $hPos to change the position the text will be printed on the page. Pass a $textWidth and addText will wrap the text for you. $textHeight controls the row height.
addParagraph¶
$pdf->addParagraph($text, $hPos, $vPos, $width, $height, $indent, $lead);
Add $text at ($hPos, $vPos) within $width and $height, with $indent. $indent is the number of spaces at the beginning of the first line.
centerString¶
$pdf->centerString($a, $b, $yPos, $text);
Centers $text between points $a and $b at position $yPos. Be careful how much text you try to jam between those points, this function shrinks the text till it fits!
setRowHeight¶
getStringWidth¶
$pdf->getStringWidth($String);
Returns the width of $String according to the current font and fontsize being used.
addImg¶
$pdf->addImg($file, $x, $y);
Add image $file to the current page at position ($x, $y).
addImgScaled¶
$pdf->addImgScaled($file, $x, $y, $scale);
Add image $file to the current page at position ($x, $y) scaled to $scale.
setGfxLineWidth¶
$pdf->setGfxLineWidth($width);
Set the line width drawn on the page.
getGfxLineWidth¶
$width = $pdf->getGfxLineWidth();
Returns the current line width.
drawLine¶
$pdf->drawLine($x1, $y1, $x2, $y2);
Draw a line on the current page starting at ($x1, $y1) and ending at ($x2, $y2).
drawRect¶
$pdf->drawRect($x1, $y1, $x2, $y2);
Draw a rectangle on the current page. Top left corner is represented by ($x1, $y1) and the bottom right corner is ($x2, $y2).
shadeRect¶
$pdf->shadeRect($x1, $y1, $x2, $y2, $color);
Shade a rectangle with $color. Top left corner is ($x1, $y1) and the bottom right corner is ($x2, $y2).
- Defined color-names are:
- aliceblue, antiquewhite, aqua, aquamarine, azure, beige, bisque, black,
blanchedalmond, blue, blueviolet, brown, burlywood, cadetblue, chartreuse,
chocolate, coral, cornflowerblue, cornsilk, crimson, cyan, darkblue,
darkcyan, darkgoldenrod, darkgray, darkgreen, darkgrey, darkkhaki,
darkmagenta, darkolivegreen, darkorange, darkorchid, darkred, darksalmon,
darkseagreen, darkslateblue, darkslategray, darkslategrey, darkturquoise,
darkviolet, deeppink, deepskyblue, dimgray, dimgrey, dodgerblue,
firebrick, floralwhite, forestgreen, fuchsia, gainsboro, ghostwhite, gold,
goldenrod, gray, grey, green, greenyellow, honeydew, hotpink, indianred,
indigo, ivory, khaki, lavender, lavenderblush, lawngreen, lemonchiffon,
lightblue, lightcoral, lightcyan, lightgoldenrodyellow, lightgray,
lightgreen, lightgrey, lightpink, lightsalmon, lightseagreen,
lightskyblue, lightslategray, lightslategrey, lightsteelblue, lightyellow,
lime, limegreen, linen, magenta, maroon, mediumaquamarine, mediumblue,
mediumorchid, mediumpurple, mediumseagreen, mediumslateblue,
mediumspringgreen, mediumturquoise, mediumvioletred, midnightblue,
mintcream, mistyrose, moccasin, navajowhite, navy, oldlace, olive,
olivedrab, orange, orangered, orchid, palegoldenrod, palegreen,
paleturquoise, palevioletred, papayawhip, peachpuff, peru, pink, plum,
powderblue, purple, red, rosybrown, royalblue, saddlebrown, salmon,
sandybrown, seagreen, seashell, sienna, silver, skyblue, slateblue,
slategray, slategrey, snow, springgreen, steelblue, tan, teal, thistle,
tomato, turquoise, violet, wheat, white, whitesmoke, yellow, yellowgreen
or the rgb-hex-notation:
#rgb, #rrggbb, #rrrgggbbb and #rrrrggggbbbb
or the cmyk-hex-notation:
%cmyk, %ccmmyykk, %cccmmmyyykkk and %ccccmmmmyyyykkkk
and additionally the hsv-hex-notation:
!hsv, !hhssvv, !hhhsssvvv and !hhhhssssvvvv
drawPieGraph¶
$pdf->drawPieGraph($x, $y, $size, $rData, $rLabels);
Method to create a piegraph using a reference to an array of values. It also takes a reference to an array for labels for each data value. A legend with all the colors and labels will appear if $rLabels is passed. $x and $y are the coordinates for the center of the pie and $size is the radius.
getcolors¶
Returns list of available colours
drawBarcode¶
$pdf->drawBarcode($x,
$y, $scale,
$frame, $type,
$code, $extn,
$umzn,
$lmzn, $zone,
$quzn, $spcr,
$ofwt, $fnsz,
$text);
This is really not that complicated, trust me! ;) I am pretty unfamiliar with barcode lingo and types so if I get any of this wrong, lemme know! This is a very flexible way to draw a barcode on your PDF document. $x and $y represent the center of the barcode's position on the document. $scale is the size of the entire barcode 1 being 1:1, which is all you'll need most likely. $type is the type of barcode which can be codabar, 2of5int, 3of9, code128, or ean13. $code is the alpha-numeric code which the barcode will represent. $extn is the extension to the $code, where applicable. $umzn is the upper mending zone and $lmzn is the lower mending zone. $zone is the the zone or height of the bars. $quzn is the quiet zone or the space between the frame and the barcode. $spcr is what to put between each number/character in the text. $ofwt is the overflow width. $fnsz is the fontsize used for the text. $text is optional text beneathe the barcode.
setFont¶
$pdf->setFont($font);
Creates a new font object of type $font to be used in the page.
getFont¶
$fontname = $pdf->getFont();
Returns the font name currently being used.
setSize¶
$pdf->setSize($size);
Sets the fontsize to $size. Called before setFont().
getSize¶
$fontsize = $pdf->getSize();
Returns the font size currently being used.
pages¶
$pages = $pdf->pages();
The number of pages in the document.
setInfo¶
$pdf->setInfo(%infohash);
Sets the info structure of the document. Valid keys for %infohash: Creator, Producer, CreationDate, Title, Subject, Author, etc.
getInfo¶
%infohash = $pdf->getInfo();
Gets meta-data from the info structure of the document. Valid keys for %infohash: Creator, Producer, CreationDate, Title, Subject, Author, etc.
saveAs¶
Saves the document to a file.
# Save the document as "file.pdf" my $fileName = "file.pdf"; $pdf->saveAs($fileName);
Finish¶
Returns the PDF document as text. Pass your own custom routine to do things on the footer of the page. Pass 'roman' for Roman Numeral page numbering.
# Hand the document to the web browser print "Content-type: application/pdf\n\n"; print $pdf->Finish();
getPDFAPI2Object¶
Object method returns underlying PDF::API2 object
AUTHOR EMERITUS¶
Andrew Orr
MAINTAINER¶
Aaron TEEJAY Trevena
BUGS¶
Please report any bugs or feature requests to "bug-calendar-model at rt.cpan.org", or through the web interface at <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=PDF-Report>. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT¶
You can find documentation for this module with the perldoc command.
perldoc PDF::Report
You can also look for information at:
- RT: CPAN's request tracker (report bugs here)
- AnnoCPAN: Annotated CPAN documentation
- CPAN Ratings
- METACPAN
- GITHUB
SEE ALSO¶
LICENSE AND COPYRIGHT¶
Copyright 2008-2010 Andy Orr
Copyright 2013 Aaron Trevena
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See <http://dev.perl.org/licenses/> for more information.
2021-01-05 | perl v5.32.0 |