Como Achatar PDFs Antes de Imprimir em C
A classe PrintSettings do IronPrint inclui uma propriedade Flatten que mescla todos os campos de formulário interativos, anotações e camadas de imagem em conteúdo estático no momento da impressão. Definimos Flatten = true em nosso objeto PrintSettings e o IronPrint cuida do resto — nenhuma biblioteca separada de manipulação de PDF ou salvamento de arquivo intermediário é necessário.
Este guia abrange quando e como achatar PDFs antes de imprimir, com código funcional em C# para fluxos de trabalho síncronos, de configurações combinadas e assíncronos.
Início Rápido: Achatar PDFs Antes de Imprimir
- Instale o IronPrint via NuGet:
Install-Package IronPrint - Adicione
using IronPrint;ao arquivo - Crie um objeto
PrintSettings - Defina
Flattenparatrue - Passe as configurações para
Printer.Print()ouPrinter.PrintAsync()
-
Instale IronPrint com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPrint -
Copie e execute este trecho de código.
using IronPrint; // Flatten and print a PDF with form fields Printer.Print("form-document.pdf", new PrintSettings { Flatten = true }); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPrint em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Instale a biblioteca de impressão IronPrint C#
- Crie um objeto
PrintSettings - Defina
Flattencomotrue - Passe as configurações para
Printer.Print() - Verifique se a saída impressa contém campos de formulário achatados
Como Achato um PDF Antes de Imprimir em C#?
Aplanamos um PDF no momento da impressão definindo a propriedade Flatten para true em um objeto PrintSettings. Em seguida, passamos esse objeto para qualquer um dos métodos de impressão do IronPrint.
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-flatten-basic.cs
using IronPrint;
// Configure print settings with flattening enabled
PrintSettings settings = new PrintSettings();
settings.Flatten = true;
// Print the flattened document
Printer.Print("application-form.pdf", settings);
Imports IronPrint
' Configure print settings with flattening enabled
Dim settings As New PrintSettings()
settings.Flatten = True
' Print the flattened document
Printer.Print("application-form.pdf", settings)
Primeiro, instanciamos PrintSettings, que é inicializado com valores padrão — incluindo Flatten = false. Em seguida, definimos Flatten para true, Printer.Print e Flatten, o que instrui o IronPrint a mesclar todos os elementos interativos no conteúdo da página antes de enviar o trabalho de impressão. Quando chamamos [Print()], a impressora recebe uma versão totalmente estática do documento.
O achatamento acontece na memória durante o pipeline de impressão. O arquivo PDF original permanece interativo no disco, para que os usuários finais ainda possam preencher e reenviar o formulário. Esta é uma distinção essencial: estamos achatando para a impressora, não alterando permanentemente o arquivo fonte.
A propriedade Flatten foi introduzida no IronPrint v2024.7.2 e está disponível em todas as versões subsequentes.
Quando Devo Achatar um PDF Antes de Imprimir?
O achatamento é mais valioso quando o PDF contém elementos interativos que podem não renderizar corretamente no papel. Os cenários mais comuns incluem:
PDFs com campos de formulário preenchíveis. Entradas de texto, caixas de seleção, botões de rádio e menus suspensos são renderizados pelo visualizador de PDF — não incorporados no conteúdo da página. Alguns drivers de impressora ignoram completamente essas camadas, resultando em campos em branco na página impressa. O achatamento força os valores dos campos na camada estática da página.
PDFs com anotações ou sobreposições. Comentários, notas adesivas, carimbos e anotações de marcação existem em uma camada separada. O achatamento os mescla no conteúdo visível para que apareçam na saída impressa.
PDFs com imagens incorporadas em diferentes camadas. Documentos montados de várias fontes podem ter imagens em diferentes camadas z. O achatamento compõe tudo em uma única camada, evitando imagens faltantes ou desalinhadas.
Quando o PDF contém apenas texto e imagens estáticos — tal como um relatório gerado a partir de HTML ou um documento escaneado — o achatamento não tem efeito. Nesses casos, podemos deixar Flatten com seu valor padrão de false Flatten = true PaperSize.A4 PaperOrientation.Portrait Dpi PaperMargins para evitar sobrecarga de processamento desnecessária.
Como Posso Combinar o Achatamento com Outras Configurações de Impressão?
A classe PrintSettings expõe várias propriedades juntamente com Flatten. Podemos configurar o tamanho do papel, orientação, DPI, margens e contagem de cópias juntamente com o achatamento — tudo em um único trabalho de impressão.
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-combined-settings.cs
using IronPrint;
// Configure flatten with full print settings
PrintSettings settings = new PrintSettings
{
Flatten = true,
PaperSize = PaperSize.A4,
PaperOrientation = PaperOrientation.Portrait,
Dpi = 300,
NumberOfCopies = 2,
PaperMargins = new Margins(10, 10, 10, 10),
Grayscale = false
};
// Print the insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint
' Configure flatten with full print settings
Dim settings As New PrintSettings With {
.Flatten = True,
.PaperSize = PaperSize.A4,
.PaperOrientation = PaperOrientation.Portrait,
.Dpi = 300,
.NumberOfCopies = 2,
.PaperMargins = New Margins(10, 10, 10, 10),
.Grayscale = False
}
' Print the insurance claim form
Printer.Print("insurance-claim.pdf", settings)
Usamos a sintaxe do inicializador de objeto para clareza. EnsureFlatten garante que todos os dados do formulário apareçam na página impressa. PaperSize e Orientation correspondem ao formato padrão para formulários comerciais. DPI em 300 produz texto nítido em campos preenchidos que foram originalmente renderizados na resolução da tela. Margins aceita quatro valores em milímetros através do construtor Margins .
Essas propriedades não conflitam entre si. O IronPrint aplica primeiro a operação de achatamento, depois formata o documento estático resultante de acordo com as configurações restantes antes de enviar o trabalho para a impressora. Para mais opções de configurações de impressão, incluindo seleção de impressora e configuração de bandeja, veja o guia completo de configuração.
Como Posso Achatar e Imprimir Assincronamente?
Para aplicações onde bloquear a thread principal não é aceitável — como aplicativos WPF ou WinForms — usamos Printer.PrintAsync. O método aceita o mesmo objeto PrintSettings e retorna um Task.
:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-async-flatten.cs
using IronPrint;
using System.Threading.Tasks;
public class FormPrinter
{
public async Task PrintFlattenedFormAsync(string pdfPath)
{
// Configure flatten with Letter paper at 300 DPI
PrintSettings settings = new PrintSettings
{
Flatten = true,
PaperSize = PaperSize.Letter,
Dpi = 300
};
// Print asynchronously
await Printer.PrintAsync(pdfPath, settings);
}
}
Imports IronPrint
Imports System.Threading.Tasks
Public Class FormPrinter
Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
' Configure flatten with Letter paper at 300 DPI
Dim settings As New PrintSettings With {
.Flatten = True,
.PaperSize = PaperSize.Letter,
.Dpi = 300
}
' Print asynchronously
Await Printer.PrintAsync(pdfPath, settings)
End Function
End Class
Este padrão baseado em classe é útil quando a lógica de impressão está em uma camada de serviço. Configuramos Flatten = true juntamente com PaperSize.Letter para formulários no formato americano. A palavra-chave await libera a thread de chamada enquanto o IronPrint processa a operação de achatamento e envia o trabalho de impressão.
Os métodos assíncronos do IronPrint — incluindo PrintAsync e ShowPrintDialogAsync — respeitam a configuração Flatten de forma idêntica às suas contrapartes síncronas await PrintSettings.Flatten Flatten = true. Quer imprimamos silenciosamente ou por meio de uma caixa de diálogo de impressão, o comportamento de flatten é consistente.
Quais são os meus próximos passos?
Abordamos como achatar PDFs antes da impressão em C# usando a propriedade PrintSettings do IronPrint. A principal conclusão: defina Flatten para mesclar campos de formulário interativos, anotações e camadas de imagem em conteúdo estático no momento da impressão — sem modificar o arquivo de origem.
Para continuar a desenvolver isso:
- Explore o guia completo de configuração de configurações de impressão para todas as propriedades disponíveis
- Veja os exemplos de código de configurações de impressão para padrões comuns
- Reveja a referência da API de PrintSettings para detalhes de propriedade e valores padrão
- Verifique o changelog do IronPrint para os mais recentes recursos e melhorias
Inicie um teste gratuito de 30 dias para testar o flatten de PDF em seus próprios fluxos de trabalho de impressão, ou veja opções de licenciamento para uso em produção.
Perguntas frequentes
Qual é o objetivo de achatar PDFs antes de imprimir?
Achatar PDFs garante que todos os campos de formulário, anotações e imagens sejam consolidados em uma única camada, o que garante renderização e impressão precisas.
Como posso achatar um PDF usando C#?
Você pode achatar um PDF em C# utilizando a biblioteca do IronPrint. Isso envolve definir um booleano no PrintSettings para garantir que todos os elementos sejam devidamente achatados durante o processo de impressão.
Por que campos de formulário e anotações precisam ser achatados?
Campos de formulário e anotações precisam ser achatados para evitar que elementos interativos sejam editáveis ou desalinhados quando impressos, garantindo uma saída consistente.
O que acontece se um PDF não for achatado antes de imprimir?
Se um PDF não for achatado, elementos interativos como campos de formulário e anotações podem não imprimir corretamente, resultando em erros ou informações faltando no documento impresso.
O IronPrint suporta achatar outros elementos PDF além de campos de formulário?
Sim, o IronPrint suporta achatar vários elementos PDF, incluindo anotações, imagens e outros conteúdos em camadas, garantindo que tudo seja impresso conforme planejado.
É possível automatizar o processo de achatamento em C#?
Certamente, usando o IronPrint, você pode automatizar o processo de achatamento configurando o PrintSettings no seu código C#, simplificando o fluxo de trabalho para o processamento em lote de PDFs.
O achatamento de PDFs pode impactar na qualidade da impressão?
Achatamento de PDFs geralmente melhora a qualidade da impressão garantindo que todos os elementos sejam renderizados e alinhados corretamente, reduzindo as chances de erros durante o processo de impressão.
Qual é o papel do booleano PrintSettings no achatamento de PDFs?
O booleano PrintSettings no IronPrint é um parâmetro chave que possibilita o achatamento de PDFs, garantindo que todas as camadas sejam mescladas em um único formato pronto para impressão.
O IronPrint requer algum software adicional para achatar PDFs?
Nenhum software adicional é necessário. O IronPrint é uma biblioteca autônoma que fornece todas as funcionalidades necessárias para achatar PDFs diretamente em suas aplicações C#.
Como o IronPrint garante compatibilidade com diferentes versões de PDF?
O IronPrint é projetado para ser compatível com várias versões de PDF, garantindo que o processo de achatamento mantenha a integridade e a formatação do documento original.

