Como achatar imagens PDF em C# com IronPDF

Aplanar PDFs em C

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

O IronPDF transforma documentos PDF em conteúdo estático usando C# com uma única linha de código, convertendo campos de formulário interativos em conteúdo estático para evitar modificações posteriores e garantir a integridade do documento.

Os documentos PDF geralmente incluem formulários interativos com widgets preenchíveis, como botões de opção, caixas de seleção, caixas de texto e listas. Para editar PDF de forma definitiva — tornando esses documentos não editáveis por motivos de segurança ou arquivamento — você precisa achatar o arquivo PDF. O IronPDF oferece essa funcionalidade com apenas uma linha de código. Essa funcionalidade é essencial ao trabalhar com formulários PDF em aplicações comerciais, documentos jurídicos ou qualquer cenário que exija a preservação permanente de documentos.

Banner de formulário PDF preenchível exibindo o logotipo do Adobe PDF e dois exemplos de documentos de formulário interativos com campos de entrada.
Lápis com símbolo de proibição indicando restrições de edição ou acesso somente leitura.
Ícone de arquivo PDF da Adobe com cabeçalho vermelho e logotipo curvo

Início rápido: Achate seu PDF em uma única linha

Use o IronPDF para achatar documentos PDF, removendo toda a interatividade e criando conteúdo permanente e não editável. Este comando em C# de uma linha carrega um PDF existente, remove todos os campos preenchíveis e salva o documento protegido.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    IronPdf.PdfDocument.FromFile("input.pdf").Flatten().SaveAs("flattened.pdf");
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita

    arrow pointer

Como faço para achatar um documento PDF em C#?

Após instalar o IronPDF , você pode transformar arquivos PDF em arquivos planos com apenas uma linha de código. O processo funciona com PDFs criados a partir de arquivos HTML , strings HTML ou documentos PDF existentes.

O exemplo de código abaixo usa a classe PdfDocument para carregar um PDF existente. Para geração dinâmica de PDFs, use a classe ChromePdfRenderer. O mecanismo de renderização Chrome do IronPDF garante a renderização precisa de formas complexas antes do achatamento.

Para achatar um arquivo PDF, chame o método Flatten. Isso remove todos os widgets interativos, incluindo botões de opção, caixas de seleção e campos de texto, tornando o documento completamente não editável.

: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

Para cenários complexos, você pode achatar páginas específicas ou manipular dados de formulário antes de achatá-las:

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

Como posso verificar se o PDF está achatado?

A saída abaixo mostra os estados antes e depois. O primeiro PDF contém campos de formulário editáveis. Após aplicar o método de achatamento do IronPDF, o documento torna-se completamente não editável. Este código funciona em qualquer projeto .NET , incluindo aplicações ASP.NET e servidores Blazor .

ObserveOs formulários não serão detectáveis ​​após o uso do método Flatten.

Para verificar se o nivelamento foi bem-sucedido, confira a quantidade de campos do formulário:

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

O que acontece aos campos do formulário após o achatamento?

Ao transformar um documento PDF em um documento plano, todos os elementos interativos do formulário sofrem uma transformação permanente. Os campos do formulário se convertem em conteúdo estático da página, tornando-se parte da camada visual do documento:

  • Os campos de texto se transformam em texto normal na página.
  • As caixas de seleção e os botões de opção tornam-se imagens estáticas que mostram o estado selecionado.
  • Os menus suspensos exibem apenas o valor selecionado como texto simples. As assinaturas digitais são preservadas visualmente, mas perdem a validação criptográfica.

Esse processo é irreversível. Guarde uma cópia do PDF interativo original caso precise editar o arquivo futuramente. Para documentos que exigem segurança e capacidade de edição, use permissões e senhas de PDF em vez de achatá-los.

Quando devo achatar meus documentos PDF?

O achatamento de PDFs é essencial nestes cenários de negócios:

  1. Arquivamento de Documentos Legais : Transformar contratos e acordos em versões planas após a assinatura para evitar alterações de conteúdo e manter a integridade jurídica.

  2. Distribuição de relatórios : Achate os relatórios financeiros e as planilhas de dados com campos calculados antes da distribuição para evitar adulteração.

  3. Processamento de envio de formulários : Crie registros permanentes aplanando os PDFs após os usuários preencherem os formulários online.

  4. Otimização de impressão : PDFs achatados imprimem de forma mais confiável, pois as impressoras não processam elementos interativos.

  5. Redução do tamanho do arquivo : O achatamento pode reduzir o tamanho do arquivo removendo as estruturas de dados dos campos de formulário ao usar a compressão de PDF .

Aqui está um exemplo de processamento em lote para arquivar vários formulários preenchidos:

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

Para técnicas avançadas de manipulação de PDFs, incluindo a fusão ou divisão de PDFs após o achatamento, consulte a documentação completa do IronPDF.


Acesso rápido à biblioteca

Documentação

Leia mais documentação

Leia a documentação para obter mais informações sobre como achatar PDFs, editá-los e manipulá-los, e muito mais.

Visite a documentação do IronPDF

Pronto para ver o que mais você pode fazer? Confira nossa página de tutoriais aqui: Recursos adicionais

Perguntas frequentes

O que significa achatar um PDF?

Ao achatar um PDF, todos os campos interativos do formulário, como caixas de seleção, caixas de texto e botões de opção, são convertidos em conteúdo estático e não editável. O IronPDF oferece essa funcionalidade para garantir a integridade do documento e impedir modificações futuras.

Como faço para achatar um PDF em C#?

Com o IronPDF, você pode achatar um PDF em uma única linha de código: IronPdf.PdfDocument.FromFile("input.pdf").Flatten().SaveAs("flattened.pdf"). Isso carrega o PDF, remove todos os elementos interativos e salva o documento protegido.

Posso achatar páginas específicas em vez do documento inteiro?

Sim, o IronPDF permite que você achate páginas específicas usando o método FlattenPagesRange. Por exemplo, pdf.FlattenPagesRange(0, 2) achatará apenas as páginas 1 a 3 do seu documento, mantendo as outras páginas interativas.

Que tipos de campos de formulário podem ser achatados?

O IronPDF consegue transformar todos os widgets interativos, incluindo botões de opção, caixas de seleção, campos de texto, listas suspensas e quaisquer outros elementos de formulário preenchíveis, em conteúdo estático permanente.

Posso preencher os campos do formulário antes de converter o PDF em formato plano?

Sim, o IronPDF permite preencher previamente os campos do formulário antes de achatá-lo. Você pode definir valores como pdf.Form.Fields[0].Value = "John Doe" antes de chamar o método Flatten para criar um documento completo e não editável.

Qual mecanismo de renderização é usado no processo de achatamento de PDF?

O IronPDF utiliza um mecanismo de renderização do Chrome para garantir a renderização precisa de formulários complexos antes do achatamento, mantendo a integridade visual dos seus documentos durante todo o processo.

Por que eu precisaria achatar um documento PDF?

A compactação de PDFs com o IronPDF é essencial para segurança, arquivamento, documentos legais ou qualquer cenário que exija a preservação permanente de documentos, onde seja necessário impedir modificações adicionais nos dados do formulário.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.