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 linhasAchate 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.
-
1Install IronPDF with NuGet Package Manager
-
2Copie e execute este trecho de código.
var pdf = IronPdf.PdfDocument.FromFile("input.pdf"); pdf.Flatten(); pdf.SaveAs("flattened.pdf");C# -
3Implante 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
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:
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");
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:
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.");
}
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}");
}
}
}
}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 ClassConclusã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.
Is the flattening process reversible in IronPDF?
No, the flattening process is irreversible. It permanently converts interactive elements into non-editable content, so it's crucial to keep an original unflattened copy if future edits are needed.
Do flattened PDFs still retain selectable text and vector graphics?
Yes, while form fields are converted to static content, IronPDF retains selectable text and vector graphics within the document.
Can interactive elements like digital signatures be preserved upon flattening?
Digital signatures are preserved visually after flattening in IronPDF, but cryptographic validation is lost, meaning they remain visible yet are no longer valid signatures.

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 bem estruturados e visualmente atraentes.
