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, C<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();