Select your language

Problem: We have a custom extension that generate PDF and required TCPDF library, we need to place them inside library folder. Library type extension do this Job.

Solution:

Consider following code and insert into lib_tcpdf.xml file.

<?xml version="1.0" encoding="utf-8"?>
<extension type="library" version="5.0" method="upgrade">
    <!-- Name of library extension -->
	<name>lib_tcpdf</name>
    <!-- Name of library -->
    <libraryname>tcpdf</libraryname>
    <version>1.0.0</version>
    <description>TCPDF library for Joomla 5</description>
    <files>
		<!-- FOLDERS TO BE COPIED FROM SOURCE TCPDF LIBRARY FOLDER -->
        <folder>config</folder>
		<folder>fonts</folder>
		<folder>include</folder>
		<folder>tools</folder>
		
		<!-- ROOT FILES TO BE COPIED FROM SOURCE TCPDF LIBRARY FOLDER -->
        <file>tcpdf.php</file>
		<file>tcpdf_autoconfig.php</file>
		<file>tcpdf_barcodes_1d.php</file>
		<file>tcpdf_barcodes_2d.php</file>
		<file>tcpdf_import.php</file>
		<file>tcpdf_parser.php</file>
		
    </files>
</extension>

As per comments in code describing main section of code. 

This xml is place inside tcpdf folder and in same folder. Following are folders and files placed too.

Folders:

- config
- fonts
- include
- tools

Files:

- tcpdf.php
- tcpdf_autoconfig.php
- tcpdf_barcodes_1d.php
- tcpdf_barcodes_2d.php
- tcpdf_import.php
- tcpdf_parser.php

Important: Don't change path or postition of files and folders. Else library will not installed correctly.

Put following code inside tcpdf.php file. This will create namespace that will be used in component, in this case component name is Lmstarbiats.

<?php
namespace Abdul\Lmstarbiats\PDF;

use Abdul\Lmstarbiats\PDF\TCPDF_IMAGES;
use Abdul\Lmstarbiats\PDF\TCPDF_STATIC;
use Abdul\Lmstarbiats\PDF\TCPDF_FONTS;
use Abdul\Lmstarbiats\PDF\TCPDF_FONT_DATA;
use Abdul\Lmstarbiats\PDF\TCPDF_COLORS;
use Abdul\Lmstarbiats\PDF\TCPDF_FILTERS;

Also define namespace inside six files which reside here : include/tcpdf_colors.php, include/tcpdf_filters.php, include/tcpdf_font_data.php, include/tcpdf_fonts.php, include/tcpdf_images.php, include/tcpdf_static.php,

<?php
namespace Abdul\Lmstarbiats\PDF;

Finally you have library ready to be used inside your extensions like that:

use Abdul\Lmstarbiats\PDF\TCPDF;
use Abdul\Lmstarbiats\PDF\TCPDF_FONTS;
require_once JPATH_LIBRARIES . '/tcpdf/tcpdf.php';

// initialize Library Object
$pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); // set document information $pdf->setCreator(PDF_CREATOR); $pdf->setAuthor('Abdul Waheed'); $pdf->setTitle('Invoice'); $pdf->setSubject('Tarbiat LMS Invoice'); $pdf->setKeywords('Tabiat LMS, Invoice, Abdul Waheed'); // set header and footer fonts $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN)); $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA)); // set default monospaced font $pdf->setDefaultMonospacedFont(PDF_FONT_MONOSPACED); // set margins $pdf->setMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT); $pdf->setHeaderMargin(PDF_MARGIN_HEADER); $pdf->setFooterMargin(PDF_MARGIN_FOOTER); // set auto page breaks $pdf->setAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM); // set image scale factor $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->setFont('freeserif', '', 14);
// set JPEG quality $pdf->setJPEGQuality(100); // remove default header $pdf->setPrintHeader(false); // add a page $pdf->AddPage();
// get the current page break margin $bMargin = $pdf->getBreakMargin(); // get current auto-page-break mode $auto_page_break = $pdf->getAutoPageBreak(); // disable auto-page-break $pdf->setAutoPageBreak(false, 0);

// set bacground image $img_file = Uri::root().'components/com_resumebuilders/CV_Damien_Tochtermann_DE1.jpg'; $abdul = Uri::root().'components/com_resumebuilders/abdul.png'; $pdf->Image($img_file, null, 0, 210, 297, '', '', '', false, 300, 'C', false, false, 0); // restore auto-page-break status $pdf->setAutoPageBreak($auto_page_break, $bMargin); // set the starting point for the page content $pdf->setPageMark();
$pdf->setXY(20, 50); $pdf->writeHTML('<span stroke="0" fill="true" strokecolor="black" color="black" style="font-weight:bold;font-size:48pt;">LEBEBSLAUF</span>', true, false, true, false, ''); $pdf->Output('cv.pdf', 'I'); exit;

Still need help! no problem, feel free to contact us Today


 Abdul Waheed : (Hire Joomla & PHP Pakistani Freelancer)