Comment aplatir des PDF avant l'impression 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, les annotations et les calques 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 distincte ni aucun enregistrement de fichier intermédiaire n'est nécessaire.

Ce guide couvre quand et comment aplatir des PDF avant l'impression, 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éer un objet PrintSettings
  4. Remplacer Flatten par true
  5. Transmettre 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;

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

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

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

Nous instancions d'abord PrintSettings, qui s'initialise avec des valeurs par défaut — y compris Flatten = false. Nous définissons ensuite Flatten sur true, Printer.Print Flatten, ce qui indique à IronPrint de fusionner tous les éléments interactifs dans le contenu de la page avant d'envoyer la tâche d'impression. Lorsque nous appelons [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 false Flatten = true PaperSize.A4 PaperOrientation.Portrait Dpi PaperMargins afin d'éviter une charge de traitement inutile.

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

La classe PrintSettings expose plusieurs propriétés aux côtés 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;

// Configure flatten with full print settings
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 the insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint

' Configure flatten with full print settings
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 the insurance claim form
Printer.Print("insurance-claim.pdf", settings)
$vbLabelText   $csharpLabel

Nous utilisons la syntaxe d'initialisation d'objet pour plus de clarté. EnsureFlatten garantit que toutes les données du formulaire apparaissent sur la page imprimée. PaperSize et Orientation respectent le format standard des formulaires commerciaux. DPI à 300 produit un texte net sur les champs remplis qui étaient initialement affichés à la résolution de l'écran. Margins accepte quatre valeurs en millimètres via le 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)
    {
        // Configure flatten with Letter paper at 300 DPI
        PrintSettings settings = new PrintSettings
        {
            Flatten = true,
            PaperSize = PaperSize.Letter,
            Dpi = 300
        };

        // Print asynchronously
        await Printer.PrintAsync(pdfPath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class FormPrinter
    Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
        ' Configure flatten with Letter paper at 300 DPI
        Dim settings As New PrintSettings With {
            .Flatten = True,
            .PaperSize = PaperSize.Letter,
            .Dpi = 300
        }

        ' Print asynchronously
        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 avec 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 de aplatissement et envoie la tâche d'impression.

Les méthodes asynchrones d'IronPrint — notamment PrintAsync et ShowPrintDialogAsync — respectent toutes le paramètre Flatten de la même manière que leurs équivalents synchrones await PrintSettings.Flatten Flatten = true. 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 vu comment aplatir des PDF avant impression en C# à l'aide de la propriété PrintSettings d'IronPrint. Point clé : définissez Flatten pour fusionner les champs de formulaire interactifs, les annotations et les calques d'image en contenu statique au moment de la PRINT — 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.

Questions Fréquemment Posées

Quel est le but d'aplatir les PDFs avant impression?

Aplatir les PDFs garantit que tous les champs de formulaire, annotations et images sont consolidés en une seule couche, ce qui assure un rendu et une impression précis.

Comment puis-je aplatir un PDF en utilisant C#?

Vous pouvez aplatir un PDF en C# en utilisant la bibliothèque IronPrint. Cela implique de définir un booléen sur les PrintSettings pour garantir que tous les éléments sont correctement aplatis lors du processus d'impression.

Pourquoi les champs de formulaire et les annotations doivent-ils être aplatis?

Les champs de formulaire et les annotations doivent être aplatis pour empêcher que les éléments interactifs soient modifiables ou désalignés lors de l'impression, garantissant une sortie cohérente.

Que se passe-t-il si un PDF n'est pas aplati avant impression?

Si un PDF n'est pas aplati, des éléments interactifs comme les champs de formulaire et annotations pourraient ne pas être imprimés correctement, entraînant des erreurs ou des informations manquantes dans le document imprimé.

IronPrint prend-il en charge l'aplatissement d'autres éléments PDF en plus des champs de formulaire?

Oui, IronPrint prend en charge l'aplatissement de divers éléments PDF, y compris les annotations, les images et d'autres contenus en couches, assurant que tout est imprimé comme prévu.

Est-il possible d'automatiser le processus d'aplatissement en C#?

Absolument, en utilisant IronPrint, vous pouvez automatiser le processus d'aplatissement en configurant les PrintSettings dans votre code C#, rationalisant le flux de travail pour le traitement par lots de PDFs.

L'aplatissement des PDFs peut-il affecter la qualité d'impression?

L'aplatissement des PDFs améliore généralement la qualité d'impression en assurant que tous les éléments sont rendus et alignés avec précision, réduisant les risques d'erreurs pendant le processus d'impression.

Quel est le rôle du booléen PrintSettings dans l'aplatissement des PDFs?

Le booléen PrintSettings dans IronPrint est un paramètre clé qui permet l'aplatissement des PDFs, garantissant que toutes les couches sont fusionnées en un seul format prêt à l'impression.

IronPrint nécessite-t-il un logiciel supplémentaire pour aplatir les PDFs?

Aucun logiciel supplémentaire n'est nécessaire. IronPrint est une bibliothèque autonome qui fournit toutes les fonctionnalités nécessaires pour aplatir les PDFs directement dans vos applications C#.

Comment IronPrint assure-t-il la compatibilité avec différentes versions de PDF?

IronPrint est conçu pour être compatible avec diverses versions de PDF, garantissant que le processus d'aplatissement maintient l'intégrité et le formatage du document original.

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 41,154 | Version : 2026.5 just released
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.