En bref
- Factur-X exige strictement un PDF/A-3 (ISO 19005-3) avec
pdfaid:part="3"dans les métadonnées XMP. - Niveau de conformance requis :
A(Accessible),B(Basic) ouU(Unicode). - PDF/A-2 autorise les pièces jointes PDF/A mais pas l’embarquement arbitraire d’un XML de facture.
- C’est précisément pour cela que Factur-X s’appuie sur PDF/A-3, pas PDF/A-2.
- Notre endpoint
/converts’appuie sur callas pdfToolbox pour la génération PDF/A-3 conforme (voir README repo).
Ce que l’erreur veut dire
Factur-X repose sur PDF/A-3 (norme ISO 19005-3:2012). Contrairement à PDF/A-1 (qui n’autorise aucune pièce jointe) et à PDF/A-2 (qui autorise uniquement des pièces jointes elles-mêmes en PDF/A), PDF/A-3 autorise l’embarquement d’un fichier arbitraire — dont le XML CII de la facture. Le niveau de conformance (A, B, ou U) est déclaré dans les métadonnées XMP du PDF via pdfaid:part et pdfaid:conformance. Notre validateur s’appuie sur veraPDF (146 règles ISO 19005-3).
Quand cette erreur arrive
Survient avec : (a) PDF généré par wkhtmltopdf, Word, LibreOffice sans option PDF/A-3 ; (b) PDF/A-1 (pas de pièces jointes autorisées) ; (c) PDF/A-2 (pièces jointes PDF/A uniquement, pas de XML de facture) ; (d) PDF retraité par un outil qui supprime les métadonnées XMP ; (e) Print-to-PDF macOS/Windows qui produit du PDF standard non-A.
Exemple XMP qui déclenche l’erreur (PDF/A-1)
<!-- Métadonnées XMP du PDF (extrait) -->
<rdf:Description rdf:about=""
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">
<pdfaid:part>1</pdfaid:part> <!-- ❌ PDF/A-1 n'autorise aucune pièce jointe -->
<pdfaid:conformance>B</pdfaid:conformance>
</rdf:Description>
Exemple XMP corrigé (PDF/A-3B)
<rdf:Description rdf:about=""
xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">
<pdfaid:part>3</pdfaid:part>
<pdfaid:conformance>B</pdfaid:conformance>
</rdf:Description>
Correction manuelle
Régénérer le PDF en PDF/A-3 avec niveau A, B ou U. PDF/A-1 n’autorise aucune pièce jointe. PDF/A-2 autorise des pièces jointes PDF/A uniquement (pas un XML). Seul PDF/A-3 autorise des pièces jointes arbitraires. Notre endpoint /convert génère du PDF/A-3 conforme automatiquement (voir README repo pour l’implémentation callas pdfToolbox).
Réparable automatiquement par /repair ?
Non — la correction est sémantique ou structurelle et nécessite une décision humaine (choix de catégorie TVA, URN de profil, etc.). Utilisez /validate pour confirmer après correction manuelle.
Et maintenant ?
Convertir mon PDF en Factur-X conforme →
curl -X POST https://api.facturxapi.com/api/v1/convert \
-H "Authorization: Bearer VOTRE_CLE" \
-F "[email protected]"