Red de conocimiento informático - Aprendizaje de programación - Problemas al usar iText para crear PDF en JSP

Problemas al usar iText para crear PDF en JSP

I. Al utilizar Jsp o JavaBean en el lado del servidor para generar informes en PDF, el cliente utiliza hipervínculos para mostrar o descargar los informes generados, resolviendo así el problema del procesamiento de informes en el sistema B/S. Esto resuelve muy bien el problema de procesamiento de informes del sistema B/S.

2. Introducción a iText

iText es un proyecto del famoso sitio web de código abierto sourceforge. Es una biblioteca de clases de Java que se utiliza 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 simple. Descargue el archivo iText.jar desde el sitio web de descarga. Solo necesita agregar la ruta iText.jar al CLASSPATH del sistema y podrá usar la biblioteca de clases iText. en el programa.

3. Cree el primer documento PDF

Usar iText para generar un documento PDF requiere cinco pasos:

① Cree el objeto com.lowagie.text.Document Ejemplo.

Documento documento = new Documento();

② Cree un escritor (Escritor) asociado con el objeto del documento, a través del cual el documento se puede escribir en el disco.

PDFWriter.getInstance(document, new FileOutputStream("Helloworld.PDF"));

③ Abra el documento.

document.open();

④ Agrega contenido al documento.

document.add(new Paragraph("Hola Mundo"));

⑤ Cierra el documento.

document.close();

A través de los cinco pasos anteriores, puede generar un archivo Helloworld.PDF que contenga contenido "Hello World".

Crea una instancia de com.lowagie.text.Document(Rectangle pageSize). Documento(Tamaño de página rectangular);

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

int marginLeft,

int marginRight,

int marginTop

p>

p>

int marginBottom);

El parámetro pageSize del constructor es el tamaño de la página del documento. Para el primer constructor, el tamaño de página es A4, que tiene el mismo. efecto como Document(PageSize.A4); Para el tercer constructor, el tamaño de página es A4, que tiene el mismo efecto que Document(PageSize.A4). A4) tiene el mismo efecto; para el tercer constructor, los parámetros marginLeft, marginRight, marginTop y marginBottom representan los márgenes izquierdo, derecho, superior e inferior respectivamente.

El parámetro pageSize le permite establecer el tamaño de la página, el color de fondo y los atributos horizontales/verticales de la página.

iText define los tipos de papel A0-A10, AL, CARTA, MEDIA CARTA, _11x17, LEDGER, NOTA, B0-B5, ARCH_A-ARCH_E, FLSA y FLSE, y también se puede utilizar con el parámetro FLSE. Tipo de papel, como Tamaño de página rectangular = nuevo Rectángulo (144, 720); el papel también se puede personalizar. El método Rectángulo rotar() establece la página en orientación horizontal.

Objeto Writer

Después de crear un objeto de documento, debe crear uno o más objetos Writer asociados con él. Un documento específico se puede formatear en el formato requerido a través del objeto Writer. Por ejemplo, com.lowagie.text.PDF.PDFWriter puede guardar el documento como PDF y com.lowagie.text.html.Writer puede guardar el documento como HTML. .

Establecer propiedades del documento

Antes de abrir el documento, puede establecer el título, el tema, el autor, las palabras clave, el enlace, el creador, el productor, la fecha de creación y otras propiedades del documento. Los métodos llamados son:

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

addSubject público booleano (asunto de cadena)

addKeywords booleanos públicos (palabras clave de cadena)

public boolean addAuthor(Autor de cadena)

public boolean addCreator(Creador de cadena)

public boolean addProducer()

public boolean addCreationDate()

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 la información del encabezado del documento.

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

setPageSize público booleano (Tamaño de página rectangular)<. /p>

agregar booleano público (marca de agua de marca de agua)

eliminar public voidWatermark()

setHeader public void (encabezado HeaderFooter)

resetHeader public void ( )

public voidsetFooter(pie de página de encabezado)

public void resetFooter()

public void resetPageCount()

public void setPageCount(int pageN)

Si desea establecer propiedades de página para la primera página, debe llamar a estos métodos antes de abrir el documento.

Para documentos PDF, iText también proporciona propiedades de visualización del documento. Al llamar al método setViewerPreferences del escritor, puede controlar las propiedades de visualización del lector Acrobat al abrir el documento, como por ejemplo si se muestra una sola página. o si se mostrará en pantalla completa, si se ocultará la barra de estado y otras propiedades.

Además, iText también proporciona protección de seguridad para archivos PDF. A través del método setEncryption del escritor (Writer), puede configurar la contraseña de usuario, solo lectura, imprimible y otros atributos del documento.

Agregar contenido del documento

Todo el contenido agregado al documento se basa en objetos, como frases, párrafos, tablas y objetos gráficos. El más utilizado es el objeto Párrafo, que se utiliza para agregar un párrafo de texto al documento.

4. Procesamiento de texto

iText utiliza fragmentos de texto (Chunk), frases (Phrase) y párrafos (Pagraph) para procesar el texto.

El bloque de texto (Chunk) 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 genera una cadena con la fuente HELVETICA, tamaño 10 y subrayado:

Chunk chunk1 = new Chunk("Este texto está subrayado", FontFactory.getFont(FontFactory.HELVETICA, 12. Font. UNDERLINE));

Bloque de texto Chunk1 = new Chunk("Este texto está subrayado", FontFactory.getFont(FontFactory.UNDERLINE));

Frase (Frase) Compuesto por uno o más bloques de texto (Chunk), una frase (Frase) puede establecer la fuente, pero no es válida para el bloque de texto (Chunk) en el que se configuró la fuente. Se puede agregar un fragmento de texto (Chunk) a una frase (Phrase) mediante la función miembro add de frase (Phrase), como por ejemplo: frase6.add(chunk

Un párrafo (pagraph) consta de uno; o más textos Está compuesto por fragmentos (Chunks) o frases (Phrase), lo que equivale al concepto de párrafos en los documentos WORD. También puede configurar el tamaño de fuente, el color y otros atributos de los párrafos. 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 setAlignment 1 es alineación central, 2 es alineación derecha y 3 es alineación izquierda.

5. Procesamiento de tablas

Las clases de procesamiento de tablas en iText son: com.lowagie.text.Table y com.lowagie.text.PDF.Table. Pero si desea manejar tablas complejas, necesita las clases com.lowagie.text.Table y com.lowagie.text.PDF. La clase com.lowagie.text.Table se describe a continuación.

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

① Tabla (int columnas)

② Tabla (int columnas, int filas)

③ 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 una tabla, puede establecer las propiedades de la tabla, como el ancho del borde, el color del borde, el tamaño serif (espacio de relleno, el espacio entre celdas) y otras propiedades. El siguiente es un ejemplo simple de cómo usar una tabla, el código es el siguiente:

1: Tabla tabla = nueva Tabla (3);

2: table.setBorderWidth ( 1);

3: table.setBorderColor (nuevo color (0, 0, 255));

4: table.setPadding(5); 5: table.setSpacing( 5);

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

7: celda.setHeader(true);

8: celda. setColspan(3);

9: table.addCell(celda);