Cómo convertir HTML a PDF usando iText
iText es un proyecto del famoso sitio 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 sencilla. Descargue el archivo iText.jar en el sitio web de descarga /iText/download.html. Sólo necesita agregar la ruta iText.jar al CLASSPATH del sistema y podrá hacerlo. Utilice iText en la biblioteca de clases.
2. Cree el primer documento PDF
Usar iText para generar un documento PDF requiere cinco pasos:
① Crear com.lowagie.text.
Documento documento = nuevo 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 (documento, nuevo FileOutputStream ("Helloworld.PDF"));
③ Abra el documento.
document.open();
④ Agrega contenido al documento.
document.add(new Paragraph("Hello World"));
⑤ Cierra el documento.
document.close();
A través de los cinco pasos anteriores, puede generar un archivo Helloworld.PDF con el contenido de "Hello World".
Crear una instancia del objeto com.lowagie.text.Document
El objeto com.lowagie.text.Document tiene tres constructores. El objeto Document tiene tres constructores:
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 constructora es el tamaño de la página del documento. la primera función constructora, la página El tamaño es A4, que tiene el mismo efecto que el Documento (PageSize.A4 para la tercera función constructora, los parámetros marginLeft, marginRight, marginTop y marginBottom representan la izquierda, la derecha, la parte superior y); márgenes inferiores respectivamente.
El parámetro pageSize le permite establecer el tamaño de la página, el color de fondo y las propiedades de la página horizontal/vertical. 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); La página se puede configurar en orientación horizontal mediante el método Rectángulo rotar().
Objetos 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 método de enlace, el creador, el productor, la fecha de creación y otras propiedades del documento. El método 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 público booleano(Autor de cadena)
addCreator booleano público(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 y addHeader solo es válido para documentos html y se utiliza para agregar la información del encabezado de el documento.
Al 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. Llame a este método:
setPageSize booleano público (Tamaño de página rectangular)
p>
añadir 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 de Acrobat Reader al abrir el documento, como si se muestra una sola página o si se muestra. mostrar en pantalla completa y si se debe ocultar la barra de estado y otras propiedades.
Además, iText también proporciona protección de seguridad para documentos PDF. A través del método setEncryption del Writer (Writer), puede configurar la contraseña de usuario, solo lectura, imprimible y otros atributos del documento.
Agregar contenido al documento
Todo el contenido agregado al documento se basa en objetos, como frases, párrafos, tablas y gráficos. 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 (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));
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). UNDERLINE));
Una frase (Frase) consta de 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). la fuente ha sido configurada. 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.
4. Procesamiento de tablas
Las clases de procesamiento de tablas en iText son: com.lowagie.text.Table y com.lowagie.text.PDF.PDFPTable, para un procesamiento de tablas más simple, puede use com.lowagie.text.Table, pero si desea trabajar con tablas más complejas, use com.lowagie.Table. Table, pero si desea manejar formularios complejos, debe usar com.lowagie.text.PDFTable y com.lowagie.text.PDFPTable. La clase com.lowagie.text.Table se describe a continuación.
La clase com.lowagie.text.Table tiene tres constructores:
①Table (int columnas)
②Table (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. Se debe especificar el número de columnas al crear 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.
A continuación se muestra un ejemplo sencillo de cómo utilizar una tabla, el código es el siguiente:
1:Table table = new Table (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:cell.setHeader( true);
8:celda. 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") .Agregar celda;
24:table.addCell("cell test2");
Ejecutar de la siguiente manera:
Encabezado
Ejemplo de celda 1.1 2.1 con colspan 1 y rowspan 2
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, que crea una tabla con 3 columnas y establece el ancho del borde en 1, el color en azul y la configuración de espaciado serif en 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 (verdadera) es para mostrar las celdas como información del encabezado; las celdas ocupan 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 la línea 10; de lo contrario, cuando la tabla abarca toda la página, la información del encabezado no se mostrará.
Las líneas 11 a 14 del código agregan celdas con un ancho de una tabla y una longitud de dos filas.
Al agregar celdas a la tabla, agréguelas en orden de izquierda a derecha y de arriba a abajo. Por ejemplo, si se ejecutan 11 líneas de código, hay 2 filas y 2 columnas 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 esta secuencia de suma.
5. Procesamiento de imágenes
La clase de procesamiento de formularios en iText es com.lowagie.text.Image. Los formatos de imagen actualmente 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. Utilice el siguiente código para obtener ejemplos de imágenes gif, jpg y png respectivamente.
Imagen gif = Image.getInstance("vonnegut.gif");
Imagen jpeg = Image.getInstance("myKids.jpg"); png = Image.getInstance("hitchcock.png");
Posición de la imagen
La posición de la imagen se refiere principalmente a la alineación de la imagen en el documento, la posición de la imagen y el posición del texto relación entre.
IText se procesa a través de la función public void setAlignment (int alineación). Cuando el parámetro Alineación es Image.RIGHT, Image.MIDDLE e Image.LEFT, significa alineación a la derecha, alineación central y alineación a la izquierda respectivamente; Image.TEXTWRAP, Image.UNDERLYING se refieren respectivamente a la visualización de texto que rodea los gráficos y a la visualización de texto con los gráficos como fondo. Estos dos parámetros se pueden usar en combinación para lograr el efecto deseado. Por ejemplo, el efecto mostrado por setAlignment (Image.RIGHT|Image.TEXTWRAP) es que la imagen está alineada a la derecha y el texto se muestra alrededor de la imagen.
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:
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, por ejemplo, scalePercent (50) significa que el tamaño de visualización es el 50% del tamaño original; (int percentX, int percentY) significa la altura de la imagen y la relación de visualización del ancho.
4. 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. Con el siguiente código, puedes utilizar chino en tu documento:
BaseFont bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);
com.com.lowagie.text.Font.NORMAL);
Párrafo=nuevo párrafo("Hola", FontChinese);
Resumen
iText tiene muchas funciones avanzadas, que no se presentarán una por una aquí. Para obtener más información, consulte los documentos publicados por el desarrollo. En general, iText es un buen conjunto de componentes para crear archivos PDF en el entorno Java. Debido a que iText admite el desarrollo jsp/javabean, generar informes en aplicaciones B/S puede resolver bien el problema. Dado que iText no está diseñado específicamente 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 en la programación aumentará hasta cierto punto.