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.

W poniższym przykładzie kodu wykorzystano klasę PdfDocument do załadowania istniejącego pliku PDF. Do dynamicznego generowania plików PDF należy użyć 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, wywołaj metodę 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 tłumaczeniu. 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 będą wykrywalne po zastosowaniu 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 PDF-y drukują się bardziej niezawodnie, ponieważ drukarki nie przetwarzają interaktywnych elementów.

  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 dla archiwizacji wielu ukończonych 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

Dla zaawansowanych technik manipulacji PDF, w tym łączenia lub dzielenia PDF po spłaszczeniu, zobacz pełną 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

Co oznacza spłaszczenie PDF?

Spłaszczenie PDF konwertuje wszystkie interaktywne pola formularzy, takie jak pola wyboru, pola tekstowe i przyciski radiowe, na statyczną, nieedytowalną zawartość. IronPDF oferuje tę funkcjonalność, aby zapewnić integralność dokumentu i zapobiec dalszym modyfikacjom.

Jak spłaszczyć PDF w C#?

Dzięki IronPDF możesz spłaszczyć PDF w jednej linii kodu: IronPdf.PdfDocument.FromFile("input.pdf").Flatten().SaveAs("flattened.pdf"). To ładuje PDF, usuwa wszystkie interaktywne elementy i zapisuje zabezpieczony dokument.

Czy mogę spłaszczyć określone strony zamiast całego dokumentu?

Tak, IronPDF pozwala na spłaszczenie określonych stron przy użyciu metody FlattenPagesRange. Na przykład pdf.FlattenPagesRange(0, 2) spłaszczy tylko strony 1-3 twojego dokumentu, pozostawiając inne strony interaktywne.

Jakie typy pól formularzy można spłaszczyć?

IronPDF może spłaszczać wszystkie interaktywne widżety, w tym przyciski radiowe, pola wyboru, pola tekstowe, listy rozwijane oraz dowolne inne wypełnialne elementy formularzy, przekształcając je w trwałą statyczną zawartość.

Czy mogę wypełniać pola formularzy przed spłaszczeniem PDF?

Tak, IronPDF pozwala wypełniać pola formularzy przed spłaszczeniem. Możesz ustawić wartości takie jak pdf.Form.Fields[0].Value = "John Doe" przed wywołaniem metody Flatten, aby stworzyć ukończony, nieedytowalny dokument.

Jakiego silnika renderowania używa proces spłaszczania PDF?

IronPDF używa silnika renderowania Chrome, aby zapewnić dokładne renderowanie złożonych formularzy przed spłaszczeniem, zachowując integralność wizualną twoich dokumentów w całym procesie.

Dlaczego musiałbym spłaszczać dokument PDF?

Spłaszczenie plików PDF z IronPDF jest niezbędne dla bezpieczeństwa, celów archiwalnych, dokumentów prawnych lub w jakichkolwiek sytuacjach wymagających trwałego zachowania dokumentów, gdzie konieczne jest uniemożliwienie dalszych modyfikacji danych formularza.

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 19,014,616 | Wersja: 2026.5 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.