* @copyright 2002-2025 Nicola Asuni - Tecnick.com LTD * @license http://www.gnu.org/copyleft/lesser.html GNU-LGPL v3 (see LICENSE.TXT) * @link https://github.com/tecnickcom/tc-lib-pdf * * This file is part of tc-lib-pdf software library. */ // NOTE: run make deps fonts in the project root to generate the dependencies and example fonts. // autoloader when using Composer require(__DIR__ . '/../vendor/autoload.php'); define('OUTPUT_FILE', realpath(__DIR__ . '/../target') . '/example_invoice.pdf'); // define fonts directory define('K_PATH_FONTS', realpath(__DIR__ . '/../vendor/tecnickcom/tc-lib-pdf-font/target/fonts')); // autoloader when using RPM or DEB package installation //require ('/usr/share/php/Com/Tecnick/Pdf/autoload.php'); // main TCPDF object $pdf = new \Com\Tecnick\Pdf\Tcpdf( 'mm', // string $unit = 'mm', true, // bool $isunicode = true, false, // bool $subsetfont = false, true, // bool $compress = true, 'pdfa3', // string $mode = '', null, // ?ObjEncrypt $objEncrypt = null, ); // ---------- $pdf->setCreator('tc-lib-pdf'); $pdf->setAuthor('John Doe'); $pdf->setSubject('tc-lib-pdf invoice example'); $pdf->setTitle('Example: Invoice'); $pdf->setKeywords('TCPDF tc-lib-pdf invoice example'); $pdf->setPDFFilename('test_invoice.pdf'); $pdf->setViewerPreferences(['DisplayDocTitle' => true]); $pdf->enableDefaultPageContent(); // ---------- // Insert fonts $bfont1 = $pdf->font->insert($pdf->pon, 'helvetica', '', 12); // ---------- // Factur-X 1.07 / ZUGFeRD 2.3 $pageF01 = $pdf->addPage(); $pdf->setBookmark('Factur', '', 0, -1, 0, 0, 'B', ''); $pdf->page->addContent($bfont1['out']); $txtF1 = 'Example of custom XMP metadata for Factur-X 1.07 / ZUGFeRD 2.3'; $txtboxF1 = $pdf->getTextCell($txtF1, 15, 15, 150, valign: 'T', halign: 'L'); $pdf->page->addContent($txtboxF1); $invoiceXML = << Baurechnung urn:cen.eu:en16931:2017 181301674 204 20241115 Rapport-Nr.: 42389 vom 01.11.2024 Im 2. OG BT1 Besprechungsraum eine Beamerhalterung an die Decke montiert. Dafür eine Deckenplatte ausgesägt. Beamerhalterung zur Montage auseinander gebaut. Ein Stromkabel für den Beamer, ein HDMI Kabel und ein VGA Kabel durch die Halterung gezogen. Beamerhalterung wieder zusammengebaut und Beamer montiert. Beamer verkabelt und ausgerichtet. Decke geschlossen. 01 01 Beamermontage Für die doppelte Verlegung, falls erforderlich. TGA Obermonteur/Monteur 43.2 43.2 3 VAT S 19 129.6 02 02 Außerhalb Angebot Beamer-Deckenhalterung 122.5 122.5 1 VAT S 19 122.5 Liselotte Müller-Lüdenscheidt 549910 ELEKTRON Industrieservice GmbH Geschäftsführer Egon Schrempp Amtsgericht Stuttgart HRB 1234 74465 Erfurter Strasse 13 Demoort DE DE136695976 16259 ConsultingService GmbH 76138 Musterstr. 18 Karlsruhe DE per Mail vom 01.09.2024 13130162 #ef=Aufmass.png 916 42389 #ef=ElektronRapport_neu-red.pdf 916 13130162 Projekt 20241101 Rechnung 181301674 EUR 58 DE91100000000123456789 47.9 VAT 252.1 S 19 Zahlbar sofort rein netto 252.1 0 0 252.1 47.9 300 0 300 420 XML; $pdf->addContentAsEmbeddedFile('factur-x.xml', $invoiceXML); $pdf->setCustomXMP('x:xmpmeta.rdf:RDF.rdf:Description.pdfaExtension:schemas.rdf:Bag', ' Factur-X PDFA Extension Schema urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0# fx DocumentFileName Text external The name of the embedded XML document DocumentType Text external The type of the hybrid document in capital letters, e.g. INVOICE or ORDER Version Text external The actual version of the standard applying to the embedded XML document ConformanceLevel Text external The conformance level of the embedded XML document ' ); $pdf->setCustomXMP('x:xmpmeta.rdf:RDF', ' INVOICE factur-x.xml 1.0 EN 16931 '); // ============================================================= // ---------- // get PDF document as raw string $rawpdf = $pdf->getOutPDFString(); // ---------- // Various output modes: //$pdf->savePDF(dirname(__DIR__).'/target', $rawpdf); $pdf->renderPDF($rawpdf); //$pdf->downloadPDF($rawpdf); //echo $pdf->getMIMEAttachmentPDF($rawpdf);