Klasa PrintSettings w IronPrint zawiera właściwość Flatten, która łączy wszystkie interaktywne pola formularza, adnotacje i warstwy obrazów w statyczną treść w momencie drukowania. Ustawiamy Flatten = true na naszym obiekcie PrintSettings, a IronPrint zajmuje się resztą — nie jest wymagana żadna oddzielna biblioteka do obróbki plików PDF ani zapisywanie plików pośrednich.
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 Flatten na true
Przekaż ustawienia do Printer.Print() lub Printer.PrintAsync()
Sprawdź, czy wydruk zawiera spłaszczone pola formularza
Jak spłaszczyć plik PDF przed wydrukowaniem w języku C#?
Spłaszczamy plik PDF w momencie drukowania, ustawiając właściwość Flatten na true w obiekcie PrintSettings. Następnie przekazujemy ten obiekt do dowolnej metody drukowania IronPrint.
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
Najpierw instancjonujemy PrintSettings, co inicjuje go z wartościami domyślnymi — w tym Flatten = false. Następnie ustawiamy Flatten na true, Printer.PrintFlatten, co nakazuje IronPrint połączenie wszystkich elementów interaktywnych z treścią strony przed wysłaniem zadania drukowania. Kiedy wywołujemy [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 trwałe zmieniamy plik źródłowy.
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żemy pozostawić Flatten w domyślnej wartości falseFlatten = truePaperSize.A4PaperOrientation.PortraitDpiPaperMargins, aby uniknąć niepotrzebnego obciążenia przetwarzania.
Jak połączyć opcję Flatten z innymi ustawieniami drukowania?
Klasa PrintSettings udostępnia kilka właściwości obok Flatten. Możemy skonfigurować rozmiar papieru, orientację, rozdzielczość (DPI), marginesy i liczbę kopii wraz z płaskim drukowaniem — wszystko w jednym zadaniu drukowania.
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
Dla przejrzystości używamy składni inicjalizatora obiektów. EnsureFlatten zapewnia, że wszystkie dane z formularza pojawiają się na wydrukowanej stronie. PaperSize i Orientation odpowiadają standardowemu formatowi formularzy biznesowych. DPI przy wartości 300 zapewnia ostry tekst na wypełnionych polach, które pierwotnie były renderowane w rozdzielczości ekranowej. Margins akceptuje cztery wartości w milimetrach poprzez konstruktor 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 przyjmuje ten sam obiekt PrintSettings i zwraca Task.
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
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 amerykańskim. Słowo kluczowe await zwalnia wątek wywołujący, podczas gdy IronPrint przetwarza operację spłaszczania i wysyła zadanie drukowania.
Metody asynchroniczne IronPrint — w tym PrintAsync i ShowPrintDialogAsync — wszystkie obsługują ustawienie Flatten identycznie jak ich synchroniczne odpowiedniki awaitPrintSettings.FlattenFlatten = true. 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łaszczyć pliki PDF przed drukowaniem w języku C# przy użyciu właściwości PrintSettings biblioteki IronPrint. Najważniejsza wskazówka: ustaw Flatten, aby scalić interaktywne pola formularza, adnotacje i warstwy obrazów w treść statyczną w momencie drukowania — bez modyfikowania pliku źródłowego.
Spłaszczanie PDF gwarantuje, że wszystkie pola formularzy, adnotacje i obrazy są scalone w jedną warstwę, co zapewnia dokładne renderowanie i drukowanie.
Jak mogę spłaszczyć PDF za pomocą C#?
Możesz spłaszczyć PDF w C# używając biblioteki IronPrint. To polega na ustawieniu wartości logicznej w PrintSettings, aby upewnić się, że wszystkie elementy są odpowiednio spłaszczone w trakcie procesu drukowania.
Dlaczego pola formularzy i adnotacje muszą być spłaszczone?
Pola formularzy i adnotacje muszą być spłaszczone, aby uniknąć edytowalności lub nieprawidłowego wyrównania interaktywnych elementów po wydrukowaniu, co gwarantuje spójny wynik.
Co się stanie, jeśli PDF nie zostanie spłaszczony przed drukowaniem?
Jeśli PDF nie zostanie spłaszczony, interaktywne elementy, takie jak pola formularza i adnotacje, mogą nie zostać poprawnie wydrukowane, co prowadzi do błędów lub brakujących informacji w wydrukowanym dokumencie.
Czy IronPrint wspiera spłaszczanie innych elementów PDF poza polami formularzy?
Tak, IronPrint wspiera spłaszczanie różnych elementów PDF, w tym adnotacji, obrazów i innych treści warstwy, zapewniając, że wszystko jest wydrukowane zgodnie z założeniami.
Czy można zautomatyzować proces spłaszczania w C#?
Oczywiście, korzystając z IronPrint, możesz zautomatyzować proces spłaszczania poprzez skonfigurowanie PrintSettings w swoim kodzie C#, upraszczając przepływ pracy dla przetwarzania wsadową PDF.
Czy spłaszczanie PDF może wpłynąć na jakość druku?
Spłaszczanie PDF zazwyczaj poprawia jakość druku, zapewniając, że wszystkie elementy są dokładnie renderowane i wyrównane, co zmniejsza ryzyko błędów podczas procesu drukowania.
Jaka jest rola wartości logicznej w PrintSettings przy spłaszczaniu PDF?
Wartość logiczna w PrintSettings w IronPrint jest kluczowym parametrem umożliwiającym spłaszczenie PDF, zapewniając, że wszystkie warstwy są scalone w jedną, gotową do druku formę.
Czy IronPrint wymaga dodatkowego oprogramowania do spłaszczania PDF?
Nie jest wymagane dodatkowe oprogramowanie. IronPrint jest samodzielną biblioteką, która zapewnia wszelkie niezbędne funkcje do spłaszczania PDF bezpośrednio w twoich aplikacjach C#.
Jak IronPrint zapewnia kompatybilność z różnymi wersjami PDF?
IronPrint jest zaprojektowany do współpracy z różnymi wersjami PDF, zapewniając, że proces spłaszczania zachowuje integralność i formatowanie oryginalnego dokumentu.