Como achatar PDFs no IronPDF C
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.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
-
Copie e execute este trecho de código.
var pdf = IronPdf.PdfDocument.FromFile("input.pdf"); pdf.Flatten(); pdf.SaveAs("flattened.pdf"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instale o IronPDF a partir do Gerenciador de Pacotes NuGet.
- Carregar PDF existente ou criar um novo a partir de HTML
- Chame o método
Flatten - Salve o documento PDF achatado.
- Verifique se os campos do formulário foram removidos.
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")
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")
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.
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
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.
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:
-
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.
-
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.
-
Processamento de envio de formulários : Crie registros permanentes aplanando os PDFs após os usuários preencherem os formulários online.
-
Otimização de impressão : PDFs achatados imprimem de forma mais confiável, pois as impressoras não processam elementos interativos.
- 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
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
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 IronPDFPronto 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.

