Cette page peut contenir du texte traduit automatiquement.
Convertir PDF en PDF/A
Cet article explique comment convertir des documents PDF en PDF/A avec Docotic.Pdf. Cette bibliothèque .NET inclut un convertisseur PDF vers PDF/A haute performance qui s’exécute entièrement hors ligne. Vous pouvez également utiliser Docotic.Pdf pour créer des documents PDF/A à partir de zéro.

Pourquoi convertir des PDF en PDF/A?
PDF/A est une version spéciale de PDF conçue pour l’archivage. La conversion de documents PDF standard en PDF/A offre plusieurs avantages :
-
Conservation à long terme
Les documents PDF/A restent accessibles et utilisables pendant de nombreuses années, ce qui les rend idéaux pour des usages juridiques, gouvernementaux et archivistiques. -
Conformité réglementaire
Les secteurs soumis à des exigences strictes de conformité et de droit stockent souvent les documents en PDF/A. -
Apparence cohérente dans les visionneuses PDF
Les documents PDF/A s’affichent de manière cohérente sur différents systèmes et dans différents lecteurs PDF.
Lisez l’article Qu’est-ce que PDF/A ? pour plus d’informations sur la norme PDF/A.
PDF vers PDF/A en C#
Pour convertir un PDF en PDF/A, vous avez besoin de :
- Docotic.Pdf avec le complément Conformance.
- Une clé de licence. Vous pouvez obtenir une licence gratuite à durée limitée sur la page de téléchargement.
Le code C# suivant convertit un fichier PDF en PDF/A-4 :
using var pdf = new PdfDocument("input.pdf");
pdf.SaveAsPdfa("output.pdf", PdfaConformanceLevel.Pdfa4);
La méthode SaveAsPdfa est fournie par le complément dans l’espace de noms BitMiracle.Docotic.Pdf.Conformance. Elle prend en charge tous les niveaux de conformité PDF/A : PDF/A-1a, PDF/A-1b, PDF/A-2a, PDF/A-2b, PDF/A-2u, PDF/A-3a, PDF/A-3b, PDF/A-3u, PDF/A-4, PDF/A-4e, PDF/A-4f. La sortie peut être écrite dans un fichier ou dans un flux.
Si le document source ne peut pas être converti au niveau de conformité PDF/A demandé, SaveAsPdfa lève une ConformanceException. Consultez la section Gestion des erreurs pour plus de détails.
Scénarios avancés de conversion
Docotic.Pdf prend en charge un large éventail de flux de travail PDF/A, notamment la création de documents PDF/A à partir de zéro, la conversion de HTML en PDF/A et la fusion de documents en un seul fichier PDF/A.
Créer des documents PDF/A
Docotic.Pdf propose différentes façons de créer des documents PDF en .NET. Vous pouvez utiliser la même méthode SaveAsPdfa pour générer des documents PDF/A avec le Core API ou le Layout API.
Ce code C# crée un document PDF/A-3u en utilisant le Core API :
using var pdf = new PdfDocument();
pdf.Pages[0].Canvas.DrawString("Hello PDF/A");
pdf.SaveAsPdfa("output.pdf", PdfaConformanceLevel.Pdfa3U);
Avec le Layout API, vous créez un document PDF standard puis vous le convertissez en PDF/A. Cet exemple de code montre comment générer un document PDF/A-1b :
using var ms = new MemoryStream();
PdfDocumentBuilder.Create().Generate(ms, doc => doc.Pages(pages =>
{
pages.Content().Text("Hello, world!");
}));
using var pdf = new PdfDocument(ms);
pdf.SaveAsPdfa("output.pdf", PdfaConformanceLevel.Pdfa1B);
HTML vers PDF/A
Le complément HtmlToPdf convertit le HTML en PDF. Pour préparer le résultat à l’archivage, enregistrez le PDF généré au format PDF/A :
var uri = new Uri("https://google.com");
var options = new HtmlConversionOptions
{
PreserveStructureInformation = true,
};
using var converter = await HtmlConverter.CreateAsync();
using var pdf = await converter.CreatePdfAsync(uri, options);
pdf.SaveAsPdfa("output.pdf", PdfaConformanceLevel.Pdfa3A);
L’option PreserveStructureInformation = true aide à produire des documents accessibles. C’est important pour les niveaux de conformité PDF/A-1a, PDF/A-2a ou PDF/A-3a.
Combiner des documents PDF en PDF/A
Docotic.Pdf prend en charge la fusion de documents PDF. Remplacez l’appel PdfDocument.Save par SaveAsPdfa pour enregistrer le document fusionné au format PDF/A :
using var pdf = new PdfDocument("first.pdf");
pdf.Append("second.pdf");
pdf.SaveAsPdfa("merged.pdf", PdfaConformanceLevel.Pdfa1B);
Vous pouvez appliquer le même principe dans d’autres scénarios d’édition de PDF. Par exemple, supprimer des pages PDF, modifier du texte, aplatir des champs de formulaire puis enregistrer au format PDF/A.
Créer des fichiers ZUGFeRD / Factur-X en C#
Factur-X / ZUGFeRD est une norme européenne de facture électronique basée sur PDF/A-3. Vous pouvez utiliser Docotic.Pdf pour incorporer un fichier XML de facture et produire un document Factur-X / ZUGFeRD valide :
using var pdf = new PdfDocument();
PdfFileSpecification xml = pdf.CreateFileAttachment("your_path_to/xrechnung.xml");
xml.Relationship = "Alternative";
pdf.SharedAttachments.Add(xml);
var fx = new XmpSchema("fx", "urn:factur-x:pdfa:CrossIndustryDocument:invoice:1p0#");
var props = fx.Properties;
props.Add(new XmpProperty("DocumentType", new XmpString("INVOICE")));
props.Add(new XmpProperty("DocumentFileName", new XmpString("xrechnung.xml")));
props.Add(new XmpProperty("Version", new XmpString("3.0")));
props.Add(new XmpProperty("ConformanceLevel", new XmpString("XRECHNUNG")));
pdf.Metadata.Schemas.Add(fx);
pdf.SaveAsPdfa("zugferd.pdf", PdfaConformanceLevel.Pdfa3A);
Créer des documents Order-X
Order-X est une autre norme de l’UE qui permet le traitement électronique des bons de commande. Cet extrait C# montre comment créer un document Order-X en utilisant le profil COMFORT :
using var pdf = new PdfDocument();
using (var file = File.OpenRead("order-data-comfort.xml"))
{
PdfFileSpecification xml = pdf.CreateFileAttachment(file, "order-x.xml");
xml.Relationship = "Data";
pdf.SharedAttachments.Add(xml);
}
var fx = new XmpSchema("fx", "urn:factur-x:pdfa:CrossIndustryDocument:1p0#");
var props = fx.Properties;
props.Add(new XmpProperty("DocumentType", new XmpString("ORDER")));
props.Add(new XmpProperty("DocumentFileName", new XmpString("order-x.xml")));
props.Add(new XmpProperty("Version", new XmpString("1.0")));
props.Add(new XmpProperty("ConformanceLevel", new XmpString("COMFORT")));
pdf.Metadata.Schemas.Add(fx);
pdf.SaveAsPdfa("order-x.pdf", PdfaConformanceLevel.Pdfa3B);
Convertir des fichiers PDF protégés en PDF/A
La conversion de fichiers PDF chiffrés ne diffère pas. Ouvrez le document avec le mot de passe correct et appelez SaveAsPdfa :
using var pdf = new PdfDocument(fileName, new PdfStandardDecryptionHandler("password"));
pdf.SaveAsPdfa("result.pdf", PdfaConformanceLevel.Pdfa4E);
Traitement par lot
Vous pouvez automatiser la conversion de plusieurs fichiers PDF en PDF/A. Énumérez tous les fichiers PDF d’un répertoire et convertissez chaque document en PDF/A. Cet exemple montre comment convertir des fichiers en parallèle :
public static async Task ConvertAsync(string directoryPath)
{
string[] files = Directory.GetFiles(directoryPath, "*.pdf", SearchOption.AllDirectories);
if (files.Length == 0)
return;
var semaphore = new SemaphoreSlim(Environment.ProcessorCount);
var tasks = new List<Task>(files.Length);
foreach (var f in files)
{
await semaphore.WaitAsync();
var task = Task.Run(() =>
{
string outputFileName = $"{Path.GetFileName(f)}-{Guid.NewGuid()}.pdf";
try
{
using var pdf = new PdfDocument(f);
pdf.SaveAsPdfa(outputFileName, PdfaConformanceLevel.Pdfa1B);
}
finally
{
semaphore.Release();
}
});
tasks.Add(task);
}
await Task.WhenAll(tasks);
}
Lorsque vous mettez en œuvre un flux de conversion pour des fichiers PDF arbitraires, il est judicieux de valider la conformité PDF/A de tous les fichiers résultants. Vous trouverez une application prête à l’emploi pour la conversion par lot et la validation dans la section Évaluer la qualité de la conversion.
Gestion des erreurs
La conversion peut échouer dans certaines situations. Par exemple, lorsque :
- Un fichier d’entrée n’est pas un PDF
- Un mot de passe invalide est fourni pour un PDF chiffré
- Impossible d’intégrer les octets de police pour PDF/A
Docotic.Pdf lève des exceptions dans ces cas. Cet exemple de code montre comment gérer les exceptions :
try
{
using var pdf = new PdfDocument("input.pdf");
pdf.SaveAsPdfa("output.pdf", PdfaConformanceLevel.Pdfa1B);
}
catch (PdfException ex)
{
Console.WriteLine($"Problem with an input document: {ex.Message}");
}
catch (ConformanceException ex)
{
Console.WriteLine($"Unable to convert to PDF/A: {ex.Message}");
}
Convertir de PDF/A vers PDF
La conversion de PDF/A vers PDF est parfois utilisée pour faciliter l’édition des documents. Le processus est beaucoup plus simple que la conversion de PDF vers PDF/A. Vous devez seulement supprimer une partie des métadonnées XMP. Exemple de code :
using var pdf = new PdfDocument("pdfa-compliant.pdf");
var schemas = pdf.Metadata.Schemas;
for (int i = 0; i < schemas.Count; ++i)
{
if (schemas[i].Namespace == "http://www.aiim.org/pdfa/ns/id/")
{
schemas.RemoveAt(i);
--i;
}
}
pdf.Save("regular.pdf");
Pourquoi choisir Docotic.Pdf pour la conversion de PDF en PDF/A?
Docotic.Pdf est une bibliothèque .NET C# pure, haute performance, sans dépendances externes. Vous pouvez l’utiliser pour produire des documents PDF/A sur Windows, Linux, macOS, Android, iOS ou dans un environnement cloud. De plus, Docotic.Pdf offre les avantages suivants :
Conversion autonome hors ligne
La conversion s’effectue entièrement sur votre ordinateur. Aucune donnée n’est jamais transmise à des serveurs externes ou à des fournisseurs tiers. La conversion hors ligne aide à protéger les documents sensibles, car aucune donnée ne quitte votre environnement.
Qualité
Docotic.Pdf est conçu pour préserver autant d’informations originales que possible pendant la conversion, sans sacrifier la qualité.
Conformité ISO
Docotic.Pdf produit des fichiers PDF/A conformes aux normes ISO :
- ISO 19005-1:2005 (PDF/A-1)
- ISO 19005-2:2011 (PDF/A-2)
- ISO 19005-3:2012 (PDF/A-3)
- ISO 19005-4:2020 (PDF/A-4)
Chaque build Docotic.Pdf passe par des milliers de tests automatisés. Les tests PDF vers PDF/A utilisent une grande collection de fichiers PDF provenant de différentes sources et les convertissent vers différents niveaux de conformité PDF/A. Les fichiers résultants sont ensuite vérifiés pour leur conformité PDF/A.
Un groupe de tests vérifie que veraPDF ne signale aucun problème pour les fichiers convertis. Un second groupe de tests compare chaque fichier résultant à sa version PDF/A attendue, qui a été vérifiée comme ne présentant aucun problème de conformité par veraPDF et Adobe Acrobat Preflight.
Évaluer la qualité de la conversion
Nous fournissons le projet open source PdfToPdfa. C’est une application console .NET qui convertit des fichiers PDF en PDF/A. Après la conversion, l’application valide chaque document résultant. Le projet utilise Docotic.Pdf pour la conversion et veraPDF pour la validation.
Vous pouvez utiliser cette application en mode ligne de commande pour automatiser vos flux de travail PDF/A. Ou l’utiliser en mode UI pour évaluer rapidement la qualité et les performances de conversion.

L’application traite un fichier PDF arbitraire ou un répertoire. Pour plus de commodité, le dépôt du projet inclut également des fichiers de test issus du corpus veraPDF et de la suite de tests Isartor.
Que se passe-t-il pendant une conversion en PDF/A?
Les spécifications PDF/A définissent une longue liste d’exigences pour un document conforme. Le convertisseur les vérifie et les applique toutes pour produire des fichiers PDF/A valides. À un niveau élevé, il examine chaque objet PDF et corrige les problèmes de conformité PDF/A détectés.
Tous les PDF ne peuvent pas être convertis en PDF/A sans modifier leur contenu. Certaines fonctionnalités PDF sont interdites par le niveau de conformité PDF/A sélectionné, de sorte que le convertisseur doit soit les supprimer, soit les transformer. En conséquence, la conversion peut être avec perte.
Par exemple, PDF/A-1 n’autorise pas le contenu optionnel (calques), les fichiers incorporés (pièces jointes) ni la transparence. Si un document PDF d’origine utilise ces fonctionnalités, le convertisseur aplatit les calques, supprime les pièces jointes et la transparence. Si la préservation de ce contenu est importante, choisissez un niveau de conformité PDF/A qui le prend en charge :
- Tous les niveaux de conformité PDF/A-2, PDF/A-3 et PDF/A-4 prennent en charge la transparence et le contenu optionnel.
- PDF/A-3, PDF/A-4 et PDF/A-4f prennent en charge les fichiers incorporés arbitraires. PDF/A-2 et PDF/A-4 prennent uniquement en charge les fichiers PDF/A incorporés.
Examinons comment Docotic.Pdf corrige les problèmes les plus courants.
Polices et texte
Le convertisseur tente d’incorporer chaque police utilisée dans le document. Pour les polices qui ne sont pas déjà incorporées, il essaie d’abord de charger les données de police appropriées depuis la collection de polices système ou une source de polices personnalisée. Si aucune police correspondante n’est trouvée, une police de substitution est utilisée.
Vous pouvez personnaliser ce processus en fournissant des chargeurs de polices personnalisés. L’interface IFontLoader est utilisée pour charger les données de police. L’implémentation DirectoryFontLoader, par exemple, charge les octets de police depuis un ou plusieurs répertoires spécifiés.
Vous pouvez également fournir une implémentation de l’interface IFallbackFontProvider pour fournir des polices de substitution lorsque IFontLoader ne peut pas charger la police demandée.
L’exemple suivant montre comment personnaliser le chargement des polices :
public static void ConfigurePdfToPdfa(
string fileName,
PdfaConformanceLevel level,
Stream output,
IFontLoader? fontLoader,
IFallbackFontProvider? fallbackFontProvider)
{
var config = PdfConfigurationOptions.Create();
if (fontLoader != null)
config.FontLoader = fontLoader;
if (fallbackFontProvider != null)
config.FallbackFontProvider = fallbackFontProvider;
using var pdf = new PdfDocument(fileName, config);
pdf.SaveAsPdfa(output, level);
}
Docotic.Pdf corrige également les largeurs de glyphes incohérentes, les flux CMap et ToUnicode. Les caractères non définis sont supprimés pendant le processus de conversion.
Métadonnées
Le convertisseur corrige ou supprime les schémas ou propriétés de métadonnées invalides, ajoute le schéma pdfaid, synchronise les métadonnées XMP et le dictionnaire d’informations du document.
Le complément Conformance fournit également la méthode d’extension ReadPdfaConformance pour PdfDocument. Utilisez cette méthode pour lire le niveau de conformité PDF/A déclaré dans les métadonnées XMP :
using var pdf = new PdfDocument("input.pdf");
PdfaConformanceLevel? level = pdf.ReadPdfaConformance();
Couleurs
Le convertisseur fournit des profils ICC d’intention de sortie pour les couleurs de périphérique, car les couleurs dépendantes du périphérique ne sont pas autorisées dans les documents PDF/A. Il corrige également les intentions de sortie et les espaces colorimétriques non conformes.
La transparence est supprimée lors de la production de documents PDF/A-1. Cela affecte les modes de fusion, les masques souples et les groupes de transparence. Les propriétés d’image invalides sont également corrigées.
Fichiers incorporés
La gestion des fichiers incorporés dépend du niveau de conformité PDF/A. En PDF/A-1, tous les fichiers incorporés sont supprimés.
En PDF/A-2 et PDF/A-4, les fichiers PDF incorporés sont convertis en PDF/A. Les pièces jointes non PDF sont supprimées. Pour les fichiers PDF/A incorporés, les types MIME et les relations de fichier sont également corrigés dans PDF/A-4.
En PDF/A-3, les pièces jointes ne sont pas supprimées, mais les relations de fichier et les types MIME sont corrigés.
Fonctionnalités interactives
Le convertisseur génère les flux d’apparence manquants ou invalides. Il corrige également les propriétés d’annotation invalides, aplatit les annotations de types non autorisés et supprime les actions de types non autorisés.
Les formulaires XFA sont supprimés pour PDF/A-2, PDF/A-3 et PDF/A-4. Seul PDF/A-1 autorise les formulaires XFA, mais ils restent déconseillés pour l’archivage à long terme.
Le contenu optionnel est aplati lors du ciblage de PDF/A-1. Pour les autres niveaux de conformité, le convertisseur corrige les dictionnaires de configuration du contenu optionnel avec des tableaux d’ordre incomplets, des noms manquants ou des noms dupliqués.
Signatures numériques
Les signatures numériques n’autorisent pas, par conception, les modifications du contenu signé. Si la partie signée du PDF contient des problèmes de conformité PDF/A, le convertisseur les corrige et invalide la signature.
Autres aspects
Pour l’accessibilité, le convertisseur ajoute des informations de structure de document de base si elles manquent. Il corrige également les balises de structure invalides ou non standard. Cela s’applique aux documents PDF/A-1a, PDF/A-2a et PDF/A-3a.
Les fichiers PDF/A ne doivent pas être chiffrés, donc le convertisseur n’autorise pas le chiffrement des fichiers de sortie.
Les données compressées avec LZW ne sont pas autorisées dans PDF/A. Le convertisseur recompresse les flux LZW à l’aide de la compression Flate. Il corrige également les objets tableau, dictionnaire, nombre, nom et chaîne non conformes.
Les en-têtes de fichier invalides ou les sections de références croisées sont également corrigés automatiquement.
Conclusion
Docotic.Pdf avec le complément Conformance fournit un convertisseur PDF vers PDF/A de haute qualité. Vous pouvez convertir des documents PDF existants vers n’importe quel niveau de conformité PDF/A ou créer des documents PDF/A à partir de zéro. La bibliothèque fonctionne entièrement sur site, donc vos données ne quittent jamais vos serveurs.
Vous pouvez explorer des exemples exécutables C# et VB.NET pour créer et traiter des documents PDF/A dans la section PDF/A du dépôt d’exemples.
Il existe également l’application PdfToPdfa open source pour la conversion PDF vers PDF/A. Vous pouvez l’utiliser pour automatiser des flux de travail PDF/A ou simplement convertir des fichiers PDF en PDF/A.
Questions fréquemment posées
Comment choisir le bon convertisseur PDF vers PDF/A?
Un bon convertisseur PDF vers PDF/A doit :
- Produire des fichiers conformes à PDF/A.
- Préserver les informations et l’apparence visuelle des documents source.
- S’exécuter localement sans envoyer de fichiers à des serveurs tiers.
- Être rapide.
- (si l’automatisation est requise) Prendre en charge l’exécution sans UI.
La bibliothèque Docotic.Pdf répond à tous ces critères et constitue un bon choix pour la conversion de PDF en PDF/A.
Comment vérifier qu’un document PDF/A est conforme?
Utilisez un logiciel de validation. Un bon validateur PDF/A doit :
- Respecter en profondeur les normes ISO pour PDF/A.
- S’exécuter localement sans envoyer de fichiers à des serveurs tiers.
- Être rapide.
- (si l’automatisation est requise) Prendre en charge l’exécution sans UI.
veraPDF est un outil de validation de référence industrielle qui prend en charge toutes ces exigences.
Comment automatiser un flux de conversion de PDF en PDF/A?
Convertissez des fichiers PDF à l’aide du complément Docotic.Pdf Conformance. Validez les résultats avec le validateur veraPDF. Suivez la progression de la conversion et de la validation.
L’application PdfToPdfa open source met en œuvre ce flux de travail. Utilisez-la comme point de départ pour votre propre implémentation.
Quelle version de PDF/A dois-je utiliser?
Lisez la section Comment choisir une version PDF/A.
Puis-je incorporer un fichier XML dans un PDF pour ZUGFeRD?
Oui, absolument. Consultez les exemples dans la section Produire des fichiers ZUGFeRD / Factur-X.
Comment protéger un document PDF/A?
C’est techniquement impossible. Les fichiers PDF/A ne doivent pas être chiffrés.