Red de conocimiento informático - Material del sitio web - Cómo usar itext para generar pdf desde una página web

Cómo usar itext para generar pdf desde una página web

1. Introducción a iText

IText es un proyecto del conocido sitio web de código abierto sourceforge. Es una biblioteca de clases de Java para generar documentos PDF. IText no sólo puede generar documentos PDF o rtf, sino también convertir archivos XML y Html en archivos PDF.

La instalación de iText es muy cómoda. Después de descargar el archivo iText.jar del sitio web de descarga /iText/download.html, solo necesita agregar la ruta de iText.jar a la ruta de clases del sistema para usar la biblioteca de clases iText en el programa.

En segundo lugar, cree el primer documento PDF

Hay cinco pasos para usar iText para generar un documento PDF:

(1) Crear com.lowagie.text .Documento Una instancia del objeto.

Documento = new Document();

(2) Establezca una asociación entre Writer y el objeto del documento, y el documento se puede escribir en el disco a través de Writer.

PDFWriter.getInstance(documento, flujo de salida de nuevo archivo(" hola mundo. PDF "));

③Abra el documento.

document.open();

④Añadir contenido al documento.

document.add(nuevo párrafo ("Hola mundo"));

⑤Cerrar el archivo.

documento.close().

A través de los cinco pasos anteriores, puedes crear un archivo Helloworld.PDF con el contenido "Hello World".

Crea una instancia del objeto com.lowagie.text.Document.

El objeto com.lowagie.text.Document tiene tres constructores, a saber:

Documento público ();

Documento público (tamaño de página rectangular); /p>

Documento público (tamaño de página rectangular,

int marginLeft

margen medio derecho,

int marginTop,

int margin bottom);

El parámetro pageSize del constructor es el tamaño de página del documento. Para el primer constructor, el tamaño de página es A4, que tiene el mismo efecto que Documento (Tamaño de página). A4). Para el tercer constructor, los parámetros marginLeft, marginRight, marginTop y marginBottom son el margen izquierdo, el margen derecho, el margen superior y el margen inferior respectivamente.

Puedes configurar el tamaño de la página, el color del fondo frontal y los atributos horizontales/verticales de la página a través del parámetro pageSize. IText define tipos de papel como A0-A10, AL, CARTA, MEDIA CARTA, _11x17, LEDGER, NOTA, B0-B5, ARCH_A-ARCH_E, FLSA, FLSE, etc. , también puedes usar Pagesize = rectangular. Papel personalizado. El método Rectángulo rotar() puede configurar la página en orientación horizontal.

Objeto Writer

Una vez que se crea un objeto de documento, es necesario crear uno o más objetos Writer asociados con él.

Puede guardar un documento específico en el formato requerido a través del objeto Writer. Por ejemplo, com.lowagie.text.PDF.PDFWriter puede guardar el documento como un archivo PDF y com.lowagie.text.html.html Writer puede guardarlo. documento como un archivo 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. El método de llamada es el siguiente:

addTitle público booleano (título de cadena)

addSubject público booleano (asunto de cadena)

addKeywords booleanos públicos (palabras clave de cadena)

addAuthor booleano público (autor de cadena)

addCreator booleano público (creador de cadena)

addProducer booleano público()

addCreationDate booleano público ( )

addHeader booleano público (nombre de cadena, contenido de cadena)

El método addHeader no es válido para documentos PDF y addHeader solo es válido para documentos html y se utiliza para agregar información de encabezado de documentos. .

Antes de generar una nueva página, puedes configurar el tamaño de la página, los marcadores, el encabezado y el pie de página y otra información. El método de llamada es:

setPageSize booleano público (Tamaño de página rectangular)

Adición booleana pública (marca de agua de marca de agua)

marca de agua de eliminación nula pública()

Encabezado de conjunto de anulación pública (encabezado de pie de página)

resetHeader de anulación pública()

Pie de página de conjunto de anulación pública (encabezado de pie de página)

resetFooter de anulación pública ( )

public void resetPageCount()

public void setPageCount(int pageN)

Si desea establecer las propiedades de la página de la primera página, debe Llámelo antes de abrir el documento con estos métodos.

Para documentos PDF, iText también proporciona las propiedades de visualización del documento. Puede controlar las propiedades de visualización de Acrobat Reader al abrir un documento llamando al método setViewerPreferences del escritor, como si se muestra una sola página, si se muestra en pantalla completa, si se oculta la barra de estado y otras propiedades.

Además, iText también proporciona protección de seguridad para archivos PDF. Puede configurar la contraseña de usuario, los atributos de solo lectura, imprimibles y otros del documento a través del método setEncryption de Writer.

Agregar contenido al documento

Todo el contenido agregado al documento está basado en objetos, como frases, párrafos, tablas, objetos gráficos, etc. Los objetos de párrafo se utilizan comúnmente para agregar párrafos a documentos.

En tercer lugar, procesamiento de texto

En iText, el texto se procesa a través de fragmentos, frases y párrafos.

Un bloque de texto es la unidad más pequeña para procesar texto. Consiste en una cadena con formato (que incluye fuente, color y tamaño).

Por ejemplo, el siguiente código generará una cadena subrayada en la fuente HELVETICA y tamaño 10:

Chunk chunk1 = new Chunk("Este texto está subrayado", font factory . get font(font factory . HELVETICA font , 12. Subrayado));

Una frase consta de uno o más bloques de texto, y la fuente de la frase también se puede configurar, pero no es válida para bloques de texto que ya se han configurado. Puede agregar un fragmento de texto a una frase mediante la función miembro de frase agregar, como por ejemplo: Frase 6. add(Chunk);

Un párrafo se compone de uno o más fragmentos o frases, lo que es equivalente al párrafo en un concepto de documento WORD, también puede configurar el tamaño de fuente, el 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 y centro). La alineación de los párrafos se puede configurar mediante la función setAlignment. Los parámetros de setAlignment son alineación central, alineación 2 a la derecha, alineación 3 a la izquierda y el valor predeterminado es alineación a la izquierda.

Cuarto, procesamiento de formularios

Las clases en iText que manejan tablas son: com.lowagie.text.Table y com.lowagie.text.Table. Para un procesamiento de tablas relativamente simple, puede usar com.lowagie.text.Table, pero si desea procesar tablas complejas, debe usar com.lowagie.text.Table. La siguiente es una descripción de com.lowagie.text. .Descripción de la clase Table

La clase com.lowagie.text.Table tiene tres constructores:

①Table (columna int)

②Table (columna entera, fila entera )

③Tabla (atributo)

Los parámetros columnas, filas y atributos son el número de columnas, filas y atributos de la tabla respectivamente. Cuando crea 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 una tabla, puede establecer propiedades de la misma como el ancho y el color del borde y el espacio de relleno. A continuación se muestra un ejemplo sencillo de cómo utilizar la tabla.

El código es el siguiente:

1: Tabla tabla = nueva tabla (3);

2: setborderwidth(1); .setBorderColor( Nuevo color (0, 0, 255));

4: tabla . setpadding

5: tabla espaciado (5); >

6: Celda celda = nueva celda ("encabezado");

7: celda. set header(true);

8: setcolspan(3);

9: table.addCell(cell);

10: table.end headers();

11: cell = new cell("columna Ejemplo de celda con intervalo 1 y intervalo de fila 2");

12: cell.setrowspan(2);

13: cell.setBorderColor(new color(255,0, 0));

14: tabla . addcell(celda);

15: tabla . addcell(" 1.1 ");

16: tabla addcell(" 2.1 ").

17: tabla . addcell(" 1.2 ");

18: tabla . addcell

19: tabla . (" prueba de celda 1 ");

20: celda = nueva celda ("celda grande"

21: setrowspan(2);

22: celda . setcolspan(2);

23: table.addCell(celda);

24: tabla . addcell(" prueba de celda 2 " );

Los resultados de la ejecución son los siguientes:

Encabezado

Ejemplo de celda con un intervalo de columnas de 1 y un intervalo de filas de 2 1,1 2,1

1,2 2,2

Prueba unitaria 1 Unidad grande

Prueba unitaria 2

Las líneas 1 a 5 del código se utilizan para crear una nueva tabla. Como se muestra en el código, cree una tabla de 3 columnas con el ancho del borde establecido en 1, el color en azul y el relleno en 5.

Las líneas 6 a 10 del código se utilizan para configurar el encabezado, línea 7 cell . set header(true); sí, la celda muestra la información del encabezado: cell . La celda especificada ocupa 3 columnas; al agregar información del encabezado a la tabla, debe tenerse en cuenta que una vez que se agrega la información del encabezado, se debe llamar al método endHeaders (), como 10 filas; de lo contrario, el encabezado no se mostrará después de La tabla está ampliada.

Las líneas 11 a 14 del código agregan una celda con un ancho de una columna y una longitud de dos filas en la tabla.

Cuando se agregan celdas a una tabla, se agregan de izquierda a derecha y de arriba a abajo. Por ejemplo, después de ejecutar 11 líneas de código, aparecen dos filas y dos columnas en blanco en la esquina inferior derecha de la tabla. Esto significa que cuando se agrega una celda a la tabla, este espacio en blanco se llena primero y luego se comienza una nueva fila. Las líneas 15 a 24 demuestran este orden de suma.

Procesamiento de imágenes de verbo (abreviatura de verbo)

La clase de procesamiento de tablas en iText es com.lowagie.text.Image Actualmente, iText admite GIF, Jpeg, PNG, wmf y otros. formatos de imagen.

Para diferentes formatos de imagen, iText utiliza el mismo constructor para identificar automáticamente el formato de la imagen. Se obtienen ejemplos de imágenes gif, jpg y png a través del siguiente código.

imagen gif = imagen . getinstance(" vonnegut . gif ");

imagen JPEG = imagen . getinstance(" mis hijos . jpg "); image 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 entre la imagen y la relación posicional del texto. IText es procesado por la función pública de alineación del conjunto vacío (alineación int), y la alineación del parámetro es Imagen. Sí, imágenes. medio e imagen. Izquierda se refiere a alineación derecha, alineación central y alineación izquierda respectivamente. Cuando la alineación del parámetro es una imagen. Ajuste de texto e imágenes. El texto subyacente aparece alrededor del gráfico y el gráfico aparece como fondo del texto. Estos dos parámetros se pueden combinar para lograr el efecto deseado. Por ejemplo, el efecto de establecer la alineación (imagen.derecha|imagen.textwrap) es que la imagen se alinea a la derecha y el texto se muestra alrededor de la imagen.

El tamaño y rotación de la imagen

Si la imagen no aparece en su tamaño original en el documento, se puede configurar con la siguiente función:

escala de vacío público absoluto(int nuevo ancho, int nuevoAlto)

Porcentaje de escala de vacío público (int por ciento)

Escala de vacío públicoPorcentaje(int porcentajeX, int porcentajeY)

Función escala de vacío público absoluto (int nuevo ancho, int nuevo alto) establece directamente el tamaño de visualización función porcentaje de escala de vacío público (int por ciento) establece la proporción de visualización, por ejemplo escalaPercent (50) significa que el tamaño de visualización es 50 de; la función de tamaño original Porcentaje de escala (IntPercent X, IntPercent) es la relación de visualización de la altura y el ancho de la imagen.

Si es necesario girar la imagen en un cierto ángulo antes de mostrarla 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.PI/ 6.

6. Procesamiento 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 podrán exportar a documentos PDF. Puede utilizar chino en su documento con el siguiente código:

BaseFont BF Chinese = fuente base create font(" ST song-Light ", " UniGB-UCS2-H ", fuente base.

not_embedded);

com . lowa gie . texto fuente chino = nuevo com . lowa gie texto (BF chino, 12, com . lowa gie . texto . fuente . p>

Párrafo = nuevo párrafo (" hola ", fuente china);

Resumen

iText también tiene muchas funciones avanzadas, que no se presentarán aquí. Consulte los documentos publicados para conocer el desarrollo específico. En general, iText es un buen componente para crear archivos PDF en el entorno Java. Dado que iText admite el desarrollo bajo jsp/javabean, puede resolver problemas de informes en aplicaciones B/S. Debido a que iText no está diseñado para generar informes, el contenido y el formato de todos los informes deben realizarse escribiendo código. En comparación con el software de informes profesional que admite el diseño visual, la carga de trabajo de programación ha aumentado hasta cierto punto.