PDF#
NAME#
Kernel::System::PDF - pdf lib
DESCRIPTION#
Functions for generating PDF files.
PUBLIC INTERFACE#
new()#
Don’t use the constructor directly, use the ObjectManager instead:
my $PDFObject = $Kernel::OM->Get('Kernel::System::PDF');
Please note that currently you should only create one PDF object per instance of this class.
DocumentNew()#
Create a new PDF Document
- These font aliases are available in all methods:
Proportional ProportionalBold ProportionalItalic ProportionalBoldItalic Monospaced MonospacedBold MonospacedItalic MonospacedBoldItalic
$True = $PDFObject->DocumentNew(
Title => 'The Document Title', # Title of PDF Document
Encode => 'utf-8', # Charset of Document
Testfonts => 1, # (optional) default 0
);
PageBlankNew()#
Create a new, blank Page
$True = $PDFObject->PageBlankNew(
Width => 200, # (optional) default 595 (Din A4) - _ both or nothing
Height => 300, # (optional) default 842 (Din A4) -
PageOrientation => 'landscape', # (optional) default normal (normal|landscape)
MarginTop => 40, # (optional) default 0 -
MarginRight => 40, # (optional) default 0 |_ all or nothing
MarginBottom => 40, # (optional) default 0 |
MarginLeft => 40, # (optional) default 0 -
ShowPageNumber => 0, # (optional) default 1
);
PageNew()#
Create a new Page
$PDFObject->PageNew(
Width => 200, # (optional) default 595 (Din A4)
Height => 300, # (optional) default 842 (Din A4)
PageOrientation => 'landscape', # (optional) default normal (normal|landscape)
MarginTop => 40, # (optional) default 0
MarginRight => 40, # (optional) default 0
MarginBottom => 40, # (optional) default 0
MarginLeft => 40, # (optional) default 0
ShowPageNumber => 0, # (optional) default 1
LogoFile => '/path/to/file.jpg', # (optional) you can use jpg, gif and png-Images
HeaderRight => 'Header Right Text', # (optional)
HeadlineLeft => 'Headline Text', # (optional)
HeadlineRight => 'Headline Text', # (optional)
FooterLeft => 'Footer Left Text', # (optional)
FooterRight => 'Footer Right Text', # (optional)
);
DocumentOutput()#
Return the PDF as string
$DocumentString = $PDFObject->DocumentOutput();
Table()#
Add a table.
In case of missing or misused parameters, undef is returned in scalar context
and an empty list is returned in list context.
Return
$Return{State}
$Return{RequiredWidth}
$Return{RequiredHeight}
$Return{CellData} # (reference) complete calculated
$Return{ColumnData} # (reference) complete calculated
%Return = $PDFObject->Table(
CellData => $CellData, # 2D arrayref (see example)
ColumnData => $ColumnData, # arrayref (see example)
RowData => $RowData, # arrayref (see example)
Type => 'Cut', # (optional) default ReturnLeftOver (ReturnLeftOver|ReturnLeftOverHard|Cut)
Width => 300, # (optional) default maximal width
Height => 400, # (optional) default minimal height
Font => 'Monospaced', # (optional) default Proportional (see DocumentNew())
FontSize => 9, # (optional) default 11
FontColor => 'red', # (optional) default black
FontColorEven => 'blue', # (optional) cell font color for even rows
FontColorOdd => 'green', # (optional) cell font color for odd rows
Align => 'right', # (optional) default left (left|center|right)
Lead => 3, # (optional) default 1
Padding => 18, # (optional) default 3
PaddingTop => 10, # (optional) top cell padding, overides Padding
PaddingRight => 30, # (optional) right cell padding, overides Padding
PaddingBottom => 30, # (optional) bottom cell padding, overides Padding
PaddingLeft => 10, # (optional) left cell padding, overides Padding
BackgroundColor => '#101010', # (optional) default white
BackgroundColorEven => '#F0F0F0', # (optional) cell background color for even rows
BackgroundColorOdd => '#A0A0A0', # (optional) cell background color for odd rows
Border => 1, # (optional) default 1 (values between 0 and 20)
BorderColor => '#FF0000', # (optional) default black
);
$CellData = [
[
{
Content => "Cell 1 (Row 1, Column 1)", # (optional)
Font => 'Monospaced', # (optional) (see DocumentNew())
FontSize => 13, # (optional)
FontColor => '#00FF00', # (optional)
Align => 'center', # (optional)
Lead => 7, # (optional)
BackgroundColor => '#101010', # (optional)
},
{
Content => "Cell 2 (Row 1, Column 2)",
},
],
[
{
Content => "Cell 3 (Row 2, Column 1)",
},
{
Content => "Cell 4 (Row 2, Column 2)",
},
],
];
$ColumData = [ # this array was automaticly generated, if not given
{
Width => 11, # (optional)
},
{
Width => 44,
},
];
$RowData = [ # this array was automaticly generated, if not given
{
Height => 11, # (optional)
},
{
Height => 44,
},
];
Text()#
Output a text line
Return
$Return{State}
$Return{RequiredWidth}
$Return{RequiredHeight}
$Return{LeftOver}
%Return = $PDFObject->Text(
Text => 'Text', # Text
Width => 300, # (optional) available width of textblock
Height => 200, # (optional) available height of textblock
Type => 'Cut', # (optional) default ReturnLeftOver (ReturnLeftOver|ReturnLeftOverHard|Cut)
Font => 'ProportionalBold', # (optional) default Proportional (see DocumentNew())
FontSize => 15, # (optional) default 10
Color => '#FF0000', # (optional) default #000000
Align => 'center', # (optional) default left (left|center|right)
Lead => 20, # (optional) default 1 distance between lines
);
Image()#
Output a image
$True = $PDFObject->Image(
File => '/path/image.gif', # (gif|jpg|png)
Type => 'ReturnFalse', # (optional) default Reduce (ReturnFalse|Reduce)
Width => 300, # width of image
Height => 150, # height of image
);
HLine()#
Output a horizontal line
$True = $PDFObject->HLine(
Width => 300, # (optional) default 'end of printable dimension'
Type => 'ReturnFalse', # (optional) default Cut (ReturnFalse|Cut)
Color => '#101010', # (optional) default black
LineWidth => 1, # (optional) default 1
);
PositionSet()#
Set new position on current page
$True = $PDFObject->PositionSet(
Move => 'absolut', # (optional) default absolut (absolut|relativ)
X => 10, # (optional) (<integer>|left|center|right)
Y => 20, # (optional) (<integer>|top|middle|bottom)
);
PositionGet()#
Get position on current page
Return
$Position{X}
$Position{Y}
%Position = $PDFObject->PositionGet();
DimSet()#
Set active dimension
$Dim = $PDFObject->DimSet(
Dim => 'printable', # (optional) default content (content|printable)
);
DimGet()#
Get active dimension (printable or content)
$Dim = $PDFObject->DimGet();
_TableCalculate()#
calculate params of table.
Return # normally no return required, only references
%Param
The returned hash is usually not needed, as the passed in references are
modified in place.
In case of missing or misused parameters, undef is returned in scalar context
and an empty list is returned in list context.
%Return = $PDFObject->_TableCalculate(
CellData => $CellData, # 2D arrayref (see example)
ColumnData => $ColumnData, # arrayref (see example)
RowData => $RowData, # arrayref (see example)
Width => 300, # (optional) default default maximal width
Height => 400, # (optional) default minimal height
Font => 'Monospaced', # (optional) default Proportional (see DocumentNew())
FontSize => 9, # (optional) default 11
FontColor => 'red', # (optional) default black
FontColorEven => 'blue', # (optional) cell font color for even rows
FontColorOdd => 'green', # (optional) cell font color for odd rows
Align => 'right', # (optional) default left (left|center|right)
Lead => 3, # (optional) default 1
PaddingTop => 10, # (optional) top cell padding, overides Padding
PaddingRight => 30, # (optional) right cell padding, overides Padding
PaddingBottom => 30, # (optional) bottom cell padding, overides Padding
PaddingLeft => 10, # (optional) left cell padding, overides Padding
BackgroundColor => '#101010', # (optional) default white
BackgroundColorEven => '#F0F0F0', # (optional) cell background color for even rows
BackgroundColorOdd => '#A0A0A0', # (optional) cell background color for odd rows
Border => 1, # (optional) default 1 (values between 0 and 20)
BorderColor => '#FF0000', # (optional) default black
);
$CellData = [
[
{
Content => "Cell 1 (Row 1, Column 1)", # (optional)
Font => 'Monospaced', # (optional)
FontSize => 13, # (optional)
FontColor => '#00FF00', # (optional)
Align => 'center', # (optional)
Lead => 7, # (optional)
BackgroundColor => '#101010', # (optional)
},
{
Content => "Cell 2 (Row 1, Column 2)",
},
],
[
{
Content => "Cell 3 (Row 2, Column 1)",
},
{
Content => "Cell 4 (Row 2, Column 2)",
},
],
];
$ColumData = [ # this array was automaticly generated, if not given
{
Width => 11, # (optional)
},
{
Width => 44,
},
];
$RowData = [ # this array was automaticly generated, if not given
{
Height => 11, # (optional)
},
{
Height => 44,
},
];
_TableBlockNextCalculate()#
calculate what block can output next
Return
$Return{State}
$Return{ReturnBlock}
$Return{ReturnRowStart}
$Return{ReturnColumnStart}
$Return{ReturnColumnStop}
%Return = $PDFObject->_TableBlockNextCalculate(
CellData => $CellData, # 2D arrayref
ColumnData => $ColumnData, # arrayref
);
_TableRowCalculate()#
calculate row of table
Return # normally no return required, only references
%Param
%Return = $PDFObject->_TableRowCalculate(
CellData => $CellData, # 2D arrayref
RowData => $RowData, # arrayref
ColumnData => $ColumnData, # arrayref
Row => 3, # current row
);
_TableCellOutput()#
output a cell of a table
Return
$Return{State}
$Return{RequiredWidth}
$Return{RequiredHeight}
$Return{LeftOver}
%Return = $PDFObject->_TableCellOutput(
Width => 70,
Height => 40,
Text => 'Text',
Type => 'Cut',
Font => 'ProportionalBold',
FontSize => 15,
FontColor => '#FF0000',
Align => 'center',
Lead => 20,
PaddingTop => 10,
PaddingRight => 30,
PaddingBottom => 30,
PaddingLeft => 10,
BackgroundColor => '#101010',
Border => 1,
BorderColor => '#FF0000',
);
_TableCellOnCount()#
count all active cells
Return
$CellCount
$Count = $PDFObject->_TableCellOnCount(
CellData => $CellData, # 2D arrayref
);
_TextCalculate()#
calculate required values of given text
Return
$Return{State}
$Return{RequiredWidth}
$Return{RequiredHeight}
$Return{LeftOver}
$Return{PossibleRows} # (Array Ref)
%Return = $PDFObject->_TextCalculate(
Text => $Text, # text
Type => 'Cut', # (ReturnLeftOver|ReturnLeftOverHard|Cut)
Width => 300, # available width
Height => 200, # available height
Font => 'ProportionalBold', # font of text
FontSize => 6, # fontsize of text
Lead => 20, # lead
);
_StringWidth()#
calculate width of given text
$Width = $PDFObject->_StringWidth(
Text => 'Text', # text
Font => 'ProportionalBold', # font of text
FontSize => 6, # fontsize of text
);
_PrepareText()#
prepare given text for output
$Width = $PDFObject->_PrepareText(
Text => 'Text', # text
);
_CurPageNumberSet()#
set number of current page
$PDFObject->_CurPageNumberSet(
ShowPageNumber => 0, # (optional) default 1
);
_CurPageDimSet()#
Set current Page Dimension
$PDFObject->_CurPageDimSet(
Width => 123, # (optional) default 595 (Din A4)
Height => 321, # (optional) default 842 (Din A4)
PageOrientation => 'landscape', # (optional) (normal|landscape)
);
_CurPageDimGet()#
Get current Page Dimension (Width, Height)
Return
$CurPageDim{Width}
$CurPageDim{Height}
%CurPageDim = $PDFObject->_CurPageDimGet();
_CurPageDimCheck()#
Check given X an/or Y if inside the page dimension
$True = $PDFObject->_CurPageDimCheck(
X => 200, # (optional)
Y => 100, # (optional)
);
_CurPrintableDimSet()#
Set current Printable Dimension
$True = $PDFObject->_CurPrintableDimSet(
Top => 20, # (optional)
Right => 20, # (optional)
Bottom => 20, # (optional)
Left => 20, # (optional)
);
_CurPrintableDimGet()#
Get current Printable Dimension
Return
$CurPrintableDim{Top}
$CurPrintableDim{Right}
$CurPrintableDim{Bottom}
$CurPrintableDim{Left}
$CurPrintableDim{Width}
$CurPrintableDim{Height}
%CurPrintableDim = $PDFObject->_CurPrintableDimGet();
_CurPrintableDimCheck()#
Check given X an/or Y if inside the printable dimension
$True = $PDFObject->_CurPrintableDimCheck(
X => 200, # (optional)
Y => 100, # (optional)
);
_CurContentDimSet()#
Set current Content Dimension
$True = $PDFObject->_CurContentDimSet(
Top => 20, # (optional)
Right => 20, # (optional)
Bottom => 20, # (optional)
Left => 20, # (optional)
);
_CurContentDimGet()#
Get current Content Dimension
Return
$CurContentDim{Top}
$CurContentDim{Right}
$CurContentDim{Bottom}
$CurContentDim{Left}
$CurContentDim{Width}
$CurContentDim{Height}
%CurContentDim = $PDFObject->_CurContentDimGet();
_CurContentDimCheck()#
Check given X an/or Y if inside the content dimension
$True = $PDFObject->_CurContentDimCheck(
X => 200, # (optional)
Y => 100, # (optional)
);
_CurPositionSet()#
Set current Position
$True = $PDFObject->_CurPositionSet(
X => 20, # (optional)
Y => 20, # (optional)
);
_CurPositionGet()#
Get current Position
Return
$CurPosition{X}
$CurPosition{Y}
%CurPosition = $PDFObject->_CurPositionGet();