Como comprimir PDFs em C# usando IronPDF
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.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
PdfDocument.FromFile("input.pdf").CompressAndSaveAs("compressed.pdf", 40); -
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 (3 etapas)
- Baixe a biblioteca C# para compressão de PDF do NuGet.
- Importe um PDF existente ou crie um novo PDF.
- Chame a
CompressAndSaveAs(outputPath, quality, removeStructureTree)para comprimir imagens, opcionalmente remover a árvore de estrutura e salvar — tudo em uma única etapa.
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)
Que resultados posso esperar da compressão de imagens?
Redução de 39,24% !
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)
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.
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)
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. Digitenullpara ignorar completamente a compressão de imagem. removeStructureTree(bool, padrãofalse): Quandotrue, 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)
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 primeiroHighQualitye recorre aFastMemoryse 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
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.

