Jak spłaszczyć obrazy w pliku PDF w języku C# za pomocą IronPDF

Spłaszczanie plików PDF w języku C

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

IronPDF spłaszcza dokumenty PDF w języku C# za pomocą jednej linii kodu, konwertując interaktywne pola formularzy na treść statyczną, aby zapobiec dalszym modyfikacjom i zapewnić integralność dokumentu.

Dokumenty PDF często zawierają interaktywne formularze z elementami do wypełnienia, takimi jak przyciski opcji, pola wyboru, pola tekstowe i listy. Aby uniemożliwić edycję tych dokumentów ze względów bezpieczeństwa lub archiwizacji, należy spłaszczyć plik PDF. IronPDF zapewnia tę funkcjonalność za pomocą zaledwie jednej linii kodu. Ta funkcja jest niezbędna podczas pracy z formularzami PDF w aplikacjach biznesowych, dokumentach prawnych lub w każdej sytuacji wymagającej trwałego zachowania dokumentów.

Baner z formularzem PDF do wypełnienia, zawierający logo Adobe PDF oraz dwa przykładowe interaktywne dokumenty formularzy z polami wprowadzania danych
Ołówek z symbolem zakazu wskazującym na ograniczenia edycji lub dostęp tylko do odczytu
Ikona pliku PDF z czerwonym nagłówkiem i zakrzywionym logo

Szybki start: Spłaszcz plik PDF w jednym wierszu

Spłaszczaj dokumenty PDF za pomocą IronPDF, aby usunąć wszelką interaktywność i utworzyć trwałą, nieedytowalną treść. Ten jednowierszowy kod w języku C# ładuje istniejący plik PDF, usuwa wszystkie elementy do wypełnienia i zapisuje zabezpieczony dokument.

  1. Install IronPDF with NuGet Package Manager

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

    IronPdf.PdfDocument.FromFile("input.pdf").Flatten().SaveAs("flattened.pdf");
  3. Wdrożenie do testowania w środowisku produkcyjnym

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

    arrow pointer

Jak spłaszczyć dokument PDF w języku C#?

Po zainstalowaniu IronPDF można spłaszczyć pliki PDF za pomocą jednej linii kodu. Proces ten działa z plikami PDF utworzonymi z plików HTML, ciągów znaków HTML lub istniejących dokumentów PDF.

Przyklad kodu ponizej uzywa klasy PdfDocument do zaladowania istniejacego pliku PDF. Do dynamicznego generowania PDF, uzyj klasy ChromePdfRenderer. Silnik renderujący IronPDF dla przeglądarki Chrome zapewnia dokładne renderowanie złożonych formularzy przed ich spłaszczeniem.

Aby spłaszczyć plik PDF, wywolaj metode Flatten. Powoduje to usunięcie wszystkich interaktywnych elementów, w tym przycisków opcji, pól wyboru i pól tekstowych, co sprawia, że dokument staje się całkowicie nieedytowalny.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-image-flatten-csharp-flatten-pdf.cs
using IronPdf;

// Select the desired PDF File
PdfDocument pdf = PdfDocument.FromFile("before.pdf");

// Flatten the pdf
pdf.Flatten();

// Save as a new file
pdf.SaveAs("after_flatten.pdf");
using IronPdf;

// Select the desired PDF File
PdfDocument pdf = PdfDocument.FromFile("before.pdf");

// Flatten the pdf
pdf.Flatten();

// Save as a new file
pdf.SaveAs("after_flatten.pdf");
using IronPdf;

// Select the desired PDF File
PdfDocument pdf = PdfDocument.FromFile("before.pdf");

// Flatten the pdf
pdf.Flatten();

// Save as a new file
pdf.SaveAs("after_flatten.pdf");
Imports IronPdf

' Select the desired PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("before.pdf")

' Flatten the pdf
pdf.Flatten()

' Save as a new file
pdf.SaveAs("after_flatten.pdf")
$vbLabelText   $csharpLabel

W przypadku złożonych scenariuszy można spłaszczyć określone strony lub manipulować danymi formularza przed spłaszczeniem:

using IronPdf;

// Load a PDF with fillable forms
PdfDocument pdf = PdfDocument.FromFile("form-document.pdf");

// Optionally, pre-fill form fields before flattening
pdf.Form.Fields[0].Value = "John Doe";
pdf.Form.Fields[1].Value = "john@example.com";

// Flatten only specific pages (pages 1-3)
pdf.FlattenPagesRange(0, 2);

// Or flatten the entire document
pdf.Flatten();

// Save the result
pdf.SaveAs("flattened-form.pdf");
using IronPdf;

// Load a PDF with fillable forms
PdfDocument pdf = PdfDocument.FromFile("form-document.pdf");

// Optionally, pre-fill form fields before flattening
pdf.Form.Fields[0].Value = "John Doe";
pdf.Form.Fields[1].Value = "john@example.com";

// Flatten only specific pages (pages 1-3)
pdf.FlattenPagesRange(0, 2);

// Or flatten the entire document
pdf.Flatten();

// Save the result
pdf.SaveAs("flattened-form.pdf");
Imports IronPdf

' Load a PDF with fillable forms
Dim pdf As PdfDocument = PdfDocument.FromFile("form-document.pdf")

' Optionally, pre-fill form fields before flattening
pdf.Form.Fields(0).Value = "John Doe"
pdf.Form.Fields(1).Value = "john@example.com"

' Flatten only specific pages (pages 1-3)
pdf.FlattenPagesRange(0, 2)

' Or flatten the entire document
pdf.Flatten()

' Save the result
pdf.SaveAs("flattened-form.pdf")
$vbLabelText   $csharpLabel

Jak sprawdzić, czy plik PDF został spłaszczony?

Poniższy wynik pokazuje stan przed i po spłaszczeniu. Pierwszy plik PDF zawiera edytowalne pola formularza. Po zastosowaniu metody flatten w IronPDF dokument staje się całkowicie nieedytowalny. Ten kod działa w każdym projekcie .NET, w tym w aplikacjach ASP.NET i na serwerach Blazor.

Zwróć uwagęFormularze nie beda wykrywalne po uzyciu metody Flatten.

Aby sprawdzić, czy spłaszczenie przebiegło pomyślnie, sprawdź liczbę pól formularza:

using IronPdf;

// Load the flattened PDF
PdfDocument flattenedPdf = PdfDocument.FromFile("flattened.pdf");

// Check if any form fields exist
if (flattenedPdf.Form.Fields.Count == 0)
{
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.");
}
else
{
    Console.WriteLine($"Warning: {flattenedPdf.Form.Fields.Count} form fields still exist.");
}
using IronPdf;

// Load the flattened PDF
PdfDocument flattenedPdf = PdfDocument.FromFile("flattened.pdf");

// Check if any form fields exist
if (flattenedPdf.Form.Fields.Count == 0)
{
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.");
}
else
{
    Console.WriteLine($"Warning: {flattenedPdf.Form.Fields.Count} form fields still exist.");
}
Imports IronPdf

' Load the flattened PDF
Dim flattenedPdf As PdfDocument = PdfDocument.FromFile("flattened.pdf")

' Check if any form fields exist
If flattenedPdf.Form.Fields.Count = 0 Then
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.")
Else
    Console.WriteLine($"Warning: {flattenedPdf.Form.Fields.Count} form fields still exist.")
End If
$vbLabelText   $csharpLabel

Co dzieje się z polami formularza po spłaszczeniu?

Podczas spłaszczania dokumentu PDF wszystkie interaktywne elementy formularza ulegają trwałej transformacji. Pola formularza przekształcają się w statyczną zawartość strony, stając się częścią warstwy wizualnej dokumentu:

  • Pola tekstowe stają się zwykłym tekstem na stronie
  • Pola wyboru i przyciski opcji stają się statycznymi obrazkami pokazującymi ich stan wyboru
  • Menu rozwijane wyświetlają tylko wybraną wartość jako zwykły tekst
  • Podpisy cyfrowe są zachowane wizualnie, ale tracą walidację kryptograficzną

Ten proces jest nieodwracalny. Zachowaj kopię oryginalnego interaktywnego pliku PDF, jeśli w przyszłości będziesz potrzebować możliwości edycji. W przypadku dokumentów wymagających zarówno bezpieczeństwa, jak i możliwości edycji, należy używać uprawnień i haseł PDF zamiast spłaszczania.

Kiedy należy spłaszczyć dokumenty PDF?

Spłaszczanie plików PDF jest niezbędne w następujących scenariuszach biznesowych:

  1. Archiwizacja dokumentów prawnych: Spłaszczaj umowy i porozumienia po podpisaniu, aby zapobiec zmianom treści i zachować integralność prawną.

  2. Dystrybucja raportów: Przed dystrybucją należy spłaszczyć raporty finansowe i arkusze danych z polami obliczeniowymi, aby zapobiec manipulacjom.

  3. Przetwarzanie przesłanych formularzy: Tworzenie trwałych zapisów poprzez spłaszczanie plików PDF po wypełnieniu przez użytkowników formularzy online.

  4. Optymalizacja drukowania: Spłaszczone pliki PDF drukują się bardziej niezawodnie, ponieważ drukarki nie przetwarzają elementów interaktywnych.

  5. Zmniejszenie rozmiaru pliku: Spłaszczenie może zmniejszyć rozmiar pliku poprzez usunięcie struktur danych pól formularza podczas kompresji pliku PDF.

Oto przykład przetwarzania wsadowego służący do archiwizacji wielu wypełnionych formularzy:

using IronPdf;
using System.IO;

public class BatchPdfFlattener
{
    public static void FlattenAllPdfsInDirectory(string sourceDir, string outputDir)
    {
        // Ensure output directory exists
        Directory.CreateDirectory(outputDir);

        // Get all PDF files in source directory
        string[] pdfFiles = Directory.GetFiles(sourceDir, "*.pdf");

        foreach (string pdfFile in pdfFiles)
        {
            try
            {
                // Load the PDF
                PdfDocument pdf = PdfDocument.FromFile(pdfFile);

                // Flatten the document
                pdf.Flatten();

                // Save to output directory with "_flattened" suffix
                string fileName = Path.GetFileNameWithoutExtension(pdfFile);
                string outputPath = Path.Combine(outputDir, $"{fileName}_flattened.pdf");
                pdf.SaveAs(outputPath);

                Console.WriteLine($"Flattened: {fileName}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}");
            }
        }
    }
}
using IronPdf;
using System.IO;

public class BatchPdfFlattener
{
    public static void FlattenAllPdfsInDirectory(string sourceDir, string outputDir)
    {
        // Ensure output directory exists
        Directory.CreateDirectory(outputDir);

        // Get all PDF files in source directory
        string[] pdfFiles = Directory.GetFiles(sourceDir, "*.pdf");

        foreach (string pdfFile in pdfFiles)
        {
            try
            {
                // Load the PDF
                PdfDocument pdf = PdfDocument.FromFile(pdfFile);

                // Flatten the document
                pdf.Flatten();

                // Save to output directory with "_flattened" suffix
                string fileName = Path.GetFileNameWithoutExtension(pdfFile);
                string outputPath = Path.Combine(outputDir, $"{fileName}_flattened.pdf");
                pdf.SaveAs(outputPath);

                Console.WriteLine($"Flattened: {fileName}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}");
            }
        }
    }
}
Imports IronPdf
Imports System.IO

Public Class BatchPdfFlattener
    Public Shared Sub FlattenAllPdfsInDirectory(sourceDir As String, outputDir As String)
        ' Ensure output directory exists
        Directory.CreateDirectory(outputDir)

        ' Get all PDF files in source directory
        Dim pdfFiles As String() = Directory.GetFiles(sourceDir, "*.pdf")

        For Each pdfFile As String In pdfFiles
            Try
                ' Load the PDF
                Dim pdf As PdfDocument = PdfDocument.FromFile(pdfFile)

                ' Flatten the document
                pdf.Flatten()

                ' Save to output directory with "_flattened" suffix
                Dim fileName As String = Path.GetFileNameWithoutExtension(pdfFile)
                Dim outputPath As String = Path.Combine(outputDir, $"{fileName}_flattened.pdf")
                pdf.SaveAs(outputPath)

                Console.WriteLine($"Flattened: {fileName}")
            Catch ex As Exception
                Console.WriteLine($"Error processing {pdfFile}: {ex.Message}")
            End Try
        Next
    End Sub
End Class
$vbLabelText   $csharpLabel

Aby zapoznać się z zaawansowanymi technikami obróbki plików PDF, w tym scalaniem lub dzielenie plików PDF po spłaszczeniu, zapoznaj się z obszerną dokumentacją IronPDF.


Szybki dostęp do biblioteki

Dokumentacja

Czytaj więcej Dokumentacja

Zapoznaj się z dokumentacją, aby dowiedzieć się więcej o spłaszczaniu plików PDF, ich edycji i modyfikacji oraz o innych kwestiach.

Odwiedź dokumentację IronPDF

Gotowy, aby sprawdzić, co jeszcze możesz zrobić? Zapoznaj się z naszą stroną z samouczkami tutaj: Dodatkowe funkcje

Często Zadawane Pytania

What does flattening a PDF mean?

Flattening a PDF converts all interactive form fields like checkboxes, text boxes, and radio buttons into static, non-editable content. IronPDF provides this functionality to ensure document integrity and prevent further modifications.

How do I flatten a PDF in C#?

With IronPDF, you can flatten a PDF in one line of code: IronPdf.PdfDocument.FromFile("input.pdf").Flatten().SaveAs("flattened.pdf"). This loads the PDF, removes all interactive elements, and saves the secured document.

Can I flatten specific pages instead of the entire document?

Yes, IronPDF allows you to flatten specific pages using the FlattenPagesRange method. For example, pdf.FlattenPagesRange(0, 2) will flatten only pages 1-3 of your document while leaving other pages interactive.

What types of form fields can be flattened?

IronPDF can flatten all interactive widgets including radio buttons, checkboxes, text fields, dropdown lists, and any other fillable form elements, converting them to permanent static content.

Can I fill form fields before flattening the PDF?

Yes, IronPDF allows you to pre-fill form fields before flattening. You can set values like pdf.Form.Fields[0].Value = "John Doe" before calling the Flatten method to create a completed, non-editable document.

What rendering engine does the PDF flattening process use?

IronPDF uses a Chrome rendering engine to ensure accurate rendering of complex forms before flattening, maintaining the visual integrity of your documents throughout the process.

Why would I need to flatten a PDF document?

Flattening PDFs with IronPDF is essential for security, archival purposes, legal documents, or any scenario requiring permanent document preservation where you need to prevent further modifications to form data.

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 18,318,263 | Wersja: 2026.4 just released
Still Scrolling Icon

Wciąż przewijasz?

Czy chcesz szybko dowodu? PM > Install-Package IronPdf
Uruchom przykład i zobacz, jak Twój kod HTML zamienia się w plik PDF.