FacturXLab
Guide Erreurs BR-* API Valider une facture

PDF/A-3 : corriger les polices non embarquées dans une facture Factur-X

En résumé : une facture Factur-X doit être un PDF/A-3, et PDF/A exige que toutes les polices soient embarquées dans le fichier. Si votre générateur utilise les polices « standard » (Helvetica, Courier, Times) sans les joindre, le PDF est rejeté avec une erreur sur la clause ISO 19005 6.2.11.4. La correction : déclarer une police TrueType embarquable (ex. DejaVu) à la place des polices de base.

Vérifier ma facture gratuitement →

Pourquoi cette erreur arrive

Le standard PDF connaît 14 « polices de base » (Helvetica, Courier, Times et variantes) que tout lecteur PDF possède déjà. Beaucoup de générateurs les utilisent par défaut sans les inclure dans le fichier : le PDF s'affiche correctement, mais il n'est pas auto-suffisant. Or PDF/A — le format d'archivage légalement requis pour Factur-X — interdit cette dépendance : un document doit rester lisible à l'identique dans 20 ans, donc chaque glyphe doit être embarqué. Un validateur comme veraPDF signale alors la clause 6.2.11.4.1 et liste les polices fautives.

Correction selon votre générateur

FPDF / fpdf2

FPDF n'embarque pas les polices core. Déclarez une TrueType :

# PHP (FPDF) $pdf->AddFont('DejaVu','','DejaVuSans.ttf',true); $pdf->SetFont('DejaVu','',11); # Python (fpdf2) pdf.add_font('DejaVu', fname='DejaVuSans.ttf') pdf.set_font('DejaVu', size=11)

DomPDF

DomPDF fournit DejaVu d'office. Dans votre CSS, évitez Helvetica/Arial et utilisez une police embarquable :

/* CSS du template */ body { font-family: 'DejaVu Sans', sans-serif; }

wkhtmltopdf

Installez une police TTF côté serveur (paquet fonts-dejavu) et référencez-la dans le CSS. wkhtmltopdf mappe sinon Helvetica/Courier sur les polices de base non embarquées.

Chrome / Puppeteer

Chrome embarque les polices réellement utilisées : vérifiez qu'un font-family générique ne retombe pas sur une police de base, et chargez explicitement une webfont ou une police installée.

ReportLab (Python)

# ReportLab from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont pdfmetrics.registerFont(TTFont('DejaVu', 'DejaVuSans.ttf'))

Solution universelle (n'importe quel PDF)

Repassez le PDF par Ghostscript, qui ré-embarque les polices et produit un PDF/A-3 :

gs -dPDFA=3 -dBATCH -dNOPAUSE -sDEVICE=pdfwrite \ -sColorConversionStrategy=RGB -dPDFACompatibilityPolicy=1 \ -dEmbedAllFonts=true -sOutputFile=sortie.pdf PDFA_def.ps entree.pdf

Vérifier que c'est corrigé

Déposez votre PDF dans le validateur : FacturXLab détecte automatiquement votre générateur (via les métadonnées Producer), nomme les polices fautives et affiche le correctif adapté en premier. Une fois la police embarquée, le contrôle PDF/A-3 passe au vert.

Tester ma facture →

À lire aussi : tous les codes d'erreur PDF/A-3 et Factur-X · le guide complet Factur-X & EN16931.

FacturXLab — l'infrastructure de conformité Factur-X Mentions légales · Confidentialité · Guide · Erreurs BR-*

Service indépendant, non affilié au FNFE-MPE. FacturXLab est édité par Comallagency LLC.