Cree y lea PDF en Java utilizando la biblioteca iText
- PDF y bibliotecas para trabajar con archivos PDF
-
Características de la biblioteca
iText
-
Pasos para instalar la biblioteca
iText
en Eclipse -
Pasos para crear un archivo PDF utilizando la biblioteca
iText
en Java -
Pasos para leer el archivo PDF utilizando la biblioteca
iText
en Java
La biblioteca iText
es una biblioteca de código abierto para crear, manipular y leer archivos PDF en Java. Este artículo trata sobre la biblioteca iText
, su instalación en Eclipse y la creación y lectura de archivos PDF en Java usando la biblioteca iText
.
PDF y bibliotecas para trabajar con archivos PDF
El formato de documento portátil (PDF) es un formato de intercambio de datos muy utilizado mediante archivos. El PDF es independiente del hardware, el sistema operativo y el software.
Por lo tanto, es muy popular y se usa a menudo para texto, imágenes y otros tipos de datos.
Muchas bibliotecas están disponibles para crear, leer y trabajar con archivos PDF. Algunas de estas bibliotecas se dan a continuación.
-
iText
: la versión comunitaria deiText
es una biblioteca de código abierto. Lee, crea y manipula los archivos PDF utilizando Java.Tiene una estructura jerárquica y puede ejecutar archivos PDF arbitrariamente complejos para generar los resultados deseados. La biblioteca
iText
está disponible en Java y .NET. -
Biblioteca
Adobe PDF
- Adobe desarrolló esta biblioteca para crear, manipular y leer archivos PDF. Podemos usar esta biblioteca para imprimir el pdf también.Esta biblioteca funciona con diferentes lenguajes como C++, Java y .NET.
-
PDFBox
- Esta es otra biblioteca de código abierto. Apache desarrolló esta biblioteca para crear, editar y ver archivos PDF y se puede usar con Java. -
Jasper Reports
: esta herramienta de informes puede generar informes en archivos PDF.
Características de la biblioteca iText
Veamos algunas de las funciones de la biblioteca iText
.
- Creación de archivos PDF: podemos crear archivos PDF arbitrariamente complejos e interactivos utilizando la biblioteca
iText
. También podemos insertar imágenes en el archivo PDF. - Podemos crear marcadores, agregar números de página y agregar marcas de agua al archivo PDF utilizando la biblioteca
iText
. - Podemos realizar operaciones de división y combinación en los archivos PDF.
- La biblioteca
iText
ofrece la posibilidad de trabajar con formularios interactivos en archivos PDF. - Podemos guardar un archivo PDF como imagen en diferentes formatos como JPG, PNG, etc.
Pasos para instalar la biblioteca iText
en Eclipse
La biblioteca iText
es un software de código abierto de terceros que debe instalarse por separado en su proyecto Java antes de usarlo. Este artículo lo guía a través de los pasos de instalación de iText
en Eclipse.
Eclipse es uno de los IDE más populares utilizados para el desarrollo de aplicaciones en Java. Este artículo asume que ya ha instalado Java y Eclipse.
Incluso si trabaja en cualquier otro IDE, el proceso de instalación es similar.
Veamos los pasos para agregar la biblioteca iText
a su proyecto Eclipse.
-
Crear un proyecto en Eclipse (
Archivo
->Nuevo
->Proyecto Java
). -
Haga clic derecho en el proyecto, aparece un menú desplegable.
-
Navegar hasta
Configurar
. -
Haga clic en
Convertir a Proyecto Maven
. -
Observarás que aparece un nuevo archivo llamado
pom.xml
en la carpeta de tu proyecto. -
Abra el
pom.xml
y agregue las siguientes dependencias dentro de la etiqueta<project>
y después de la etiqueta<build>
.<dependencies> <dependency> <groupId>com.itextpdf</groupId> <artifactId>barcodes</artifactId> <version>7.2.1</version> <!-- barcodes depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>font-asian</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>forms</artifactId> <version>7.2.1</version> <!-- forms depends on kernel and layout --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>hyph</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>io</artifactId> <version>7.2.1</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>kernel</artifactId> <version>7.2.1</version> <!-- kernel depends on io --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>layout</artifactId> <version>7.2.1</version> <!-- layout depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>pdfa</artifactId> <version>7.2.1</version> <!-- pdfa depends on kernel --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>sign</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>commons</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>styled-xml-parser</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>svg</artifactId> <version>7.2.1</version> <!-- sign depends on kernel, layout and forms --> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.13.3</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.13.3</version> </dependency> </dependencies>
Tenga en cuenta que el proyecto utiliza la última versión (7.2.1) de la biblioteca
iText
al escribir. Puede actualizar a las versiones más nuevas si están disponibles. -
Vaya a
Archivo
en la barra de menú y haga clic enActualizar
.
Esto importará las bibliotecas necesarias al proyecto. Debe tener una conexión a Internet estable ya que las bibliotecas se descargan del repositorio de maven.
Pasos para crear un archivo PDF utilizando la biblioteca iText
en Java
Una vez que las bibliotecas están instaladas, puede usar la biblioteca iText
para crear archivos pdf usando el programa Java.
La biblioteca iText
tiene una clase llamada PdfWriter
que crea un nuevo archivo pdf para escribir en él. Una vez que el archivo está abierto, agrega texto, imagen, etc.
Comprendamos los pasos para crear un archivo pdf y agregarle texto e imagen.
- Cree una instancia de la clase
PdfWriter
pasando el nombre del archivo como parámetro al constructor. - Proceda a crear una instancia de la clase
PdfDocument
pasando la clasePdfWriter
al constructor. Esta clase es responsable de escribir en el archivo pdf. - Finalmente, deberá crear una instancia de clase
Document
. Se adjunta a la instancia de la clasePdfDocument
.
Esta clase se utiliza para adjuntar elementos individuales al archivo pdf.
- En este momento, está listo para escribir texto e imágenes en el archivo pdf.
Pasos para escribir el texto en el archivo PDF en Java usando la biblioteca iText
Veamos los pasos para escribir un texto en el archivo.
- Se utiliza una clase
Paragraph
para escribir el texto en el pdf. Por lo tanto, debe crear una instancia de la claseParagraph
. - Puede agregar el texto llamando al método
add()
. - Puede cambiar la apariencia del texto llamando a diferentes métodos como
setTextAlignment()
,setFont()
, etc. - Finalmente, agrega la instancia de
párrafo
a la instancia deDocumento
llamando al métodoadd()
.
Finalmente, cuando haya agregado todas las instancias al documento, debe cerrarlo llamando al método close()
de la clase Documento
.
Ejemplo de código para crear PDF en Java utilizando la biblioteca iText
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
createPdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void createPdf(String file) throws IOException {
PdfWriter writer = new PdfWriter(file);
PdfDocument pdfDoc = new PdfDocument(writer);
Document doc = new Document(pdfDoc);
PdfFont myFont = PdfFontFactory.createFont(StandardFonts.TIMES_ROMAN);
Paragraph p1 = new Paragraph();
p1.add("Hello, This is Delftstack!");
p1.setTextAlignment(TextAlignment.CENTER);
p1.setFont(myFont);
p1.setFontSize(28);
doc.add(p1);
Paragraph p2 = new Paragraph();
p2.add("We help you understand the concepts.");
p2.setFontSize(18);
doc.add(p2);
doc.close();
}
}
El archivo pdf creado con el código anterior se muestra a continuación.
Pasos para leer el archivo PDF utilizando la biblioteca iText
en Java
La biblioteca iText
proporciona una clase PdfReader
para leer un archivo pdf. El archivo pdf se puede leer siguiendo los pasos que se indican a continuación.
- Primero, debe crear una instancia de la clase
PdfReader
pasando la ruta del archivo al constructor. - Cree una instancia de clase
PdfDocument
pasando la instancia dePdfReader
al constructor. - Si su archivo pdf contiene varias páginas, deberá recorrer cada página. Para obtener el número de páginas, puede invocar el método
getNumberOfPages()
utilizando la instancia de la clasePdfDocument
. - Recorra cada página.
- Invoque el método
getTextFromPage()
de la clasePdfTextExtractor
pasando la página actual del documento. - Para obtener la página actual, debe invocar el método
getPage()
de la claseDocumento
y pasar el número de página actual. - El método
getTextFromPage()
es estático, por lo que no necesita una instancia de clase. - El método devuelve todo el texto de la página actual. Puede almacenarlo en una variable
String
. - Procese el texto (por ejemplo, muéstrelo en la consola).
- Invoque el método
Ejemplo de código para leer PDF en Java usando la biblioteca iText
import com.itextpdf.io.font.constants.StandardFonts;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfReader;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.properties.TextAlignment;
import java.io.IOException;
public class pdfExample {
public static void main(String[] args) {
String file = "sample_pdf.pdf";
try {
readpdf(file);
} catch (IOException e) {
e.printStackTrace();
}
}
private static void readpdf(String file) throws IOException {
PdfReader pr = new PdfReader(file);
PdfDocument doc = new PdfDocument(pr);
int num = doc.getNumberOfPages();
for (int i = 1; i <= num; i++) {
String str = PdfTextExtractor.getTextFromPage(doc.getPage(i));
System.out.println(str);
}
}
}
Producción :
Hello, This is Delftstack!
We help you understand the concepts.
Conclusión
Este artículo trata los aspectos básicos de la lectura y escritura del archivo pdf utilizando la biblioteca iText
. Sin embargo, la biblioteca iText
puede realizar operaciones complejas en el archivo pdf.
Para leer más sobre la biblioteca iText
y sus funcionalidades, visite la documentación.