Como achatar imagens PDF em C# com IronPDF

Como achatar PDFs no IronPDF C

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

IronPDF achata documentos PDF em C# com o método Flatten(), convertendo campos de formulário interativos em conteúdo estático para que o documento não possa mais ser modificado.

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 tornar esses documentos não editáveis para fins de segurança ou arquivamento, você achata o arquivo PDF. Isso se aplica ao trabalhar com formulários PDF em aplicativos de negócios, documentos legais ou qualquer cenário que exija um registro permanente.

Início rápido: Achate seu PDF em algumas linhas

Achate documentos PDF usando o IronPDF para remover toda a interatividade e criar conteúdo permanente e não editável. Este trecho de C# carrega um PDF existente, remove todos os widgets preenchíveis e salva o documento seguro.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

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

    var pdf = IronPdf.PdfDocument.FromFile("input.pdf");
    pdf.Flatten();
    pdf.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#?

Uma vez que o IronPDF está instalado, você pode achatar arquivos PDF com uma única chamada de método. O processo funciona em documentos PDF existentes e em PDFs que você renderiza a partir de arquivos HTML antes de achatar.

O exemplo de código abaixo usa a classe PdfDocument para carregar um PDF existente. Para geração dinâmica de PDF, renderize o formulário com a classe ChromePdfRenderer antes de achatar.

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

Entrada

: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");
Imports IronPdf

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

' Flatten the pdf
pdf.Flatten()

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

Saída

Para cenários complexos, achate páginas específicas ou defina dados de formulário antes de achatar. Passe uma lista de índices de página zero-base para achatar apenas essas páginas:

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

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

// Optionally, pre-fill form fields by name before flattening
pdf.Form.FindFormField("name").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john@example.com";

// Flatten only pages 1-3, passing their zero-based indexes
pdf.Flatten(new[] { 0, 1, 2 });

// 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 by name before flattening
pdf.Form.FindFormField("name").Value = "John Doe"
pdf.Form.FindFormField("email").Value = "john@example.com"

' Flatten only pages 1-3, passing their zero-based indexes
pdf.Flatten(New Integer() {0, 1, 2})

' 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 a execução do método de achatamento, o documento se torna não editável. Este código funciona em qualquer projeto .NET, incluindo aplicativos Blazor.

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

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

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

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

// FormFieldCollection exposes Count directly on the Form property
if (flattenedPdf.Form.Count == 0)
{
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.");
}
else
{
    Console.WriteLine($"Warning: {flattenedPdf.Form.Count} form fields still exist.");
}
Imports IronPdf

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

' FormFieldCollection exposes Count directly on the Form property
If flattenedPdf.Form.Count = 0 Then
    Console.WriteLine("PDF has been successfully flattened - no interactive fields remain.")
Else
    Console.WriteLine($"Warning: {flattenedPdf.Form.Count} form fields still exist.")
End If
$vbLabelText   $csharpLabel
Icon Quote related to Como posso verificar se o PDF está achatado?

Minha biblioteca favorita desse tipo é o IronPDF. Ele permite a manipulação rápida e eficiente de arquivos PDF. Além disso, possui muitos recursos valiosos, como a exportação para o formato PDF/A e a assinatura digital de documentos PDF.

Milan Jovanovic related to Como posso verificar se o PDF está achatado?

Milan Jovanovic

Microsoft MVP

Veja o estudo de caso
Icon Quote related to Como posso verificar se o PDF está achatado?

Com o IronOCR, podemos economizar US$ 40.000 por ano em processamento manual, ao mesmo tempo que aumentamos a produtividade e liberamos recursos para tarefas de alto impacto. Eu o recomendo fortemente.

Brent Matzelle related to Como posso verificar se o PDF está achatado?

Brent Matzelle

Diretor de Tecnologia, OPYN

Veja o estudo de caso
Icon Quote related to Como posso verificar se o PDF está achatado?

O IronSuite desempenha um papel crucial nas nossas operações. Estas são ferramentas que aumentam a eficiência no negócio, incluindo a criação de plantas baixas e melhoria na gestão de inventário.

David Jones related to Como posso verificar se o PDF está achatado?

David Jones

Engenheiro(a) de Software Líder, Agorus Build

Veja o estudo de caso

O que acontece com os campos de formulário após o achatamento?

Quando você achatar um documento PDF, cada elemento de formulário interativo se torna parte do conteúdo da página. Os campos de formulário se transformam em texto estático e gráficos:

  • 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. O achatamento mantém o texto e o conteúdo vetorial selecionáveis, ao contrário de rasterizar páginas em imagens, que converte cada página em uma imagem plana. 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?

Casos comuns de achatamento:

  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: Achatar pode reduzir o tamanho do arquivo removendo estruturas de dados de campos de formulário, o que combina bem com 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

Conclusão

Aplanar converte campos de formulário interativos de um PDF em conteúdo de página estático com uma única chamada Flatten(), bloqueando o documento contra edições futuras. Mantenha uma cópia não achatada se você precisar alterar os dados mais tarde, uma vez que a operação não pode ser desfeita.

Se você precisar preencher campos primeiro, defina os valores do formulário antes de achatar; para montar documentos bloqueados, una ou divida-os posteriormente.


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, achate um PDF em três declarações: var pdf = IronPdf.PdfDocument.FromFile("input.pdf"); depois pdf.Flatten(); depois pdf.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, passe uma lista de índices de página baseados em zero para o método Flatten. Por exemplo, pdf.Flatten(new[] { 0, 1, 2 }) achata apenas as páginas 0, 1 e 2, deixando as páginas restantes 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 que você pré-preencha campos de formulário antes de achatar. Você pode definir valores como pdf.Form.FindFormField("name").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 19,936,792 | Versão: 2026.7 recém-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.