Comment aplatir des PDF avant d'imprimer un document en C

This article was translated from English: Does it need improvement?
Translated
View the article in English

La classe PrintSettings d'IronPrint comprend une propriété Flatten qui fusionne tous les champs de formulaire interactifs, annotations, et couches d'image en contenu statique au moment de l'impression. Nous définissons Flatten = true sur notre objet PrintSettings, et IronPrint s'occupe du reste — aucune bibliothèque de manipulation de PDF séparée ni sauvegarde de fichier intermédiaire n'est requise.

Ce guide couvre quand et comment aplatir des PDF avant d'imprimer un document PDF, avec du code C# fonctionnel pour les flux de travail synchrones, avec paramètres combinés et asynchrones.

Démarrage rapide : Aplatir les PDF avant l'impression

  1. Installez IronPrint via NuGet : Install-Package IronPrint
  2. Ajoutez using IronPrint; au fichier
  3. Créez un objet PrintSettings
  4. Définissez Flatten sur true
  5. Passez les paramètres à Printer.Print() ou Printer.PrintAsync()
  1. Installez IronPrint avec le Gestionnaire de Packages NuGet

    PM > Install-Package IronPrint
  2. Copiez et exécutez cet extrait de code.

    using IronPrint;
    
    // Flatten and print a PDF with form fields
    Printer.Print("form-document.pdf", new PrintSettings
    {
        Flatten = true
    });
  3. Déployez pour tester sur votre environnement de production.

    Commencez à utiliser IronPrint dans votre projet dès aujourd'hui avec un essai gratuit

    arrow pointer

Comment aplatir un PDF avant l'impression en C#?

Nous aplatissons un PDF au moment de l'impression en définissant la propriété Flatten sur true sur un objet PrintSettings. Nous passons ensuite cet objet à l'une des méthodes d'impression d'IronPrint.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-flatten-basic.cs
using IronPrint;

// Configure print settings with flattening enabled
PrintSettings settings = new PrintSettings();
settings.Flatten = true;

// Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings);
Imports IronPrint

' Configure print settings with flattening enabled
Dim settings As New PrintSettings()
settings.Flatten = True

' Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings)
$vbLabelText   $csharpLabel

Nous instancions d'abord PrintSettings, qui s'initialise avec les valeurs par défaut — y compris Flatten = false. Nous définissons ensuite Flatten sur true, ce qui indique à IronPrint de fusionner tous les éléments interactifs dans le contenu de la page avant d'envoyer le travail d'impression. Lorsque nous appelons Printer.Print, l'imprimante reçoit une version entièrement statique du document.

L'aplatissement se produit en mémoire pendant le pipeline d'impression. Le fichier PDF original reste interactif sur le disque, de sorte que les utilisateurs finaux peuvent toujours remplir et soumettre le formulaire. Il est essentiel de faire la distinction suivante : nous aplatissons pour l'imprimante, sans modifier définitivement le fichier source.

La propriété Flatten a été introduite dans IronPrint v2024.7.2 et est disponible dans toutes les versions ultérieures.

Quand devrais-je aplatir un PDF avant l'impression ?

L'aplatissement est le plus précieux lorsque le PDF contient des éléments interactifs qui pourraient ne pas se rendre correctement sur papier. Les scénarios les plus courants incluent :

PDF avec des champs de formulaire remplissables. Les entrées de texte, les cases à cocher, les boutons radio et les menus déroulants sont rendus par le visualiseur PDF — et non intégrés dans le contenu de la page. Certains pilotes d'imprimante ignorent entièrement ces couches, ce qui entraîne des champs vides sur la page imprimée. L'aplatissement force les valeurs des champs dans la couche de page statique.

PDF avec des annotations ou superpositions. Les commentaires, notes autocollantes, tampons et annotations de marquage existent sur une couche distincte. L'aplatissement les fusionne dans le contenu visible pour qu'ils apparaissent sur le rendu imprimé.

PDF avec des images intégrées à différentes couches. Les documents assemblés à partir de plusieurs sources peuvent avoir des images sur différentes couches z. L'aplatissement fusionne tout en une seule couche, évitant les images manquantes ou mal alignées.

Lorsque le PDF contient uniquement du texte et des images statiques — comme un rapport généré à partir de HTML ou un document numérisé — l'aplatissement n'a aucun effet. Dans ces cas, nous pouvons laisser Flatten à sa valeur par défaut de false pour éviter des charges de traitement inutiles.

Comment combiner l'aplatissement avec d'autres paramètres d'impression ?

La classe PrintSettings expose plusieurs propriétés en plus de Flatten. Nous pouvons configurer la taille du papier, l'orientation, DPI, les marges et le nombre de copies en même temps que l'aplatissement - le tout dans un seul travail d'impression.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-combined-settings.cs
using IronPrint;

// Flatten and print with full configuration
PrintSettings settings = new PrintSettings
{
    Flatten = true,
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    PaperMargins = new Margins(10, 10, 10, 10),
    Grayscale = false
};

// Print a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint

' Flatten and print with full configuration
Dim settings As New PrintSettings With {
    .Flatten = True,
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .PaperMargins = New Margins(10, 10, 10, 10),
    .Grayscale = False
}

' Print a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings)
$vbLabelText   $csharpLabel

Nous utilisons la syntaxe d'initialisation d'objet pour plus de clarté. Flatten = true garantit que toutes les données de formulaire apparaissent sur la page imprimée. PaperSize.A4 et PaperOrientation.Portrait correspondent au format standard des formulaires d'affaires. Dpi à 300 produit un texte net sur des champs remplis qui étaient à l'origine rendus en résolution d'écran. PaperMargins accepte quatre valeurs en millimètres grâce au constructeur Margins.

Ces propriétés ne sont pas en conflit les unes avec les autres. IronPrint applique d'abord l'opération d'aplatissement, puis formate le document statique résultant selon les paramètres restants avant d'envoyer le travail à l'imprimante. Pour plus d'options de paramètres d'impression, y compris la sélection de l'imprimante et la configuration du bac, consultez le guide de configuration complet.

Comment aplatir et imprimer de manière asynchrone ?

Pour les applications où le blocage du thread principal n'est pas acceptable — telles que les applications WPF ou WinForms — nous utilisons Printer.PrintAsync. La méthode accepte le même objet PrintSettings et renvoie un Task.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-async-flatten.cs
using IronPrint;
using System.Threading.Tasks;

public class FormPrinter
{
    public async Task PrintFlattenedFormAsync(string pdfPath)
    {
        // Flatten form fields and print asynchronously
        PrintSettings settings = new PrintSettings
        {
            Flatten = true,
            PaperSize = PaperSize.Letter,
            Dpi = 300
        };

        // Non-blocking print — UI thread stays responsive
        await Printer.PrintAsync(pdfPath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class FormPrinter
    Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
        ' Flatten form fields and print asynchronously
        Dim settings As New PrintSettings With {
            .Flatten = True,
            .PaperSize = PaperSize.Letter,
            .Dpi = 300
        }

        ' Non-blocking print — UI thread stays responsive
        Await Printer.PrintAsync(pdfPath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

Ce modèle basé sur la classe est utile lorsque la logique d'impression réside dans une couche de service. Nous configurons Flatten = true en plus de PaperSize.Letter pour les formulaires au format américain. Le mot-clé await libère le thread appelant pendant qu'IronPrint traite l'opération d'aplatissement et envoie le travail d'impression.

Les méthodes asynchrones d'IronPrint — y compris PrintAsync et ShowPrintDialogAsync — respectent toutes le paramètre Flatten identiquement à leurs homologues synchrones. Que nous imprimions silencieusement ou via une boîte de dialogue d'impression, le comportement d'aplatissement reste cohérent.

Quelles Sont Mes Prochaines Étapes ?

Nous avons couvert comment aplatir des PDF avant l'impression en C# en utilisant la propriété PrintSettings.Flatten d'IronPrint. L'idée clé : définir Flatten = true pour fusionner les champs de formulaire interactifs, annotations et couches d'image en contenus statiques au moment de l'impression — sans modifier le fichier source.

Pour continuer à construire là-dessus :

Commencez un essai gratuit de 30 jours pour tester l'aplatissement de PDF dans vos propres flux de travail d'impression, ou voir les options de licence pour une utilisation en production.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite
Prêt à commencer?
Nuget Téléchargements 38,930 | Version : 2026.4 vient de sortir
Still Scrolling Icon

Vous faites encore défiler ?

Vous voulez une preuve rapidement ? PM > Install-Package IronPrint
exécuter un échantillon regarder votre document sortir de l'imprimante.