• Hello Fabrik Community

    Fabrik is now in the hands of the development team that brought you Fabrik for Joomla 4. We have recently transitioned the Fabrik site over to a new server and are busy trying to clean it up. We have upgraded the site to Joomla 4 and are running the latest version of Fabrik 4. We have also upgraded the Xenforo forum software to the latest version. Many of the widgets you might have been used to on the forum are no longer operational, many abandoned by the developers. We hope to bring back some of the important ones as we have time.

    Exciting times to be sure.

    The Fabrik 4.0 Official release is now available. In addition, the Fabrik codebase is now available in a public repository. See the notices about these in the announcements section

    We wish to shout out a very big Thank You to all of you who have made donations. They have really helped. But we can always use more...wink..wink..

    Also a big Thank You to those of you who have been assisting others in the forum. This takes a very big burden off of us as we work on bugs, the website and the future of Fabrik.

PDF output

  • Views Views: 35,411
  • Last updated Last updated:
  • Docu is work in progress.

    Installation​

    If Fabrik PDF output should be used you must install the "Fabrik Library" from Fabrik Download https://fabrikar.com/download to get the necessary files including the dompdf and mpdf library (it's to big to have it in Fabrik core).
    Go to Fabrik "Options" (button upper right on every Fabrik backend site).
    In the "Global" tab select your prefered PDF library.
    In "Debugging" tab: Debug PDF has to be NO
    In "List" and "Form" tab: you can choose global settings for showing the PDF button (can also be set individually in list and form "Layout" settings )
    In "List" tab you can enable "Allow PDF Localhost" and "Allow PDF IP" if you are running into issues with access settings (see tooltips for details)

    3rd party compatibility​

    Plugin System - Flexisystem, core functions: make sure "Redirect pdf format" is set to NO.
    https://fabrikar.com/forums/index.php?wiki/admintools/#joomla-feature-hardening-options

    Settings​

    PDF Options can be set in list and form settings ("Layout" section)
    PDFSettings.PNG

    The PDF icon has also global Options in Fabrik "Options".

    PDF templates​

    The standard templates can be used, but is recommended to create custom PDF templates.
    To create a custom template, copy the templates folder and rename it. Template locations are as follows:
    • Joomla 3+: Details: components/com_fabrik/views/details/tmpl/ (PDF template is always a details template)
    • Joomla 3+: List: components/com_fabrik/views/list/tmpl/
    • Joomla 2.5+: Form: components/com_fabrik/views/form/tmpl25/
    • Joomla 2.5+: Details: components/com_fabrik/views/details/tmpl25/
    • Joomla 2.5+: List: components/com_fabrik/views/list/tmpl25/
    Dompdf has issues in rendering e.g. float and boxes, in a custom template you can adapt the CSS settings to your needs. It's advisable to add background and/or border for testing to see what PDF libs are doing.
    CSS example details view
    To get labels left you can add or modify your custom CSS File.
    Code:
    /*domPDF version < 0.8.6*/
    #{$form} .fabrikElementContainer.span12 {position:relative;margin-bottom:10px}
    #{$form} .fabrikElementContainer .span4 {display:inline-block;width:30%}
    #{$form} .fabrikElementContainer .span8 {display:inline-block;left:31%;width:68%}
    Code:
    /*domPDF version 0.8.6, J! Bootstrap2 template*/
    /*To get the labels left*/
    #{$form} .fabrikElementContainer .span12 {position:relative;margin-bottom:10px;}
    #{$form} .fabrikElementContainer .span4 {display:inline-block;width:30%;vertical-align:top;float:none;}
    #{$form} .fabrikElementContainer .span8 {display:inline-block;width:66%;vertical-align:top;float:none;}
    #{$form} .form-horizontal .control-label {float:none}
    /*To get group columns, span4= 3 columns, span6= 2 columns etc*/
    #{$form} .fabrikElementContainer.span6 {display:inline-block;width:48%;}
    #{$form} .fabrikElementContainer.span4 {display:inline-block;width:30%;}
    /*May be for image display*/
    #{$form} img {width:auto;height:auto;}
    To display yes/no (domPDF standard fonts don't support the IcoMoon icons)
    Code:
    #{$form} .icon-checkmark:before {content:'yes'}
    #{$form} .icon-remove:before {content:'no'}

    CSS example list div template
    Code:
    #listform_$c .fabrikList .row-fluid .span4 {display:inline-block;width:26%;float:none;}
    #listform_$c .fabrikList .row-fluid {page-break-inside:avoid;}

    domPDF template with page header, footer and pagenumber​

    Create a custom template.
    Edit default.php (this example is referring to a copy of fabrik list Bootstrap template):
    Below line "defined('_JEXEC') or die('Restricted access');" add
    Code:
    ?>
    <div id="footdompdf">
    <span class="footleft"><?php echo $this->table->label;?></span>
    <span class="pagenum">Page </span>
    </div>
    <div id="headerdompdf">
    <span class="headleft"><?php echo $this->table->label;?></span>
    <span class="pdfdate">19-11-2013</span>
    </div>
    <?php

    Create/edit custom_css.php
    Add CSS
    Code:
    body {margin-top:1.5em;margin-bottom:1.5em}
    #headerdompdf {
    display:block;
    position: fixed;
    top: 0px;
    width:100%;
    height:1.1em;
    border-bottom: 1px solid red;
    }
    #footdompdf {
    display:block;
    position: fixed;
    bottom: 0px;
    width:100%;
    height: 1.1em;
    border-top: 1px solid red;
    }
    #footdompdf .pagenum { position:absolute;
    right: 20px;}
    #footdompdf .pagenum:after {
    content: counter(page) ; //This is including the page number at bottom right
    }
    #footdompdf .footleft {
    color:red;
    }

    domPDF with total pages​

    See https://fabrikar.com/forums/index.php?threads/dompdf-page-x-of-y.54274/

    mPDF template with page header, footer and pagenumber​

    See also https://mpdf.github.io/headers-footers/method-4.html
    Create a custom template.
    Edit default.php (this example is referring to a copy of fabrik list Bootstrap template):
    Below line "defined('_JEXEC') or die('Restricted access');" add
    Code:

    ?>
    <style>
    @page {size:auto;
    margin-top:3cm;margin-bottom:3cm;

    odd-header-name: html_MyHeader1;
    odd-footer-name: html_MyFooter1;
    }
    .fabrikDataContainer table {page-break-inside:auto;width:100%;}

    </style>
    <htmlpageheader name="MyHeader1">
    <div style="text-align: right; border-bottom: 1px solid #000000; font-weight: bold; font-size: 10pt;">My document {DATE j-m-Y}</div>
    </htmlpageheader>
    <htmlpagefooter name="MyFooter1">
    <table width="100%">
    <tr>
    <td width="33%">{DATE j-m-Y}</td>
    <td width="33%" align="center">{PAGENO}/{nbpg}</td>
    <td width="33%" style="text-align: right; ">My document</td>
    </tr>
    </table>
    </htmlpagefooter>
    <?php

    Additionally replace <tfoot> </tfoot> tags (navigation around line 71/ 77 resp. calculation around line 118/136) with <tbody> </tbody>

    PDF fonts, UTF-8 characters​

    Dompdf uses it's own fonts included in (as of Fabrik 3.8) libraries/fabrik/vendor/dompdf/dompdf/lib/fonts. Only the dejavu fonts support UTF-8 characters.

    To force the PDF output to use DejaVu, put this in a custom_css.php in your template folder:
    Code:

    * {font-family:'dejavu sans'!important}

    Too include a custom font in a pdf details view, you can add the following:

    Code:

    @font-face {
    font-family: 'yourfontname';
    font-style: normal;
    font-weight: normal;
    src: url('https://websitedomain/subfoldername/yourfontname.ttf) format('truetype');
    }

    Filter Values​

    Filter values are in
    $this->filters['table___element']->displayValue
    e.g. for a date range filter
    Code:
    echo $this->filters['test___date_time']->displayValue;
    will give something like
    2020-07-15 16:30:36, 2021-07-22 16:30:36

    Set name of PDF file​

    $this->doc->setName('your-file-name-without-pdf-extension');
Back
Top