Cómo utilizar el componente Java itext para generar pdf
Proceso de implementación:
1. Introducción a iText
iText es un proyecto del famoso sitio de código abierto sourceforge. Es un java utilizado para generar documentos PDF. Biblioteca de clases. iText no sólo puede generar documentos PDF o RTF, sino también convertir archivos XML y Html en archivos PDF.
2. Cree el primer documento PDF
Usar iText para generar un documento PDF requiere 5 pasos:
① Cree el objeto com.lowagie.text.Document Ejemplo.
Documento documento = nuevo documento();
② Cree un escritor (Escritor) asociado con el objeto del documento. El documento se puede escribir en el disco a través del escritor (Escritor).
PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));
③Abra el documento.
document.open();
④Añadir contenido al documento.
document.add(new Paragraph("Hello World"));
⑤Cierra el documento.
document.close();
A través de los cinco pasos anteriores, se puede generar un archivo Helloworld.PDF con el contenido de "Hello World".
Crear una instancia del objeto com.lowagie.text.Document
Hay tres funciones constructoras para el objeto com.lowagie.text.Document, a saber:
Documento público();
Documento público (Tamaño de página rectangular);
Documento público (Tamaño de página rectangular,
int marginLeft,
int marginRight ,
int marginTop,
int marginBottom);
El parámetro pageSize de la función de compilación es el tamaño de la primera página del documento. función de construcción, el tamaño de la página es A4, que tiene el mismo efecto que Document(PageSize.A4);
Para la tercera función de construcción, los parámetros marginLeft, marginRight, marginTop y marginBottom son los márgenes de página izquierdo, derecho, superior e inferior respectivamente.
El tamaño de página, el color de fondo y los atributos horizontales/verticales de la página se pueden configurar a través del parámetro pageSize. iText define tipos de papel como A0-A10, AL, LETTER,
HALFLETTER, _11x17, LEDGER, NOTA, B0-B5, ARCH_A-ARCH_E, FLSA
y FLSE, y puede También personalice el papel a través de rectángulo tamaño de página = nuevo rectángulo (144,
720);. La página se puede configurar en orientación horizontal mediante el método Rectángulo rotar().
Objeto Writer
Una vez creado el objeto de documento, es necesario asociar uno o más objetos Writer con él.
Se pueden guardar documentos específicos en el formato requerido a través del objeto Writer
Por ejemplo, com.lowagie.text.PDF.PDFWriter puede guardar documentos en archivos PDF,
com .lowagie. .text.html.HtmlWriter puede guardar documentos como archivos html.
Establecer propiedades del documento
Antes de abrir el documento, puede establecer el título, el tema, el autor, las palabras clave, el método de vinculación, el creador, el productor, la fecha de creación y otras propiedades del documento. Los métodos de llamada son:
addTitle público booleano (título de cadena)
addSubject público booleano (asunto de cadena)
addKeywords booleanos públicos (palabras clave de cadena)
addAuthor público booleano (autor de cadena)
addCreator público booleano (creador de cadena)
addProducer público booleano()
addCreationDate público booleano () p>
addHeader booleano público (nombre de cadena, contenido de cadena)
El método addHeader no es válido para documentos PDF. addHeader solo es válido para documentos html y se utiliza para agregar información de encabezado del documento.
Antes de generar una nueva página, puede configurar el tamaño de la página, los marcadores, las notas al pie (HeaderFooter) y otra información. El método de llamada es:
setPageSize público booleano (Tamaño de página rectangular).
añadir booleano público(Marca de agua marca de agua)
eliminar public voidWatermark()
setHeader public void(encabezado HeaderFooter)
resetHeader public void ( )
setFooter público void(pie de página de encabezado)
setFooter public void()
setPageCount public void()
setPageCount public void ( int pageN)
Si desea establecer las propiedades de la primera página, estos métodos deben llamarse antes de abrir el documento.
Para documentos PDF, iText también proporciona las propiedades de visualización del documento. Al llamar al método setViewerPreferences del escritor, puede controlar las propiedades de visualización de Acrobat Reader cuando se abre el documento, como por ejemplo si se muestra. una sola página, si se mostrará en pantalla completa y si se ocultarán Propiedades como la barra de estado.
Además, iText también proporciona protección de seguridad para archivos PDF. A través del método setEncryption de Writer, puede establecer la contraseña de usuario, los atributos de solo lectura, imprimibles y otros del documento.
Agregar contenido al documento
Todo el contenido agregado al documento está en unidades de objetos, como frase, párrafo, tabla, objetos gráficos, etc. El más utilizado es el objeto Párrafo, que se utiliza para agregar un párrafo de texto al documento.
3. Procesamiento de texto
iText utiliza fragmentos de texto (Chunk), frases (Phrase) y párrafos (paragraph) para procesar el texto.
El bloque de texto (Chunk) es la unidad más pequeña para procesar texto. Consta de una cadena de caracteres formateados (incluyendo fuente, color y tamaño). Por ejemplo, el siguiente código genera una cadena subrayada con la fuente HELVETICA, tamaño 10:
Chunk chunk1 = new Chunk("Este texto está subrayado", FontFactory.getFont(FontFactory.HELVETICA, 12, Font. UNDERLINE));
Una frase (Frase) consta de uno o más bloques de texto (Chunk). Una frase (Frase) también puede configurar la fuente, pero para los bloques de texto en los que se ha configurado la fuente.
(Chunk) no es válido. Se puede agregar un fragmento de texto (Chunk) a una frase (Phrase) mediante la función miembro add de frase (Phrase),
Por ejemplo: frase6.add(chunk);
Párrafo (párrafo) ) está compuesto por uno o más bloques de texto (Chunk) o frases (Phrase)
Es equivalente al concepto de párrafo en un documento WORD. También se puede establecer el tamaño de fuente, color y. otros atributos del párrafo. Además, también puedes configurar la sangría y alineación de la primera línea del párrafo (izquierda, derecha, centro).
La alineación del párrafo se puede configurar a través de la función setAlignment. El parámetro 1 de setAlignment es alineación central, 2 es alineación derecha y 3 es alineación izquierda.
4. Procesamiento de tablas
Las clases para procesar tablas en iText son: com.lowagie.text.Table y com.lowagie.text.PDF.PDFPTable, a modo de comparación
Puedes usar com.lowagie.text.Table para un procesamiento de tablas más simple, pero si quieres procesar tablas complejas, necesitas
com.lowagie.text.PDF.PDFPTable para procesar. Aquí hay una descripción de la clase com.lowagie.text.Table.
La clase com.lowagie.text.Table tiene tres constructores:
①Table (int columnas)
②Table (int columnas, int filas)
p>③Tabla(Atributos de propiedades)
Los parámetros columnas, filas y atributos son el número de columnas, filas y atributos de la tabla, respectivamente. Al crear una tabla, debe especificar el número de columnas de la tabla, pero no es necesario especificar el número de filas.
Después de crear la tabla, puede establecer las propiedades de la tabla, como: ancho del borde, color del borde, tamaño del espacio de relleno (el espacio entre celdas) y otras propiedades.
El siguiente es un ejemplo simple para ilustrar cómo usar una tabla. El código es el siguiente:
1:Table table = new Table(3);
2:table.setBorderWidth. (1);
p>3:table.setBorderColor(nuevo Color(0, 0, 255));
4:table.setPadding(5);
5:table.setSpacing (5);
6:Celda celda = nueva Celda("encabezado");
7:cell.setHeader(true); p>
8:celda .setColspan(3);
9:table.addCell(celda);
10:table.endHeaders();
11:cell = new Cell ("celda de ejemplo con colspan 1 y rowspan 2");
12:cell.setRowspan(2);
13:cell.setBorderColor( nuevo Color(255, 0, 0 ));
14:table.addCell(celda);
15:table.addCell("1.1");
16:table.addCell( "2.1");
17:table.addCell("1.2");
18:table.addCell("2.2");
19: table.addCell("celda prueba1");
20:celda = nueva Celda("celda grande");
21:cell.setRowspan (2);
22:cell.setColspan(2);
23:table.addCell(celda);
24:table.addCell(" cell test2");
Los resultados de la ejecución son los siguientes:
encabezado
celda de ejemplo con colspan 1 y rowspan 2 1.1 2.1
1.2 2.2
prueba de celda1 celda grande
prueba de celda2
Las líneas 1 a 5 del código se utilizan para crear una nueva tabla como se muestra en el código. , se crea una tabla con 3 columnas y el ancho del borde se establece en 1, el color es azul y el relleno es 5.
Las líneas 6 a 10 del código se utilizan para configurar el encabezado de la tabla. La línea 7 cell.setHeader(true); muestra la celda como información del encabezado; .setColspan(3); especifica que la celda ocupa 3 columnas; al agregar información del encabezado a la tabla, tenga en cuenta que una vez que se agrega la información del encabezado, debe llamar al método
endHeaders(), como la línea. 10; de lo contrario, cuando la tabla cruce dos páginas, la información del encabezado ya no se mostrará.
Las líneas 11 a 14 del código agregan a la tabla una celda de una columna de ancho y dos filas de largo.
Al agregar celdas a la tabla, agréguelas de izquierda a derecha y de arriba a abajo. Por ejemplo, después de ejecutar 11 líneas de código, hay 2 filas y 2 columnas de espacios en blanco en la esquina inferior derecha de la tabla. Esto significa que al agregar celdas a la tabla, primero complete los espacios en blanco y luego comience una nueva fila. Las líneas 15 a 24 del código ilustran esto.
5. Procesamiento de imágenes
La clase para procesar tablas en iText es com.lowagie.text.Image Actualmente, los formatos de imagen admitidos por iText son: GIF, Jpeg, PNG.
wmf y otros formatos, para diferentes formatos de imagen, iText utiliza el mismo constructor para identificar automáticamente el formato de imagen. Obtenga instancias de imágenes gif, jpg y png respectivamente a través del siguiente código.
Imagen gif = Image.getInstance("vonnegut.gif");
Imagen jpeg = Image.getInstance("myKids.jpg");
Imagen png = Image.getInstance("hitchcock.png");
La posición de la imagen
La posición de la imagen se refiere principalmente a la alineación de la imagen en el documento y la Relación posicional entre la imagen y el texto. IText se procesa a través de la función public void setAlignment(int
alignment. Los parámetros de alineación son Image.RIGHT, Image.MIDDLE e Image.LEFT, respectivamente, se refieren a alineación derecha, centro y
.izquierda. Cuando el parámetro de alineación es Image.TEXTWRAP e Image.UNDERLYING, significa que el texto se muestra alrededor del gráfico y el gráfico se muestra como fondo del texto respectivamente. Estos dos parámetros
se pueden combinar para lograr el efecto deseado. Por ejemplo, setAlignment(Image.RIGHT|Image.TEXTWRAP) muestra el efecto de alinear la imagen a la derecha y mostrar el texto
<. p>alrededor de la imagen.Tamaño y rotación de la imagen
Si la imagen no se muestra en su tamaño original en el documento, se puede configurar mediante la siguiente función:
public void scaleAbsolute( int newWidth, int newHeight)
public void scalePercent(int por ciento)
public void scalePercent(int percentX, int percentY)
Función public void scaleAbsolute (int newWidth, int
newHeight) establece directamente el tamaño de visualización. La función public void scalePercent(int
percent) establece la proporción de visualización, como scalePercent(50) significa que se muestra. el tamaño es el tamaño original del 50% y la función scalePercent(int
percentX, int percentY) es la relación de visualización de la altura y el ancho de la imagen.
Si la imagen necesita rotarse en un cierto ángulo antes de mostrarse en el documento, se puede configurar mediante la función public void setRotation(double r). El parámetro r es radianes. es 30 grados, el parámetro r= Math.
6. Procesamiento de chino
La configuración de fuente predeterminada de iText no admite fuentes chinas. Debe descargar el paquete de fuentes del Lejano Oriente iTextAsian.jar; de lo contrario, las fuentes chinas no se pueden enviar a PDF. documentos.
Puede utilizar chino en el documento a través del siguiente código:
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.lowagie.text.Font FontChinese = new com.lowagie.text.Font(bfChinese, 12, com.lowagie.text.Font.NORMAL);
Párrafo pragraph=new Paragraph(" Hola ", fuente china);