Red de conocimiento informático - Conocimiento informático - Cómo utilizar el componente Java itext para generar pdf

Cómo utilizar el componente Java itext para generar pdf

Primero descargue este widget de código abierto desde el sitio web oficial de iText.

Sitio web oficial de iText

Versión Java del componente iText

Kit de herramientas de la versión Java

Versión C# del componente iText

Kit de herramientas de la versión C#

Aquí el autor utiliza la versión Java itext-5.2.1.

Después de descomprimir el paquete comprimido itext-5.2.1.zip, obtendrá 7 archivos: itextpdf-5.2.1.jar (componente principal), itextpdf-5.2.1-javadoc.jar (documento API ) , itextpdf-5.2.1-sources.jar (código fuente), itext-xtra-5.2.1.jar, itext-xtra-5.2.1-javadoc.jar, itext-xtra-5.2.1-sources.jar< / p>

Utilice 5 pasos para generar un documento PDF simple.

Copiar código

1 // 1. Crear objeto Documento

2 Documento _document = new Document();

3 // 2. Cree un escritor y escriba el documento en el disco a través del escritor

4 PdfWriter _pdfWriter = PdfWriter.getInstance(_document, new FileOutputStream("Ruta para generar el archivo"));

5 // 3. Abrir el documento

6 _document.open();

7 // 4. Agregar contenido al documento

8 _document.add ( new Paragraph("Hola"));

9 // 5. Cerrar el documento

10 _document.close();

Copiar código

OK, listo. Si no hay problemas, se generará un documento PDF en la ruta que especificó y el contenido será el texto sin formato "Hola".

Pero esto no satisface completamente nuestras necesidades, porque generalmente el archivo PDF que queremos generar no necesariamente está en formato de texto plano. Por ejemplo, si quiero implementar la función de imprimir órdenes de venta, entonces en. Al menos necesito dibujar una tabla. Eso es todo, ¿qué debo hacer? Continuemos nuestra investigación con el autor.

En iText, hay una clase de tabla especial, la clase PdfPTable.

El autor hizo un ejemplo de tabla simple, primero mire el código:

Copiar código

1 OutTradeList _otl = this.getOtlBiz().findOutTradeListById(this.getOtlid());

2 String _fileName = _otl.getOtlId() + ".pdf";

3

4 // iText procesa el chino

5 BaseFont _baseFont = BaseFont.createFont("STSongStd-Light", "UniGB-UCS2-H", true);

6 // 1. Crear un objeto de documento

7 Documento _document = nuevo Documento(PageSize.A4);

8

9 HttpServletResponse respuesta = ServletActionContext.getResponse();

10 respuesta.setContentType("aplicación/ pdf; charset=ISO-8859-1");

11 respuesta.setHeader("Content-Disposition", "inline; filename=" + new String(_fileName.getBytes(), "iso8859-1) ") );

12

13 // 2. Cree un escritor y escriba el documento en el disco a través del escritor

14 PdfWriter _pdfWriter = null;

15 intente {

16 _pdfWriter = PdfWriter.getInstance(_document, respuesta.getOutputStream());

17 } captura (Excepción e) {

18 this.setMessage("Error en la generación del documento, verifique si los permisos del directorio del servidor están configurados correctamente");

19 e.printStackTrace();

20 Sistema .out.println ("2. Colgado");

21 // return INPUT;

22 return null;

23 }

24 if(_pdfWriter == null) {

25 this.setMessage("Error en la generación del documento, verifique si los permisos del directorio del servidor están configurados correctamente");

26 System.out.println( "3. Colgado");

27 // return INPUT;

28 return null;

29 }

30

31 // 3. Abrir el documento

32 _document.open();

33

34 // 4. Crear los campos requeridos Elementos ingresados ​​en el documento

35 PdfPTable _table = new PdfPTable(4);

36 PdfPCell _cell = null;

37

38 _table.addCell(new Paragraph("Número de documento", nueva fuente(

_baseFont)));

39 _cell = new PdfPCell(new Paragraph(_otl.getOtlId()));

40 _cell.setColspan(3);

41 _table.addCell(_cell);

42

43 _table.addCell(new Paragraph("Nombre del cliente", nueva fuente(_baseFont)));

44 _cell = new PdfPCell(new Paragraph(_otl.getClients().getName(), new Font(_baseFont)));

45 _cell.setColspan(3);

46 _table.addCell(_cell);

47

48 _table.addCell(new Paragraph("Fecha de venta", nueva fuente(_baseFont)));

49 _cell = new PdfPCell(new Paragraph(_otl.getOutDate().toString()));

50 _cell.setColspan(3);

51 _table.addCell( _cell);

52

53 _cell = new PdfPCell();

54 _cell.setColspan(4);

55 PdfPTable _tabGoods = new PdfPTable(7);

56 //Agregar fila de encabezado

57 _tabGoods.setHeaderRows(1);

58 _tabGoods.addCell(new Paragraph ("número de serie", nueva fuente(_baseFont)));

59 _tabGoods.addCell(new Paragraph("nombre del producto", nueva fuente(_baseFont)));

60 _tabGoods .addCell(new Paragraph("Código personalizado", nueva fuente(_baseFont)));

61 _tabGoods.addCell(new Paragraph("Especificación", nueva fuente(_baseFont)));

62 _tabGoods.addCell(new Paragraph("Cantidad", nueva fuente(_baseFont)));

63 _tabGoods.addCell(new Paragraph("Precio unitario", nueva fuente(_baseFont)) ) ;

64 _tabGoods.addCell(new Paragraph("Subtotal", new Font(_baseFont)));

65 Object[] _outTrades = _otl.getOutTrades().toArray( );

66 // Agrega detalles de ventas de productos a la tabla

67 for(int i = 0; i < _outTrades.length;) {

68 if((_outTrades[i] != null) && (_outTrades[i] instancia de OutTrade)) {

6

9 OutTrade _ot = (OutTrade) _outTrades[i];

70 Bienes _goods = _ot.getGoods();

71 _tabGoods.addCell(String.valueOf((++i) ));

72 _tabGoods.addCell(new Paragraph(_goods.getName(), new Font(_baseFont)));

73 _tabGoods.addCell(_goods.getUserCode()) ;

74 _tabGoods.addCell(_goods.getEtalon());

75 _tabGoods.addCell(String.valueOf(_ot.getNum()));

76 _tabGoods.addCell(String.valueOf(_ot.getPrice()));

77 _tabGoods.addCell(String.valueOf((_ot.getNum() * _ot.getPrice())));

78 }

79 }

80 _cell.addElement(_tabGoods);

81 _table.addCell(_cell); p>

82

83 _table.addCell(new Paragraph("Total", new Font(_baseFont)));

84 _cell = new PdfPCell(new Paragraph (_otl .getAllPrice().toString()));

85 _cell.setColspan(3);

86 _table.addCell(_cell);

87

88 _table.addCell(new Paragraph("Operator", new Font(_baseFont)));

89 _cell = new PdfPCell(new Paragraph(_otl.getProcure()) ) ;

90 _cell.setColspan(3);

91 _table.addCell(_cell);

92

93 // 5 .Agregar contenido al documento y agregar la tabla al documento

94 _document.add(_table);

95

96 // 6. Cerrar el documento

97 _document.close();

98 System.out.println(_fileName);

99 this.setPdfFilePath(_fileName);

100 System.out.println("3. Listo");

101 // devuelve ÉXITO;

102 devuelve nulo;

Copiar código

El código anterior está escrito en la Acción de Struts2. Cuando el usuario envía la solicitud, el archivo PDF generado se generará directamente.

La transmisión se escribe en el cliente y, una vez que el navegador recibe la respuesta del servidor, le preguntará al usuario cómo abrirla.

Por supuesto, también podemos escribir archivos en el disco, etc.