API Java gratuita para convertir documentos Word de alta calidad a PDF

Una biblioteca líder de código abierto permite a los desarrolladores Java convertir archivos MS Office DOCX, XLSX y PDF con alta precisión usando aplicaciones nativas.

¿Qué es Documents4j?

documents4j es una potente biblioteca Java de código abierto diseñada para convertir documentos entre diferentes formatos, como DOCX a PDF o XLSX a PDF. A diferencia de muchas bibliotecas tradicionales, documents4j delega el proceso de conversión a aplicaciones nativas como Microsoft Word y Excel, garantizando una salida de alta calidad con problemas de formato mínimos. La biblioteca adopta un enfoque diferente. En lugar de reimplementar la lógica de conversión, actúa como un puente, delegando el trabajo pesado a aplicaciones nativas (como Microsoft Word o Excel) que ya comprenden perfectamente estos formatos. Esto asegura que el documento de salida —como un PDF generado a partir de un archivo Word— se vea exactamente como lo haría si hubieras hecho clic en \"Guardar como\" manualmente en MS Office.

El valor principal de documents4j reside en su precisión. Para empresas que requieren documentación de nivel profesional donde cada margen y fuente deben permanecer intactos, confiar en analizadores de código abierto puede ser arriesgado. documents4j es particularmente útil para generar facturas o informes a partir de plantillas, automatizar flujos de trabajo de documentos en un entorno basado en Windows y desacoplar la lógica de conversión de su aplicación principal mediante una configuración de servidor remoto. Al aprovechar aplicaciones nativas, garantiza una precisión inigualable en comparación con bibliotecas tradicionales. Su soporte para procesamiento local y remoto, ejecución concurrente y balanceo de carga lo hace altamente adecuado para sistemas de nivel empresarial.

Previous Next

Comenzando con documents4j

La forma recomendada de instalar documents4j es a través del repositorio Maven. Puedes integrar fácilmente la biblioteca documents4j directamente en tus proyectos Maven con configuraciones simples.

Repositorio Maven para documents4j


// Here’s a commonly used dependency (Local converter): 

<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-local</artifactId>
<version>1.1.13</version>
</dependency>

//If you only need the API:
<dependency>
<groupId>com.documents4j</groupId>
<artifactId>documents4j-api</artifactId>
<version>1.1.13</version>
</dependency>

Instalar documents4j desde GitHub


git clone https://github.com/documents4j/documents4j.git
cd documents4j
cd documents4j-local-demo
mvn jetty:run

Convertir Word a PDF mediante Biblioteca Java

En el corazón de documents4j se encuentra una API fluida elegantemente diseñada que hace que la conversión de documentos sea natural y legible. La interfaz IConverter proporciona una cadena estilo builder que le permite especificar el archivo o flujo de origen, declarar los tipos de documento de entrada y salida, establecer una prioridad de conversión y elegir entre ejecución síncrona o asíncrona, todo en una expresión clara. La API oculta cada detalle de implementación, de modo que su lógica de negocio nunca necesita saber si se está ejecutando un conversor local o remoto en segundo plano. Aquí hay un ejemplo simple que muestra cómo lograr el proceso de conversión.

¿Cómo convertir Word a PDF mediante Biblioteca Java?

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;

import java.io.File;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

public class DocumentConverter {
    public static void main(String[] args) {
        // 1. Specify the source and target files
        File wordFile = new File("C:/documents/input.docx");
        File targetFile = new File("C:/documents/output.pdf");

        // 2. Initialize the converter (Local instance)
        IConverter converter = LocalConverter.builder()
                .workerPool(20, 25, 2, TimeUnit.SECONDS)
                .processTimeout(5, TimeUnit.SECONDS)
                .build();

        // 3. Execute the conversion fluently
        boolean success = converter.convert(wordFile).as(DocumentType.MS_WORD)
                                   .to(targetFile).as(DocumentType.PDF)
                                   .execute();

        if (success) {
            System.out.println("Conversion completed successfully!");
        }

        // 4. Always shut down the converter to release native resources
        converter.shutDown();
    }
}

Convertidor remoto con servidor API REST

No todos los servidores de aplicaciones Java tienen MS Office instalado — y tampoco deberían. documents4j resuelve esto con una arquitectura de Convertidor Remoto incorporada. Un servidor de conversión independiente (que internamente usa un LocalConverter) se ejecuta en una máquina Windows separada con MS Office instalado y expone una API REST. Su aplicación Java utiliza un RemoteConverter que envía documentos a través de HTTP y recibe el archivo convertido de vuelta. Todo el proceso de enlace es invisible para el código de la aplicación; la misma interfaz IConverter se usa en ambos lados.

¿Cómo realizar la conversión remota de documentos Word dentro de aplicaciones Java?

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.RemoteConverter;

import java.io.*;
import java.util.concurrent.TimeUnit;

public class RemoteConverterExample {

    public static void main(String[] args) throws Exception {

        // The RemoteConverter connects to the standalone server
        IConverter converter = RemoteConverter.builder()
                .baseFolder(new File("/tmp/documents4j"))
                .workerPool(10, 20, 5, TimeUnit.SECONDS)
                // Timeout for each HTTP conversion request
                .requestTimeout(30, TimeUnit.SECONDS)
                // URI of the running conversion server
                .baseUri("http://192.168.1.100:9998")
                .build();

        // Convert using InputStream / OutputStream — recommended for RemoteConverter
        // because data is already serialized for HTTP transport
        try (InputStream source = new FileInputStream("/input/contract.docx");
             OutputStream target = new FileOutputStream("/output/contract.pdf")) {

            boolean success = converter
                    .convert(source).as(DocumentType.MS_WORD)
                    .to(target).as(DocumentType.PDF)
                    .execute();

            System.out.println("Remote conversion success: " + success);
        }

        converter.shutDown();
    }
}          

Cifrado SSL y autenticación básica

En entornos de producción, los archivos de documentos suelen contener datos empresariales, legales o personales sensibles. Transmitirlos mediante HTTP sin cifrar es un riesgo de seguridad serio. La biblioteca documents4j aborda esto con soporte incorporado para el cifrado SSL/TLS entre el cliente y el servidor de conversión, configurable a través del SSLContext estándar de Java. El servidor independiente también admite autenticación básica HTTP para garantizar que solo los clientes autorizados puedan enviar solicitudes de conversión. Ambas funciones de seguridad pueden activarse con una configuración mínima, convirtiendo a documents4j en una solución viable incluso en industrias reguladas.

Procesamiento asíncrono y priorizado

Las conversiones pueden consumir muchos recursos. documents4j le permite programar conversiones para que se ejecuten en segundo plano (asíncronamente) usando un tipo de retorno Future. Además, soporta un mecanismo de priorización. Si su aplicación maneja un alto volumen de solicitudes, puede asignar una mayor prioridad a los documentos críticos para asegurarse de que se muevan al frente de la cola interna de trabajos.

 Español