Java ZIP para PDF

Arquivos ZIP são comumente usados para compactar e empacotar vários arquivos em um único arquivo. A conversão desses arquivos para o formato PDF pode ser útil para diversos fins, como criação de relatórios, arquivamento de documentos ou compartilhamento de informações em um formato padronizado. Neste tutorial, exploraremos como converter um arquivo ZIP em um documento PDF usando Java.

Por que converter ZIP para PDF?

Pode ser necessário converter arquivos ZIP para o formato PDF para diferentes casos de uso. Aqui estamos discutindo alguns motivos para a conversão:

Geração de Relatórios: Gere relatórios em PDF extraindo dados de arquivos ZIP e apresentando-os em um documento formatado.

Arquivamento de documentos: converta vários documentos ou arquivos armazenados em um arquivo ZIP em um único PDF para fácil arquivamento e recuperação.

Padronização de documentos: Converta diversos formatos de arquivo dentro de um arquivo ZIP em um formato PDF uniforme para facilitar o compartilhamento e a visualização.

Conversor ZIP para PDF - Configuração do ambiente Java

Você deve configurar o ambiente de desenvolvimento, executar o código Java e incorporar o recurso em seu sistema.

  • Certifique-se de que o Java Development Kit (JDK) esteja instalado em seu sistema.
  • Certifique-se de ter um ambiente de desenvolvimento integrado (IDE), como IntelliJ IDEA, Apache NetBeans para desenvolvimento Java.
  • Além disso, baixe o arquivo JAR de Conholdate.Total for Java ou use as seguintes configurações do Maven:
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.2</version>
<type>pom</type>
</dependency>

Converter ZIP em PDF em Java

As etapas abaixo demonstram como converter ZIP em PDF em Java:

  • Inicialize um objeto ZipInputStream usando o arquivo ZIP de entrada.
  • Especifique o diretório de saída onde os arquivos extraídos serão salvos.
  • Itere cada arquivo no arquivo ZIP de entrada e extraia-o para o diretório de saída.
  • Mantenha uma lista temporária para armazenar os nomes dos arquivos extraídos da pasta descompactada.
  • Obtenha a lista de todos os arquivos (incluindo seus caminhos completos) da pasta descompactada.
  • Itere cada arquivo extraído e converta-o para o formato PDF.
  • Mesclar os arquivos PDF convertidos.
  • Crie uma instância da classe Merger com o primeiro documento PDF de entrada da lista temporária.
  • Percorra a lista de documentos PDF convertidos, começando pelo segundo arquivo.
  • Invoque o método save da instância da classe Merger para salvar o documento PDF mesclado.

O código de exemplo a seguir mostra como converter ZIP em PDF em Java:

// Formatos de arquivo suportados: https://docs.groupdocs.com/conversion/java/supported-document-formats/
// Funciona com OpenJDK 17

package com.mycompany.asposejavatest;

import java.io.*;
import java.util.ArrayList;
import org.apache.commons.compress.archivers.*;
import org.apache.commons.compress.compressors.*;
import com.groupdocs.conversion.*;
import com.groupdocs.conversion.Converter;
import com.groupdocs.conversion.options.convert.PdfConvertOptions;
import com.groupdocs.conversion.contracts.PossibleConversions;
import com.groupdocs.conversion.options.convert.ConvertOptions;
import com.groupdocs.merger.*;
import com.groupdocs.merger.Merger;

public class AsposeJavaTest {

    public static void main(String[] args) {

        try {
            InputStream inputfile = new BufferedInputStream(new FileInputStream("input.zip"));

            // Para os formatos que são arquivados e compactados separadamente. Como tar.gz tar.bz tar.xz Usar
            // CompressorInputStream e depois use ArchiveInputStream para carregar o arquivo de entrada.
            //CompressorInputStream cis = new CompressorStreamFactory().createCompressorInputStream(inputfile);
            //ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream(cis);

            // Para formatos que possuem suporte integrado para compactação. Como Zip RAR JAR 7zip
            // ArchiveInputStream para carregar o arquivo de entrada sem CompressorInputStream
            //ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream(inputfile);

            ArchiveEntry entry = ais.getNextEntry();

            File outputDir = new File("/tmp/output");
            if (!outputDir.exists()) {
                outputDir.mkdirs();
            }

            while (entry != null) {
                String filePath = outputDir.getAbsolutePath() + File.separator + entry.getName();
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(filePath));
                byte[] bytesIn = new byte[1024];
                int read;

                while ((read = ais.read(bytesIn)) != -1) {
                    bos.write(bytesIn, 0, read);
                }

                ais.close();
                bos.close();
                entry = ais.getNextEntry();
            }

            // Lista temporária para conter nomes de arquivos extraídos da pasta descompactada
            ArrayList<String> filesList = new ArrayList<>();

            // Obtenha a lista de todos os arquivos (com caminhos completos) da pasta descompactada
            File[] files = outputDir.listFiles();

            // Percorra cada arquivo descompactado e converta cada arquivo em PDF
           for (File file : files) {
                // Carregue o arquivo extraído
                Converter converter = new Converter(file.getAbsolutePath());
                // Defina as opções de conversão para formato PDF				
                PdfConvertOptions convertOptions = new PdfConvertOptions();                
                // Converter para formato PDF
                String outPath = outputDir.getAbsolutePath() + File.separator + file.getName()+ ".pdf";
                converter.convert(outPath, convertOptions);
                // Adicione os nomes dos arquivos à lista temporária após converter para PDF
                filesList.add(outPath);
            }

            // Mesclar arquivos PDF usando API GroupDocs.Merger
            // Instancie a fusão com o primeiro documento PDF de entrada na lista temporária
            Merger merger = new Merger(filesList.get(0));

            // Percorrer a lista de documentos PDF convertidos a partir do segundo arquivo
           for (int i = 1; i < filesList.size(); i++) {
                // Chame o método Join da instância da classe Merger e passe os arquivos de origem restantes, um por um
                merger.join(filesList.get(i));
            }

            // Chame o método Save da instância da classe Merger para salvar o documento PDF mesclado
            merger.save("/tmp/output.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Licença de avaliação gratuita

Você pode converter arquivos ZIP para o formato PDF e testar outros recursos da API em sua capacidade total solicitando uma licença temporária gratuita.

Empacotando

Este artigo resume a conversão de um arquivo ZIP em PDF em Java. Envolve extrair os arquivos do arquivo ZIP, convertê-los para o formato PDF e depois mesclá-los em um único documento PDF. Além disso, este processo pode ser ainda mais automatizado e personalizado com base nas suas necessidades específicas. Em caso de qualquer ambigüidade, sinta-se à vontade para nos contatar em fórum.

Perguntas frequentes

Posso personalizar os documentos PDF gerados a partir de arquivos ZIP?

Sim, você pode personalizar os documentos PDF gerados a partir de arquivos ZIP. Você pode aplicar diferentes manipulações, como definir fontes, cores, layouts e outros elementos de estilo para aprimorar a apresentação visual de seus documentos PDF. Você também pode adicionar cabeçalhos, rodapés, marcas d’água e anotações conforme suas necessidades.

Posso converter arquivos específicos de um arquivo ZIP para PDF em vez de converter todos os arquivos?

Sim, você pode converter arquivos específicos de um arquivo ZIP em PDF modificando seu código Java de acordo. Você pode extrair arquivos específicos com base em seus nomes, extensões ou outros critérios e depois converter apenas os arquivos extraídos para o formato PDF. Isso permite conversão seletiva e personalização com base em seus requisitos.

Existe uma maneira de proteger com senha o documento PDF resultante durante a conversão?

Sim, você pode proteger com senha o documento PDF resultante, pois os recursos suportados incluem criptografia de PDF, configuração de senhas, permissões e níveis de criptografia para documentos PDF.

Veja também