Jak spłaszczyć pliki PDF przed drukowaniem w języku C
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
- Zainstaluj IronPrint za pomocą NuGet:
Install-Package IronPrint - Dodaj
using IronPrint;do pliku - Utwórz obiekt
PrintSettings - Ustaw
Flattennatrue - Przekaż ustawienia do
Printer.Print()lubPrinter.PrintAsync()
-
Install IronPrint with NuGet Package Manager
PM > Install-Package IronPrint -
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 }); -
Wdrożenie do testowania w środowisku produkcyjnym
Rozpocznij używanie IronPrint w swoim projekcie już dziś z darmową wersją próbną
Minimalny proces (5 kroków)
- Zainstaluj bibliotekę IronPrint C#
- Utwórz obiekt
PrintSettings - Ustaw
Flattennatrue - Przekaż ustawienia do
Printer.PRINT() - Sprawdź, czy wydruk zawiera spłaszczone pola formularza
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)
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)
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
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:
- Zapoznaj się z pełnym przewodnikiem po konfiguracji ustawień drukowania dla wszystkich dostępnych właściwości
- Zobacz przykłady kodu ustawień drukowania, aby zapoznać się z typowymi wzorcami
- Zapoznaj się z dokumentacją API PrintSettings, aby uzyskać szczegółowe informacje na temat właściwości i wartości domyślnych
- Sprawdź dziennik zmian IronPrint, aby zapoznać się z najnowszymi funkcjami i ulepszeniami
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.

