Como compactar PDFs em C#

Como comprimir PDFs em C# usando IronPDF

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

O IronPDF oferece recursos avançados de compressão de PDF em C# que reduzem o tamanho dos arquivos comprimindo imagens incorporadas e otimizando as estruturas de árvore do PDF, tornando os documentos mais fáceis de gerenciar para armazenamento e compartilhamento, mantendo a qualidade.

A compressão de PDF reduz o tamanho dos arquivos de documentos PDF, tornando mais fácil comprimir PDF para armazenar, compartilhar e transmitir. Quer você esteja trabalhando com PDFs gerados a partir de HTML ou com arquivos PDF existentes , a compressão é essencial para otimizar o manuseio do documento.

Normalmente, as imagens ocupam a maior parte do tamanho dos arquivos PDF. O IronPDF oferece recursos de compressão que reduzem o tamanho das imagens incorporadas e otimizam a estrutura em árvore frequentemente encontrada em PDFs com muitas tabelas. Essas técnicas funcionam perfeitamente com PDFs criados por diversos métodos, incluindo conversões de URL para PDF e conversões de arquivos HTML .

Início rápido: Comprima arquivos PDF com o IronPDF

Reduza o tamanho dos arquivos PDF usando as ferramentas de compressão do IronPDF. Carregue seu PDF com PdfDocument.FromFile e chame CompressAndSaveAs para compactar e salvar seu PDF otimizado em uma única etapa. Esse processo garante uma redução significativa no tamanho do arquivo, mantendo a qualidade.

  1. Instale IronPDF com o Gerenciador de Pacotes NuGet

    PM > Install-Package IronPdf
  2. Copie e execute este trecho de código.

    PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);
  3. Implante para testar em seu ambiente de produção.

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

    arrow pointer


ObserveMétodos anteriores de compressão, como CompressImages, CompressStructTree e Compress(CompressionOptions), estão obsoletos.

Como comprimir imagens em PDFs?

Para comprimir PDF com eficiência, a qualidade da compressão JPEG aceita valores de 0 (compressão máxima) a 100 (perda mínima), sendo que o mecanismo subjacente determina como o valor é aplicado. Compreender esses níveis ajuda ao trabalhar com PDFs que contêm imagens incorporadas ou quando você precisa gerenciar fontes e gráficos .

  • 90% ou mais: alta qualidade
  • 80%-90%: qualidade média
  • 70%-80%: baixa qualidade

Experimente com diferentes valores para equilibrar qualidade e tamanho do arquivo. A redução da qualidade varia de acordo com o tipo de imagem de entrada — algumas imagens apresentam perda de nitidez mais perceptível do que outras. Isso é particularmente importante ao trabalhar com imagens do Armazenamento de Blobs do Azure ou ao criar PDFs com marcas d'água personalizadas .

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-image.cs
using IronPdf;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");

// Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40);
Imports IronPdf

Dim renderer As New ChromePdfRenderer()

Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")

' Compress images in the PDF
pdf.CompressAndSaveAs("compressed.pdf", 40)
$vbLabelText   $csharpLabel

Que resultados posso esperar da compressão de imagens?

Redução de 39,24% !

Comparação de arquivos mostrando compressed.pdf (449 KB) versus nonCompress.pdf (739 KB), demonstrando os resultados da compressão de imagem.

Como funciona o parâmetro de qualidade?

O parâmetro quality em CompressAndSaveAs controla a qualidade da codificação JPEG aplicada a cada imagem incorporada. Insira um número inteiro de 0 (compressão máxima, qualidade mais baixa) a 100 (compressão mínima, qualidade mais alta), ou null para ignorar completamente a compressão da imagem.

O IronPDF recodifica e redimensiona automaticamente as imagens durante a compressão, portanto, nenhuma opção adicional é necessária. Valores mais baixos produzem arquivos menores, mas podem introduzir artefatos visíveis — experimente para encontrar o equilíbrio certo para o seu conteúdo.


Como faço para comprimir a estrutura em árvore de um PDF?

Este recurso reduz o tamanho do PDF removendo a estrutura em árvore criada pelo mecanismo do Chrome. Passe removeStructureTree: true como o terceiro parâmetro de CompressAndSaveAs para ativá-lo. É mais eficaz com PDFs gerados pelo mecanismo do Chrome que contenham dados tabulares extensos. Alguns mecanismos de renderização geram PDFs sem essa estrutura, tornando o recurso ineficaz nesses casos. Essa técnica é valiosa ao trabalhar com layouts complexos ou ao mesclar vários PDFs com elementos estruturais redundantes.

A remoção da estrutura em árvore pode afetar o realce do texto e a eficácia da extração. Leve em consideração essa compensação ao aplicar a compressão, especialmente se os usuários precisarem extrair texto e imagens de PDFs comprimidos.

Test CompressAndSaveAs with tree structure removal using this PDF with table data.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-tree-structure.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("table.pdf");

// Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", null, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("table.pdf")

' Compress tree structure in PDF
pdf.CompressAndSaveAs("compressedTable.pdf", Nothing, True)
$vbLabelText   $csharpLabel

Que redução no tamanho do arquivo a compressão de estrutura em árvore pode alcançar?

Redução de 67,90% ! Essa porcentagem aumenta com PDFs de tabelas maiores.

Comparação de arquivos mostrando compressedTable.pdf (52 KB) versus table.pdf (162 KB), demonstrando os resultados da compressão.

Como posso aplicar os dois métodos de compressão simultaneamente?

CompressAndSaveAs lida com a compressão de imagem e estrutura de árvore em uma única chamada — passe um valor quality e defina removeStructureTree como true. Essa abordagem combinada é particularmente eficaz para PDFs complexos que contêm imagens e dados estruturados, como relatórios com gráficos ou documentos com tabelas e imagens incorporadas.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-compress.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, true);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Configure compression with automatic optimization
pdf.CompressAndSaveAs("compressed.pdf", 80, True)
$vbLabelText   $csharpLabel

Quais parâmetros o CompressAndSaveAs aceita?

  • outputPath (string): O caminho do arquivo onde o PDF compactado será salvo.

  • quality (int?, 0–100): Qualidade JPEG aplicada a todas as imagens incorporadas. Valores mais baixos geram arquivos menores. Digite null para ignorar completamente a compressão de imagem.

  • removeStructureTree (bool, padrão false): Quando true, remove a árvore de estrutura do PDF para reduzir ainda mais o tamanho do arquivo. Mais eficaz para PDFs gerados em HTML com tabelas.

Ao aplicar a compressão, leve em consideração seu caso de uso. Para fins de arquivamento, a qualidade pode ser priorizada em detrimento do tamanho do arquivo. A distribuição na web pode exigir arquivos menores. Ajuste as configurações de acordo com o tipo de documento que você está trabalhando : documentos compatíveis com PDF/A ou PDFs padrão.

Como faço para compactar PDFs sem salvá-los no disco?

Em muitos cenários do mundo real, como respostas de API, funções na nuvem ou anexos de e-mail, gravar um PDF compactado em disco é desnecessário ou impraticável.

CompressPdfToBytes retorna o PDF compactado como uma matriz de bytes, dando a você controle total sobre como a saída é armazenada ou transmitida. Tanto CompressPdfToBytes quanto CompressPdfToStream aceitam um parâmetro opcional CompressionMode que controla como a compressão é realizada.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-bytes.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as byte array
byte[] compressedBytes = pdf.CompressPdfToBytes();

File.WriteAllBytes("compressed.pdf", compressedBytes);
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as byte array
Dim compressedBytes As Byte() = pdf.CompressPdfToBytes()

File.WriteAllBytes("compressed.pdf", compressedBytes)
$vbLabelText   $csharpLabel

Quais opções de modo de compressão estão disponíveis?

Diferentes ambientes de implantação apresentam diferentes restrições em relação ao acesso ao disco e ao desempenho. A enumeração CompressionMode permite que você escolha o equilíbrio certo.

  • Automatic (padrão): Seleciona o método de compressão ideal com base nas capacidades do sistema. Tenta primeiro HighQuality e recorre a FastMemory se o acesso ao disco for restrito.

  • FastMemory: Realiza a compressão inteiramente na memória, sem E/S de disco. É a opção mais rápida, mas não aplica reamostragem ou subamostragem da imagem, resultando em arquivos de saída maiores.

  • HighQuality: Aplica compressão máxima usando acesso temporário ao disco. Produz os menores arquivos de saída com otimização completa da imagem. Requer permissões de escrita no diretório temporário do sistema.

Se você precisar de um Stream em vez de uma matriz de bytes, use CompressPdfToStream. Isso é útil ao direcionar dados diretamente para uma resposta HTTP, upload para armazenamento em nuvem ou qualquer fluxo de trabalho baseado em streaming.

:path=/static-assets/pdf/content-code-examples/how-to/pdf-compression-to-stream.cs
using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("sample.pdf");

// Compress and return as Stream
using var compressedStream = pdf.CompressPdfToStream();

File.WriteAllBytes("compressed.pdf", compressedStream.ToArray());
Imports IronPdf

Dim pdf As PdfDocument = PdfDocument.FromFile("sample.pdf")

' Compress and return as Stream
Using compressedStream = pdf.CompressPdfToStream()
    File.WriteAllBytes("compressed.pdf", compressedStream.ToArray())
End Using
$vbLabelText   $csharpLabel

CompressPdfToBytes e CompressPdfToStream agora estão disponíveis em todas as plataformas IronPDF , incluindo Java, Node.js e Python.

Pronto para ver o que mais você pode fazer? Confira nossa página de tutoriais aqui: Recursos adicionais

Perguntas frequentes

Qual a redução máxima possível no tamanho de um arquivo PDF com a compressão?

O IronPDF pode reduzir o tamanho de arquivos PDF em até 75% por meio de compressão de imagem e otimização de estrutura. No exemplo mostrado, um arquivo foi reduzido em 39,24% usando técnicas de compressão de imagem.

Como o IronPDF comprime PDFs em C#?

O IronPDF lida com a compressão através de um único método — CompressAndSaveAs . Ele reduz o tamanho das imagens incorporadas usando uma qualidade JPEG configurável (0–100) e pode opcionalmente remover a árvore de estrutura interna do PDF definindo removeStructureTree: true , o que é especialmente eficaz para documentos com muitas tabelas.

Quais níveis de qualidade devo usar para a compressão JPEG em PDFs?

O IronPDF suporta compressão JPEG com qualidade de 1% a 100%. Os níveis recomendados são: 90% ou mais para alta qualidade, 80% a 90% para qualidade média e 70% a 80% para baixa qualidade. A configuração ideal depende do equilíbrio entre o tamanho do arquivo e os requisitos de qualidade visual.

Posso comprimir um PDF com apenas uma linha de código?

Sim, o IronPDF permite a compressão de PDFs com uma única linha de código: `PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40);` Isso carrega um PDF, comprime as imagens com 40% de qualidade e salva o resultado.

A compressão funciona com PDFs criados a partir de HTML?

Sim, os recursos de compressão do IronPDF funcionam perfeitamente com PDFs criados por diversos métodos, incluindo conversões de string HTML para PDF, conversões de URL para PDF e conversões de arquivos HTML, bem como com arquivos PDF já existentes.

Que tipos de conteúdo se beneficiam mais da compressão de PDF?

As imagens geralmente ocupam a maior parte do tamanho dos arquivos PDF, tornando os documentos com muitas imagens candidatos ideais para compressão. Além disso, PDFs com estruturas de tabelas complexas se beneficiam do recurso de compressão em árvore de estrutura do IronPDF.

Posso compactar um PDF sem salvá-lo no disco?

Sim, o IronPDF oferece os métodos CompressPdfToBytes e CompressPdfToStream , que retornam o PDF compactado como uma matriz de bytes ou um fluxo (Stream), respectivamente. Ambos aceitam um parâmetro opcional CompressionMode com opções para compressão Automática, FastMemory ou HighQuality.

A compressão de PDF está disponível em outras linguagens além de C#?

Sim, CompressPdfToBytes e CompressPdfToStream agora estão disponíveis em todas as plataformas IronPDF , incluindo Java, Node.js e Python.

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
Analisado por
Jeff Fritz
Jeffrey T. Fritz
Gerente de Programa Principal - Equipe da Comunidade .NET
Jeff também é Gerente de Programa Principal das equipes do .NET e do Visual Studio. Ele é o produtor executivo da série de conferências virtuais .NET Conf e apresenta o "Fritz and Friends", uma transmissão ao vivo para desenvolvedores que vai ao ar duas vezes por semana, onde ele conversa sobre tecnologia e escreve código junto com os espectadores. Jeff cria workshops, apresentações e planeja conteúdo para os maiores eventos de desenvolvedores da Microsoft, incluindo o Microsoft Build, o Microsoft Ignite, a .NET Conf e o Microsoft MVP Summit.
Pronto para começar?
Nuget Downloads 18,318,263 | Versão: 2026.4 acaba de ser lançado
Still Scrolling Icon

Ainda está rolando a tela?

Quer provas rápidas? PM > Install-Package IronPdf
executar um exemplo Veja seu HTML se transformar em um PDF.