Aplanar PDFs em C
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.
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.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
IronPdf.PdfDocument.FromFile("input.pdf").Flatten().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#?
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")
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")
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 .
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
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:
-
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 : 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
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
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, 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.

