Como Achatar PDFs Antes de Imprimir em C#

This article was translated from English: Does it need improvement?
Translated
View the article in English

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, 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

  1. Instale IronPrint via NuGet: Install-Package IronPrint
  2. Adicione using IronPrint; ao arquivo
  3. Crie um objeto PrintSettings
  4. Defina Flatten como true
  5. Passe as configurações para Printer.Print() ou Printer.PrintAsync()
  1. Instale IronPrint com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPrint
  2. 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
    });
  3. Implante para testar em seu ambiente de produção.

    Comece a usar IronPrint em seu projeto hoje com uma avaliação gratuita

    arrow pointer

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!
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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!
$vbLabelText   $csharpLabel

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:

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.

Curtis Chau
Redator Técnico

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 ...

Leia mais
Pronto para começar?
Nuget Downloads 38,093 | Versão: 2026.3 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPrint
executar um exemplo Veja seu documento chegar à impressora.