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 IronPrint cuida do resto — sem a necessidade de uma biblioteca de manipulação de PDF separada ou salvar arquivos intermediários.
Este guia abrange quando e como achatar PDFs antes de imprimir PDF, 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 IronPrint via NuGet:
Install-Package IronPrint - Adicione
using IronPrint;ao arquivo - Crie um objeto
PrintSettings - Defina
Flattencomotrue - 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
- Instale a biblioteca de impressão IronPrint C#
- Crie um objeto `PrintSettings`
- Defina `Flatten` como `true`
- 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#?
Nós achatamos um PDF no momento da impressão configurando a propriedade Flatten como 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-basic.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
Primeiro instanciamos PrintSettings, que é inicializado com valores padrão — incluindo Flatten = false. Em seguida, configuramos Flatten como true, 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 Printer.Print, a impressora recebe uma versão completamente 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 em seu valor padrão de false 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/combined-settings.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
Usamos a sintaxe do inicializador de objeto para clareza. Flatten = true garante que todos os dados do formulário apareçam na página impressa. PaperSize.A4 e PaperOrientation.Portrait correspondem ao formato padrão para formulários comerciais. Dpi em 300 produz texto nítido em campos preenchidos que foram originalmente renderizados em resolução de tela. PaperMargins 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/async-flatten.cs
// ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
' ESTE TRECHO DE CÓDIGO NÃO ESTÁ DISPONÍVEL!
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 dos EUA. A palavra-chave await libera o thread chamador enquanto IronPrint processa a operação de achatamento e envia o trabalho de impressão.
Os métodos assíncronos de IronPrint — incluindo PrintAsync e ShowPrintDialogAsync — todos respeitam a configuração Flatten de forma idêntica aos seus equivalentes síncronos. 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?
Cobrimos como achatar PDFs antes de imprimir em C# usando a propriedade PrintSettings.Flatten de IronPrint. A principal conclusão: configure Flatten = true 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.

