En este artículo, aprenderá cómo crear un archivo PDF desde cero mediante programación en Java.

Crear documentos PDF usando Java

PDF se ha convertido en un formato de archivo de uso común para crear diferentes tipos de documentos. Varias industrias han adoptado la automatización de PDF para la generación de documentos, como recibos, facturas, informes comerciales, etc. Sin perder de vista estos escenarios, este artículo explica cómo crear archivos PDF en Java. Los ejemplos de código demostrarán cómo crear un archivo PDF desde cero e insertar texto, imágenes, tablas y otros elementos en ese PDF en Java.

API de Java para crear PDF - Descarga gratuita

Aspose.PDF for Java es una API de manipulación de archivos PDF que le permite crear archivos PDF desde las aplicaciones Java. Con la API, puede crear documentos PDF simples y complejos. Aspose.PDF for Java puede descargarse como JAR o instalarse en aplicaciones basadas en Maven.

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.11</version>
    <classifier>jdk17</classifier>
</dependency>

Crear un archivo PDF en Java

Los siguientes son los pasos para generar un archivo PDF simple desde cero e insertar un fragmento de texto en él.

El siguiente ejemplo de código muestra cómo crear un archivo PDF usando Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.PDF-for-Java
// Inicializar objeto de documento
Document document = new Document();
 
//Añadir página
Page page = document.getPages().add();
 
// Agregar texto a la nueva página
page.getParagraphs().add(new TextFragment("Hello World!"));
 
// Guardar PDF actualizado
document.save("HelloWorld_out.pdf");

Crear archivo PDF con formato de texto en Java

Veamos ahora cómo aplicar formato al texto en el documento PDF. El formato del texto puede incluir fuente, tamaño de fuente, color, posición, etc. Los siguientes son los pasos para realizar esta operación.

  • Utilice la clase Document para crear un nuevo documento PDF o cargar uno existente.
  • Acceda a la Página en la que desea colocar el texto.
  • Cree un objeto de TextFragment para configurar el texto y otras opciones de formato, como posición, fuente, color, tamaño, etc.
  • Utilice la clase TextBuilder para agregar el objeto TextFragment a la página.
  • Utilice el método Document.save(String) para guardar el documento PDF.

El siguiente ejemplo de código muestra cómo crear un archivo PDF y aplicar formato de texto usando Java.

// Cargar documento PDF
Document document = new Document();

// Añadir página
Page page = document.getPages().add();

// Crear fragmento de texto
TextFragment textFragment = new TextFragment(
		"Text 1: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment.setPosition(new Position(100, 700));
TextFragment textFragment1 = new TextFragment(
		"Text 2: We have now applied text formatting. This is PDF generated by Aspose.PDF for .NET");
textFragment1.setPosition(new Position(100, 600));

// Establecer propiedades de texto
textFragment.getTextState().setFontSize(12);
textFragment.getTextState().setFont(FontRepository.findFont("TimesNewRoman"));
textFragment.getTextState().setBackgroundColor(Color.getLightGray());
textFragment.getTextState().setForegroundColor(Color.getRed());

textFragment1.getTextState().setDrawTextRectangleBorder(true);
textFragment1.getTextState().setUnderline(true);
textFragment1.getTextState().setStrikeOut(true);

// Crea un nuevo color con el espacio de color del patrón
Color color = new Color();
color.setPatternColorSpace(new GradientAxialShading(Color.getRed(), Color.getBlue()));		
textFragment1.getTextState().setForegroundColor(color);

// Crear objeto TextBuilder
TextBuilder textBuilder = new TextBuilder(page);

// Agregue los fragmentos de texto a la página PDF
textBuilder.appendText(textFragment);
textBuilder.appendText(textFragment1);

// Guardar el documento PDF
document.save("Generated-PDF.pdf");

Java Crear archivos PDF con imagen

Los siguientes son los pasos para insertar una imagen en un archivo PDF utilizando Aspose.PDF for Java.

  • Cree un objeto Document para crear o abrir el documento PDF.
  • Obtenga la página a la que desea agregar una imagen en el objeto Página.
  • Agrega la imagen a la colección Page.getResources().
  • Utilice operadores para colocar la imagen en la página:
    • Guardar operator to save the current graphical state.
    • ConcatenarMatriz operator to specify where the image is to be placed.
    • Hacer operator to draw the image on the page.
    • Finalmente, utilice el operador GRestore para guardar el estado gráfico actualizado.
  • Guarde el archivo PDF.

El siguiente ejemplo de código muestra cómo insertar una imagen en un archivo PDF en Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// abrir un documento
Document pdfDocument1 = new Document("input.pdf");

// Establecer coordenadas
int lowerLeftX = 100;
int lowerLeftY = 100;
int upperRightX = 200;
int upperRightY = 200;

// Obtenga la página a la que desea agregar la imagen
Page page = pdfDocument1.getPages().get_Item(1);

// Cargar imagen en flujo
java.io.FileInputStream imageStream = new java.io.FileInputStream(new java.io.File("input_image1.jpg"));

// Agregue una imagen a la colección Imágenes de los recursos de la página.
page.getResources().getImages().add(imageStream);

// Usando el operador GSave: este operador guarda el estado actual de los gráficos
page.getContents().add(new Operator.GSave());

// Crear objetos Rectángulo y Matriz
Rectangle rectangle = new Rectangle(lowerLeftX, lowerLeftY, upperRightX, upperRightY);
Matrix matrix = new Matrix(new double[] { rectangle.getURX() - rectangle.getLLX(), 0, 0, rectangle.getURY() - rectangle.getLLY(), rectangle.getLLX(), rectangle.getLLY() });

// Usando el operador ConcatenateMatrix (matriz concatenada): define cómo se debe colocar la imagen
page.getContents().add(new Operator.ConcatenateMatrix(matrix));
XImage ximage = page.getResources().getImages().get_Item(page.getResources().getImages().size());

// Usando el operador Do: este operador dibuja la imagen
page.getContents().add(new Operator.Do(ximage.getName()));

// Usando el operador GRestore: este operador restaura el estado de los gráficos
page.getContents().add(new Operator.GRestore());

// Guardar el nuevo PDF
pdfDocument1.save("Updated_document.pdf");

// Cerrar secuencia de imágenes
imageStream.close();

Crear una tabla en un archivo PDF en Java

La tabla es una buena manera de organizar los datos en forma de filas y columnas. Aspose.PDF le permite insertar una tabla en un documento PDF con bastante facilidad. Los siguientes son los pasos para crear una tabla.

  • Cargue el archivo fuente usando la clase Document.
  • Inicialice una Table y establezca sus columnas y filas.
  • Establecer la configuración de la tabla (por ejemplo, bordes).
  • Complete la tabla agregando filas en ella.
  • Agregue la tabla a una página.
  • Guarde el archivo PDF.

El siguiente ejemplo de código muestra cómo crear una tabla en archivos PDF en Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Cargar documento PDF de origen
Document doc = new Document(dataDir + "input.pdf");
// Inicializa una nueva instancia de la tabla.
Table table = new Table();
// Establezca el color del borde de la tabla como LightGray
table.setBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// establecer el borde para las celdas de la tabla
table.setDefaultCellBorder(new BorderInfo(BorderSide.All, .5f, Color.getLightGray()));
// crear un bucle para agregar 10 filas
for (int row_count = 1; row_count < 10; row_count++) {
	// agregar fila a la tabla
	Row row = table.getRows().add();
	// añadir celdas de tabla
	row.getCells().add("Column (" + row_count + ", 1)");
	row.getCells().add("Column (" + row_count + ", 2)");
	row.getCells().add("Column (" + row_count + ", 3)");
}
// Agregar objeto de tabla a la primera página del documento de entrada
doc.getPages().get_Item(1).getParagraphs().add(table);
// Guardar documento actualizado que contiene objeto de tabla
doc.save(dataDir + "document_with_table.pdf");

Crear formulario en un archivo PDF en Java

El formato PDF también admite la adición de formularios para recopilar información de los usuarios. El formulario puede contener varios tipos de campos, como cuadros de texto, botones de radio, etc. Los siguientes pasos muestran cómo insertar un formulario simple en el archivo PDF.

El siguiente ejemplo de código muestra cómo crear un formulario en un archivo PDF en Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// abrir un documento
Document pdfDocument = new Document("input.pdf");

// crear un campo
TextBoxField textBoxField1 = new TextBoxField(pdfDocument.getPages().get_Item(1), new Rectangle(100, 200, 300, 300));

// Establecer el nombre del campo
textBoxField1.setPartialName("textbox1");

// Establecer el valor del campo
textBoxField1.setValue("Text Box");

// Crear un objeto de borde
Border border = new Border(textBoxField1);

// Establecer el ancho del borde
border.setWidth(5);

// Establecer el estilo del guión del borde
border.setDash(new Dash(1, 1));

// Establecer el borde del campo
textBoxField1.setBorder(border);

// Agregar el campo al documento
pdfDocument.getForm().add(textBoxField1, 1);

// Guardar el PDF modificado
pdfDocument.save("output.pdf");

Lea más sobre los campos de formulario usando aquí.

Insertar marcadores en un archivo PDF en Java

Los siguientes son los pasos para agregar marcadores en un archivo PDF.

  • Abra un documento PDF utilizando el objeto Document.
  • Agregue esquemas de documentos a una colección OutlineItemCollection.
  • Configure el número de página de destino.
  • Agregue el marcador en la colección de esquemas del documento.
  • Guarde el archivo PDF.

El siguiente ejemplo de código muestra cómo insertar marcadores en PDF usando Java.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-pdf/Aspose.Pdf-for-Java
// Abra el documento PDF de origen
Document pdfDocument = new Document("input.pdf");

// Crear un objeto marcador
OutlineItemCollection pdfOutline = new OutlineItemCollection(pdfDocument.getOutlines());
pdfOutline.setTitle("Test Outline");
pdfOutline.setItalic(true);
pdfOutline.setBold(true);

// Establecer el número de página de destino
pdfOutline.setAction(new GoToAction(pdfDocument.getPages().get_Item(1)));

// Agregue un marcador en la colección de esquemas del documento.
pdfDocument.getOutlines().add(pdfOutline);

// Guarde el documento de actualización
pdfDocument.save("output.pdf");

Obtenga una licencia gratis

Puede obtener una licencia temporal gratuita para probar la API sin limitaciones de evaluación.

Conclusión

En este artículo, ha aprendido a crear archivos PDF desde cero en Java. Además, los ejemplos de código Java han demostrado cómo insertar texto, imágenes, tablas, formularios y marcadores en archivos PDF nuevos o existentes. Puede explorar más sobre la API PDF de Java usando documentación.

Ver también