1. Go to this page and download the library: Download mahdiabderraouf/facturx-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
mahdiabderraouf / facturx-php example snippets
use MahdiAbderraouf\FacturX\Builder;
use MahdiAbderraouf\FacturX\Enums\Profile;
use MahdiAbderraouf\FacturX\Models\Invoice;
// Create an invoice object from an array or you can use constructor instead (new Invoice (...))
$invoice = Invoice::createFromArray([
'profile' => Profile::MINIMUM,
'number' => 'F-202400001',
'typeCode' => InvoiceTypeCode::COMMERCIAL_INVOICE,
'issueDate' => DateTime::createFromFormat('Y-m-d', '2024-12-02'),
'totalAmountWithoutVAT' => 80.00,
'totalVATAmount' => 20.00,
'totalAmountWithVAT' => 100.00,
'amountDueForPayment' => 22.25,
'buyer' => [
'name' => 'Buyer NAME',
'address' => [
'countryCode' => 'FR',
],
// optional
'buyerReference' => 'BUYER-0001',
'legalRegistrationIdentifier' => 'BUYER-SIRET',
// Precise the legal registration scheme identifier if different from SIRET
'schemeIdentifier' => SchemeIdentifier::SIREN,
],
'seller' => [
'name' => 'Seller NAME',
'vatIdentifier' => 'FR12345678901',
'address' => [
'countryCode' => 'FR',
],
// optional
'legalRegistrationIdentifier' => 'SELLER-SIRET',
],
// optional
'businessProcessType' => 'A2', // default A1
'purchaseOrderReference' => 'PO-202400005',
'currencyCode' => 'EUR', // default EUR
'vatCurrency' => 'USD', // default EUR
]);
$xml = $invoice->toXml();
// Or
$xml = Builder::build($invoice);
use MahdiAbderraouf\FacturX\Enums\Profile;
use MahdiAbderraouf\FacturX\Exceptions\InvalidXmlException;
use MahdiAbderraouf\FacturX\Exceptions\UnableToExtractXmlException;
use MahdiAbderraouf\FacturX\Validator;
$profile = Profile::MINIMUM;
// PDF path, XML path or XML string
$source = '/path/to/invoice.pdf';
try {
Validator::validate(
$source,
// Validate against a specific profile, or auto-detect it from the XML.
Profile::EN16931,
);
} catch (UnableToExtractXmlException $e) {
// Failed to extract XML from given PDF
$message = $e->getMessage();
} catch (InvalidXmlException $e) {
// array of LibXMLError
$errors = $e->getErrors();
}
// Or simply check if its valid or not
$isValid = Validator::isValid($source);
use MahdiAbderraouf\FacturX\Enums\Profile;
use MahdiAbderraouf\FacturX\Exceptions\InvalidXmlException;
use MahdiAbderraouf\FacturX\Generator;
$profile = Profile::BASIC;
$invoice = Invoice::createFromArray([...]);
try {
$pdfString = Generator::generate(
// path or PDF string
'/path/to/Invoice.pdf',
// Invoice, XML string or path
$invoice,
// optional
AttachmentRelationship::DATA, // default one
'outputPath.pdf',
Profile::BASIC, // validates against a specific profile
// add more attachments if needed
[
[
'file' => 'extra_file.txt',
// optional
'filename' => 'Extra file name', // Defaults to the given file name
'relationship' => AttachmentRelationship::SUPPLEMENT, // Defaults to AttachmentRelationship::UNSPECIFIED when not present
'description' => 'This is some extra file description',
]
]
);
} catch (InvalidXmlException $e) {
$errors = $e->getErrors();
}
use MahdiAbderraouf\FacturX\Enums\XmlFilename;
use MahdiAbderraouf\FacturX\Exceptions\UnableToExtractXmlException;
use MahdiAbderraouf\FacturX\Parser;
// PDF path
$pdf = '/path/to/invoice.pdf';
try {
// this will look for 'factur-x.xml' or 'zugferd-invoice.xml' files inside the given PDF
$xml = Parser::getXml(
$pdf,
XmlFilename::FACTUR_X, // look only for 'factur-x.xml'
);
} catch (UnableToExtractXmlException $e) {
// This probably means that the file is not Factur-X
$message = $e->getMessage();
}
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.