Jak spłaszczyć pliki PDF przed drukowaniem w języku C

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

Klasa PrintSettings w IronPrint zawiera właściwość Flatten, która łączy wszystkie interaktywne pola formularzy, adnotacje i warstwy obrazu w statyczną zawartość podczas drukowania. Ustawiamy Flatten = true na naszym obiekcie PrintSettings, a IronPrint zajmuje się resztą — nie jest wymagana osobna biblioteka do manipulacji PDF ani zapis pośrednich plików.

W niniejszym przewodniku omówiono, kiedy i jak spłaszczać pliki PDF przed drukowaniem, wraz z działającym kodem w języku C# dla przepływów pracy synchronicznych, z połączonymi ustawieniami oraz asynchronicznych.

Szybki start: Spłaszczanie plików PDF przed drukowaniem

  1. Zainstaluj IronPrint za pomocą NuGet: Install-Package IronPrint
  2. Dodaj using IronPrint; do pliku
  3. Utwórz obiekt PrintSettings
  4. Ustaw Flatten na true
  5. Przekaż ustawienia do Printer.Print() lub Printer.PrintAsync()
  1. Install IronPrint with NuGet Package Manager

    PM > Install-Package IronPrint
  2. Skopiuj i uruchom ten fragment kodu.

    using IronPrint;
    
    // Flatten and print a PDF with form fields
    Printer.Print("form-document.pdf", new PrintSettings
    {
        Flatten = true
    });
  3. Wdrożenie do testowania w środowisku produkcyjnym

    Rozpocznij używanie IronPrint w swoim projekcie już dziś z darmową wersją próbną

    arrow pointer

Jak spłaszczyć plik PDF przed wydrukowaniem w języku C#?

Spłaszczamy PDF podczas drukowania, ustawiając właściwość Flatten na true na obiekcie PrintSettings. Następnie przekazujemy ten obiekt do dowolnej metody drukowania 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

Najpierw tworzymy instancję PrintSettings, która inicjalizuje się z wartościami domyślnymi — w tym Flatten = false. Następnie ustawiamy Flatten na true, co informuje IronPrint, aby połączyć wszystkie interaktywne elementy z zawartością strony przed wysłaniem zadania drukowania. Kiedy wykonujemy Printer.Print, drukarka otrzymuje w pełni statyczną wersję dokumentu.

Spłaszczanie odbywa się w pamięci podczas procesu drukowania. Oryginalny plik PDF pozostaje interaktywny na dysku, więc użytkownicy końcowi nadal mogą wypełniać i ponownie przesyłać formularz. Jest to istotna różnica: dostosowujemy plik do druku, a nie trwale zmieniamy plik źródłowy.

Właściwość Flatten została wprowadzona w wersji IronPrint v2024.7.2 i jest dostępna we wszystkich kolejnych wersjach.

Kiedy należy spłaszczyć plik PDF przed drukowaniem?

Spłaszczanie jest najbardziej przydatne, gdy plik PDF zawiera elementy interaktywne, które mogą nie wyświetlać się poprawnie na papierze. Najczęstsze scenariusze obejmują:

Pliki PDF z polami formularza do wypełnienia. Pola tekstowe, pola wyboru, przyciski opcji i menu rozwijane są renderowane przez przeglądarkę PDF — nie są osadzone w treści strony. Niektóre sterowniki drukarek całkowicie pomijają te warstwy, co powoduje pojawienie się pustych pól na wydrukowanej stronie. Spłaszczenie wymusza umieszczenie wartości pól w warstwie statycznej strony.

Pliki PDF z adnotacjami lub nakładkami. Komentarze, karteczki samoprzylepne, stemple i adnotacje znajdują się na oddzielnej warstwie. Spłaszczenie łączy je z widoczną treścią, dzięki czemu pojawiają się one na wydruku.

Pliki PDF z obrazami osadzonymi na różnych warstwach. Dokumenty złożone z wielu źródeł mogą zawierać obrazy na różnych warstwach z. Spłaszczanie kompozytów do jednej warstwy, zapobiegające brakom lub niewłaściwemu wyrównaniu obrazów.

Gdy plik PDF zawiera wyłącznie statyczny tekst i obrazy — na przykład raport wygenerowany z kodu HTML lub zeskanowany dokument — spłaszczenie nie ma żadnego wpływu. W takich przypadkach można pozostawić Flatten na wartości domyślnej false, aby uniknąć zbędnego obciążenia przetwarzaniem.

Jak połączyć opcję Flatten z innymi ustawieniami drukowania?

Klasa PrintSettings udostępnia kilka właściwości razem z Flatten. Możemy skonfigurować rozmiar papieru, orientację, rozdzielczość (DPI), marginesy i liczbę kopii wraz z płaskim drukowaniem — wszystko w jednym zadaniu drukowania.

: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

Dla przejrzystości używamy składni inicjalizatora obiektów. Flatten = true zapewnia, że wszystkie dane formularza pojawiają się na wydrukowanej stronie. PaperSize.A4 i PaperOrientation.Portrait pasują do standardowego formatu dla formularzy firmowych. Dpi przy wartości 300 wytwarza ostry tekst na wypełnionych polach, które pierwotnie były renderowane w rozdzielczości ekranowej. PaperMargins akceptuje cztery wartości w milimetrach za pomocą konstruktora Margins.

Cechy te nie są ze sobą sprzeczne. IronPrint najpierw stosuje operację spłaszczania, a następnie formatuje wynikowy dokument statyczny zgodnie z pozostałymi ustawieniami przed wysłaniem zadania do drukarki. Aby uzyskać więcej informacji na temat opcji drukowania, w tym wyboru drukarki i konfiguracji podajnika, zapoznaj się z pełnym przewodnikiem konfiguracji.

Jak spłaszczyć i drukować asynchronicznie?

W aplikacjach, w których blokowanie głównego wątku jest niedopuszczalne — takich jak aplikacje WPF lub WinForms — używamy metody Printer.PrintAsync. Metoda akceptuje ten sam obiekt PrintSettings i zwraca 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

Ten wzorzec oparty na klasach jest przydatny, gdy logika drukowania znajduje się w warstwie usług. Konfigurujemy Flatten = true wraz z PaperSize.Letter dla formularzy w formacie US. Słowo kluczowe await zwalnia wątek wywołujący, podczas gdy IronPrint przetwarza operację spłaszczania i wysyła zadanie drukowania.

Asynchroniczne metody IronPrint — w tym PrintAsync i ShowPrintDialogAsync — wszystkie honoruja ustawienie Flatten tak samo jak ich synchroniczne odpowiedniki. Niezależnie od tego, czy drukujemy w tle, czy za pomocą okna dialogowego PRINT, zachowanie spłaszczania pozostaje spójne.

Jakie są moje kolejne kroki?

Omówiliśmy, jak spłaszczać pliki PDF przed drukowaniem w C# za pomocą właściwości PrintSettings.Flatten IronPrint. Kluczowe wnioski: ustaw Flatten = true, aby połączyć interaktywne pola formularzy, adnotacje i warstwy obrazu w statyczną zawartość podczas drukowania — bez modyfikowania pliku źródłowego.

Aby kontynuować pracę nad tym:

Rozpocznij bezpłatny 30-dniowy okres próbny, aby przetestować spłaszczanie plików PDF we własnych procesach drukowania, lub zapoznaj się z opcjami licencyjnymi do użytku produkcyjnego.

Curtis Chau
Autor tekstów technicznych

Curtis Chau posiada tytuł licencjata z informatyki (Uniwersytet Carleton) i specjalizuje się w front-endowym rozwoju, z ekspertką w Node.js, TypeScript, JavaScript i React. Pasjonuje się tworzeniem intuicyjnych i estetycznie przyjemnych interfejsów użytkownika, Curtis cieszy się pracą z nowoczesnymi frameworkami i tworzeniem dobrze zorganizowanych, atrakcyjnych wizualnie podrę...

Czytaj więcej
Gotowy, aby rozpocząć?
Nuget Pliki do pobrania 38,948 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPrint
uruchom próbkę obserwuj, jak twój dokument trafia do drukarki.