Java ZIP a PDF

Los archivos ZIP se utilizan comúnmente para comprimir y empaquetar varios archivos en un solo archivo. Convertir estos archivos al formato PDF puede resultar útil para diversos fines, como crear informes, archivar documentos o compartir información en un formato estandarizado. En este tutorial, exploraremos cómo convertir un archivo ZIP en un documento PDF usando Java.

¿Por qué convertir ZIP a PDF?

Es posible que necesites convertir archivos ZIP a formato PDF para diferentes casos de uso. Aquí estamos discutiendo algunas razones para la conversión:

Generación de informes: genere informes en PDF extrayendo datos de archivos ZIP y presentándolos en un documento formateado.

Archivado de documentos: convierta varios documentos o archivos almacenados en un archivo ZIP en un único PDF para archivarlos y recuperarlos fácilmente.

Estandarización de documentos: convierta diversos formatos de archivos dentro de un archivo ZIP a un formato PDF uniforme para compartirlos y verlos más fácilmente.

Convertidor de ZIP a PDF - Configuración del entorno Java

Debe configurar el entorno de desarrollo, ejecutar el código Java e integrar la función en su sistema.

  • Asegúrese de que el kit de desarrollo de Java (JDK) esté instalado en su sistema.
  • Asegúrese de tener un entorno de desarrollo integrado (IDE), como IntelliJ IDEA, Apache NetBeans para el desarrollo de Java.
  • Además, descargue el archivo JAR de Conholdate.Total para Java o utilice las siguientes configuraciones de Maven:
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.2</version>
<type>pom</type>
</dependency>

Convertir ZIP a PDF en Java

Los pasos a continuación demuestran cómo convertir ZIP a PDF en Java:

  • Inicialice un objeto ZipInputStream utilizando el archivo ZIP de entrada.
  • Especifique el directorio de salida donde se guardarán los archivos extraídos.
  • Repita cada archivo en el archivo ZIP de entrada y extráigalo al directorio de salida.
  • Mantenga una lista temporal para almacenar los nombres de los archivos extraídos de la carpeta descomprimida.
  • Obtenga la lista de todos los archivos (incluidas sus rutas completas) de la carpeta descomprimida.
  • Repita cada archivo extraído y conviértalo a formato PDF.
  • Fusiona los archivos PDF convertidos.
  • Cree una instancia de la clase Merger con el primer documento PDF de entrada de la lista temporal.
  • Repita la lista de documentos PDF convertidos, comenzando desde el segundo archivo.
  • Invoque el método save de la instancia de la clase Merger para guardar el documento PDF combinado.

El siguiente código de muestra muestra cómo convertir ZIP a PDF en Java:

// Formatos de archivo admitidos: https://docs.groupdocs.com/conversion/java/supported-document-formats/
// Funciona con 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 aquellos formatos que se archivan y comprimen por separado. Como tar.gz tar.bz tar.xz Usar
            // CompressorInputStream y luego use ArchiveInputStream para cargar el archivo de entrada.
            //CompressorInputStream cis = nuevo CompressorStreamFactory().createCompressorInputStream(inputfile);
            //ArchiveInputStream ais = new ArchiveStreamFactory().createArchiveInputStream(cis);

            // Para formatos que tienen soporte integrado para compresión. Me gusta Zip RAR JAR 7zip
            // ArchiveInputStream para cargar el archivo de entrada sin 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 temporal para contener nombres de archivos extraídos de la carpeta descomprimida
            ArrayList<String> filesList = new ArrayList<>();

            // Obtenga la lista de todos los archivos (con rutas completas) de la carpeta descomprimida
            File[] files = outputDir.listFiles();

            // Recorra cada archivo descomprimido y convierta cada archivo a PDF
           for (File file : files) {
                // Cargar el archivo extraído
                Converter converter = new Converter(file.getAbsolutePath());
                // Establecer las opciones de conversión para formato PDF				
                PdfConvertOptions convertOptions = new PdfConvertOptions();                
                // Convertir a formato PDF
                String outPath = outputDir.getAbsolutePath() + File.separator + file.getName()+ ".pdf";
                converter.convert(outPath, convertOptions);
                // Agregue los nombres de los archivos a la lista temporal después de convertirlos a PDF
                filesList.add(outPath);
            }

            // Fusionar archivos PDF usando la API GroupDocs.Merger
            // Crear una instancia de fusión con el primer documento PDF ingresado en la lista temporal
            Merger merger = new Merger(filesList.get(0));

            // Recorre la lista de documentos PDF convertidos a partir del segundo archivo
           for (int i = 1; i < filesList.size(); i++) {
                // Llame al método Join de la instancia de la clase Merger y pase los archivos fuente restantes uno por uno
                merger.join(filesList.get(i));
            }

            // Llame al método Save de la instancia de la clase Merger para guardar el documento PDF combinado
            merger.save("/tmp/output.pdf");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Licencia de evaluación gratuita

Puede convertir archivos ZIP a formato PDF y probar otras funciones de API a su máxima capacidad solicitando una licencia temporal gratuita.

Terminando

Este artículo resume la conversión de un archivo ZIP a PDF en Java. Implica extraer los archivos del archivo ZIP, convertirlos a formato PDF y luego fusionarlos en un solo documento PDF. Además, este proceso puede automatizarse y personalizarse aún más en función de sus requisitos específicos. En caso de cualquier ambigüedad, no dude en contactarnos en foro.

Preguntas frecuentes

¿Puedo personalizar los documentos PDF generados a partir de archivos ZIP?

Sí, puedes personalizar los documentos PDF generados a partir de archivos ZIP. Puede aplicar diferentes manipulaciones, como configurar fuentes, colores, diseños y otros elementos de estilo para mejorar la presentación visual de sus documentos PDF. También puede agregar encabezados, pies de página, marcas de agua y anotaciones según sus requisitos.

¿Puedo convertir archivos específicos dentro de un archivo ZIP a PDF en lugar de convertir todos los archivos?

Sí, puedes convertir archivos específicos dentro de un archivo ZIP a PDF modificando tu código Java en consecuencia. Puede extraer archivos específicos según sus nombres, extensiones u otros criterios y luego convertir solo esos archivos extraídos al formato PDF. Esto permite una conversión y personalización selectivas según sus requisitos.

¿Existe alguna forma de proteger con contraseña el documento PDF resultante durante la conversión?

Sí, puede proteger con contraseña el documento PDF resultante, ya que las funciones admitidas incluyen cifrado de PDF, configuración de contraseñas, permisos y niveles de cifrado para documentos PDF.

Ver también