Diferentes organizações usam arquivos PDF para troca segura e organizada de informações. No entanto, às vezes os arquivos PDF ficam enormes devido ao conteúdo incorporado, como imagens, vídeos, desenhos, etc. Você pode otimizar ou compactar facilmente esse tamanho de arquivo PDF sem comprometer a qualidade. Vamos explorar os seguintes cenários de compactação e otimização de tamanho de PDF que você pode incorporar em seus aplicativos Java:

Otimização de tamanho de PDF e API de compactação – Instalação

Você pode utilizar as rotinas eficientes e confiáveis da API Aspose.PDF for Java para otimizar ou compactar arquivos PDF de tamanho grande mantendo a mesma qualidade. Você pode baixar os arquivos JAR de Downloads ou com Maven configurations em seu projeto.

Otimize documentos PDF para a Web usando Java

O documento PDF pode ser otimizado quando você precisar usá-los em suas páginas da web. Essa otimização é útil para exibir a primeira página do documento PDF o mais rápido possível. Você pode ter o arquivo PDF otimizado seguindo as etapas abaixo:

  1. Arquivo PDF de código aberto
  2. Chame método de otimização para otimização de PDF
  3. Salve o arquivo PDF de saída

O snippet de código abaixo é um exemplo de como otimizar documentos PDF para a web em seu ambiente Java:

// Abrir documento
Document pdfDocument = new Document("Original.pdf");

// Otimizar para web
pdfDocument.optimize();

// Salvar documento de saída
pdfDocument.save("Optimized_output.pdf");

Comprima ou otimize o tamanho de PDF contendo imagens usando Java

Aqui estaremos discutindo principalmente os cenários em que os arquivos PDF contêm muitas imagens, portanto, são enormes em tamanho. Por exemplo, um arquivo PDF contendo desenhos para diferentes modelos de aviões e informações sobre cada peça, menor ou maior, incluídos como imagens ou fotos de todos os componentes. Além disso, muitos documentos profissionais podem conter imagens como artefatos principais do arquivo. Nesses cenários, podemos compactar os arquivos PDF com as seguintes abordagens:

Encolher, compactar e redimensionar todas as imagens usando Java

Você pode minimizar o tamanho do arquivo PDF contendo muitas imagens reduzindo, compactando e redimensionando as imagens. As melhorias de tamanho podem ser notadas porque a maior parte do tamanho do arquivo é coberto pelas imagens que agora pretendemos reduzir. Você precisa seguir as etapas abaixo para reduzir, compactar e redimensionar as fotos ou imagens em um arquivo PDF:

  1. Carregar arquivo PDF de entrada
  2. Inicialize o objeto OptimizationOptions
  3. Definir qualidade e resolução da imagem
  4. Chame o método optimizeResources
  5. Salve o documento PDF de saída

O trecho de código abaixo mostra como reduzir ou compactar imagens para reduzir e minimizar o tamanho do arquivo PDF usando Java:

// Carregar documento de entrada
Document doc = new Document(dataDir + "Test.pdf");

// Inicializar o objeto OptimizationOptions
OptimizationOptions opt = new OptimizationOptions();

// Ativar compactação de imagem
// Defina a qualidade e a resolução das imagens no arquivo PDF
opt.getImageCompressionOptions().setCompressImages(true);
opt.getImageCompressionOptions().setImageQuality(10);
opt.getImageCompressionOptions().setMaxResolution(150);
opt.getImageCompressionOptions().setResizeImages(true);
doc.optimizeResources(opt);

// Salve o arquivo atualizado
doc.save(dataDir + "compressingPDFWithImages_out.pdf");

Removendo fontes incorporadas, fluxos não utilizados e vinculando fluxos duplicados usando Java

Quando você precisa reduzir o tamanho do arquivo PDF, cada byte é importante. As fontes incorporadas podem ajudar a reduzir o tamanho do arquivo com diferentes abordagens. Por exemplo, você pode desincorporar todas as fontes ou manter apenas o subconjunto de caracteres de fonte que estão sendo usados no arquivo PDF. Seria uma desincorporação parcial de fontes que ainda ajudaria a minimizar o tamanho do arquivo. Além disso, você pode remover fluxos não utilizados ou vincular fluxos duplicados para economizar mais espaço. Essas otimizações de PDF reduzirão consideravelmente o tamanho do arquivo. Você precisa seguir as seguintes etapas para otimizar e reduzir o tamanho do arquivo PDF:

  1. Carregar documento PDF de entrada
  2. Inicialize o objeto de classe OptimizationOptions
  3. Desincorpore todas as fontes ou o subconjunto de fontes
  4. Vincular fluxos duplicados
  5. Remover streams não utilizados

O código a seguir explica como compactar arquivos PDF para otimizar, reduzir e minimizar o tamanho dos documentos PDF:

Document doc = new Document(dataDir + "Test.pdf");
OptimizationOptions opt = new OptimizationOptions();

// Qualquer
// Desincorpore todas as fontes em PDF
opt.setUnembedFonts(true);

//OU
// mantenha apenas fontes incorporadas para caracteres usados
opt.setSubsetFonts(true);

// vincular fluxos duplicados
opt.setLinkDuplcateStreams(false);

// Remover streams não utilizados
opt.setRemoveUnusedStreams(false);

// Remova objetos não utilizados
opt.setRemoveUnusedObjects(false);

doc.optimizeResources(opt);

// Salve o arquivo atualizado
doc.save(dataDir + "compressingPDF.pdf");

Até agora discutimos as abordagens de otimização principalmente para os arquivos PDF com imagens. Agora vamos prosseguir com mais algumas maneiras de otimização de PDF.

Comprimir ou reduzir o tamanho do documento PDF usando Java

Os arquivos PDF geralmente contêm anotações, campos de formulário editáveis e artefatos de cores que ocupam espaço coletivamente. Vamos explorar os seguintes procedimentos para compactar o tamanho do arquivo PDF.

Removendo ou achatando anotações para reduzir o tamanho com Java

Os arquivos PDF podem conter muitas anotações. Por exemplo, marca d’água, comentários, formas, etc. Você pode remover anotações se não forem mais necessárias ou engordar as anotações se não forem necessárias mais alterações. Siga as etapas abaixo para remover ou nivelar anotações para otimizar o tamanho do arquivo PDF:

  1. Documento PDF de código aberto
  2. Iterar em cada página
  3. Achatar ou excluir anotações
  4. Salve o documento PDF de saída

O trecho de código abaixo é um exemplo de como remover ou nivelar anotações em documentos PDF usando Java:

// Abrir documento
Document pdfDocument = new Document(dataDir + "OptimizeDocument.pdf");

// Iterar através de cada página e anotação
for (Page page : pdfDocument.getPages())
{
    for (Annotation annotation : page.getAnnotations())
    {
        // Ou achatar a anotação
        annotation.flatten();
        
        // OU exclua a anotação
        // page.getAnnotations().delete(annotation);        
    }
}
// Salvar documento PDF otimizado
pdfDocument.save(dataDir + "OptimizeDocument_out.pdf");

Removendo campos de formulário para minimizar o tamanho do arquivo PDF com Java

Formulários PDF preenchíveis são comuns quando você precisa enviar dados em grande escala. Após o envio dos dados, os campos de formulário preenchíveis podem ser removidos para otimizar e minimizar o tamanho do arquivo PDF. Você precisa seguir as etapas abaixo para remover campos de formulário:

  1. Carregar documento PDF de entrada
  2. Verifique os campos de formulário no documento PDF
  3. Iterar através de cada campo e achatá-lo
  4. Salve o arquivo PDF compactado atualizado
// Carregar formulário PDF de origem
Document doc = new Document(dataDir + "input.pdf");

// Nivelar campos de formulário
if (doc.getForm().getFields().length > 0)
{
    for (Field item : doc.getForm().getFields())
    {
        item.flatten();
    }
}

dataDir = dataDir + "FlattenForms_out.pdf";
// Salve o documento atualizado
doc.save(dataDir);

Converter espaço de cores RGB em escala de cinza para compactação e otimização de PDF usando Java

A maioria dos arquivos PDF contém conteúdo textual que também pode ser bem representado no espaço de cores em tons de cinza. Além disso, quando o objetivo e a prioridade é salvar cada byte, até mesmo as imagens podem ser convertidas em escala de cinza porque o foco está no arquivamento dos dados. Você pode seguir as etapas abaixo para compactar e otimizar o tamanho do arquivo PDF convertendo o espaço de cores RGB em escala de cinza:

  1. Acesse o documento PDF de origem
  2. Inicialize a instância RgbToDeviceGrayConversionStrategy
  3. Converter o espaço de cores de cada cor para escala de cinza
  4. Salvar arquivo PDF otimizado de saída

O trecho de código a seguir mostra como compactar e otimizar o tamanho do PDF alterando o espaço de cores no ambiente Java:

// Carregar documento PDF de entrada
Document document = new Document("input.pdf");

// Inicialize a instância RgbToDeviceGrayConversionStrategy
RgbToDeviceGrayConversionStrategy strategy = new RgbToDeviceGrayConversionStrategy();
for (int idxPage = 1; idxPage <= document.getPages().size(); idxPage++) {
	Page page = document.getPages().get_Item(idxPage);
        
        // Converter o espaço de cores de cada página para escala de cinza
	strategy.convert(page);
}
// Salvar documento PDF de saída
document.save("output.pdf");

Conclusão

Neste artigo, abordamos diferentes maneiras e abordagens para otimizar e compactar arquivos PDF para tamanho reduzido. Em primeiro lugar, otimizamos o tamanho do arquivo PDF para a web usando Java. Em seguida, aprendemos a reduzir, compactar e redimensionar imagens em um arquivo PDF contendo várias imagens. Além disso, também exploramos o trabalho com fontes, fluxos, anotações, campos de formulário, bem como a conversão do espaço de cores do documento PDF em escala de cinza, para que um arquivo PDF com tamanho menor, mas com a mesma qualidade, possa ser criado usando Java. Além disso, em caso de qualquer dúvida relacionada a este tópico, você pode nos contatar via Free Support Forum.

Veja também

Informação: Usando um novo aplicativo da web online da Aspose, você pode transformar um conjunto de imagens em um vídeo. Você também pode conferir outro serviço, que extrai os sons de vídeos.