Convertir de Word a PDF con Java
En algún momento puede surgir la necesidad de extraer información de un fichero de texto. Una forma sencilla del tratamiento de información de ficheros puede ser a través del lenguaje de programación Java.
¿Qué es Java? Es un lenguaje de programación que se creó en 1995 por Sun Microsystem. Para conocer más, recomiendo el siguiente artículo: https://rosamarfil.es/tutoriales/otras-entradas/que-es-java/
En este ejemplo concreto leeremos un fichero de texto con extensión *.docx y lo convertiremos a *.pdf.
A continuación, explico los pasos necesarios para ello.
Crear proyecto Java
En este ejemplo, voy a trabajar con el entorno de desarrollo Eclipse.
Una vez abierta la aplicación, haz clic en Archivo -> Nuevo -> Proyecto Java.
Por un nombre y como recomendación utiliza la versión de Java 8.
Presiona sobre Finalizar.
Crear clase principal
Crea una clase de tipo «main» (o principal) dentro del directorio src y dentro de un paquete (en mi caso developrogramming.com).
Usar librería externas
Para la lectura de ficheros Word será necesario la utilización de librerías externas. Convertiremos a Proyecto Maven para poder descargar de manera sencilla estás librería.
Haz clic derecho sobre el proyecto y selecciona Configure -> Convert to Maven Project. Presiona Finish.
Añade las siguientes líneas en el fichero pom.xml. Es importante añadir las versiones correctas, ya que puede haber conflictos.
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.0.1-FINAL</version>
</dependency>
<dependency>
<groupId>fr.opensagres.xdocreport</groupId>
<artifactId>org.apache.poi.xwpf.converter.pdf</artifactId>
<version>1.0.6</version>
</dependency>
</dependencies>
Leer fichero de word *.docx
Es hora de añadir el código para leer el fichero de word con extensión *.docx y convertirlo a PDF (*.pdf).
Aquí haremos uso de las librerías añadidas anteriormente en el fichero pom.xml, leeremos el fichero y haremos un tratamiento mínimo de los posibles errores capturándolos.
En esta caso leeré el fichero C:\ficherosParaLeer\fichero1.docx que contiene un texto e imagen simple.
Observa el siguiente código de la clase main llamada Principal.java:
package developrogramming.com;
//Librerías JAVA
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
//Librerías POI
import org.apache.poi.xwpf.converter.core.XWPFConverterException;
import org.apache.poi.xwpf.converter.pdf.PdfConverter;
import org.apache.poi.xwpf.converter.pdf.PdfOptions;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class Principal {
public static void main(String[] args) {
File archivoWord = new File("C:\\ficherosParaLeer\\fichero1.docx");
File archivoPDF = new File("C:\\ficherosParaLeer\\fichero1.pdf");
// Se lee el contenido del fichero Word y se guarda en un objeto especial POI
// para su posterior conversión
XWPFDocument document = leerDocx(archivoWord);
// Se convierte el contenido del fichero Word a PDF
if (convertirPDF(archivoPDF, document)) {
// Mostramos mensaje de éxito
System.out.println("El fichero de Word se ha convertido a PDF con éxito.");
} else {
System.out.println("ERROR: El fichero de Word NO se ha convertido a PDF.");
}
}
public static XWPFDocument leerDocx(File archivoWord) {
XWPFDocument documentoWord = null;
try {
// Se prepara el archivo para su tratamiento
InputStream texto = new FileInputStream(archivoWord);
// Creamos documento especial POI para su posterior conversión
documentoWord = new XWPFDocument(texto);
} catch (IOException e) {
System.out.println("Error leyendo el fichero de Word");
e.printStackTrace();
}
return documentoWord;
}
public static boolean convertirPDF(File archivoPDF, XWPFDocument documentWord) {
boolean exito;
try {
OutputStream out = new FileOutputStream(archivoPDF);
PdfOptions options = PdfOptions.create();
PdfConverter.getInstance().convert(documentWord, out, options);
exito = true;
} catch (XWPFConverterException e) {
exito = false;
System.out.println("Error en la conversión");
e.printStackTrace();
} catch (IOException e) {
exito = false;
System.out.println("Error creando el fichero PDF");
e.printStackTrace();
}
return exito;
}
}
Ejecuta el programa haciendo clic derecho sobre la clase main y eligiendo Run As -> Java Application.
Se muestra en la pestaña Consola el resultado:
Si abrimos el fichero se muestra de forma correcta:
Enlace a GitHub:
https://github.com/Developrogramming/ConvertWordToPDF