Hoje vamos ver o ITEXT Uma biblioteca PDF no Java que nos permite criar, analisar, modificar e manter documentos No formato pdf O ITEXT não é usado apenas por Java também é usado em .NET, Android e GAE para fornecer suas aplicações com PDF.
O que o ITEXT nos fornece?
IText é uma biblioteca PDF que nos permite criar, adaptar, revisar e manter documentos no formato do documento PDF, alguns dos principais recursos são:
- gerar documentos e relatórios extraídos de um arquivo XML ou um banco de dados
- Crie mapas e livros, incorporando recursos interativos no formato PDF
- Adicionar marcadores, números de página, marcas d’água, e outros recursos para documentos PDF existentes de divisão ou concatenar as páginas dos arquivos PDF existentes
- preencher formulários interativos.
- Server gerado dinamicamente ou manipular documentos PDF em um navegador da Web.
java itext pdf – criando um pdf em java com o ITEXT
- adicionar as livrarias e cre Master Class
- Criando o documento e metadados
- Criamos nossa primeira página
- adicionar mais itens do ITEXT ao nosso PDF
- Uso de tabelas em ITExt: PDFTPABLE
- resultado final (código completo)
- documentação usada
software e ferramentas usadas
- netbeans
- java
- itext pdf
Adicionar as livrarias e criar classe
vamos começar a baixar a versão mais recente desta biblioteca, você pode acessar o SourceForge ou download a partir deste link: download do ITEXT do SourceForge.
Configuramos o projeto
Para este projeto, vamos usar o NetBeans que fornece um grande suporte para o desenvolvimento de aplicativos com Java.
Abrimos o NetBeans e procuramos a nova opção de projeto, quando o assistente abriu, selecionamos Java > aplicativo java, então só lhe daremos um nome ao nosso projeto e seu Ubic ization.
Você pode usar qualquer outro ide para java, tudo o que você realmente precisa é adicionar as bibliotecas do ITEXT.
Criamos classe
para criar um Nova classe Estamos no projeto e no menu pop-up, selecionamos novos > Java classe, lá vamos introduzir o nome da classe e o pacote onde queremos localizar, No meu caso:
- classe de classe: generatepdffffffffffffffilitext.java
- pacote: org.xulescode.itext
este código tem como objetivo ser O mais simples possível, então colocaremos todo o código dentro do método: Public Void CreatePDF (arquivo pdfnewfile) para poder seguir como um script à medida que criamos um documento PDF e uma variáveis de origem e um local para uma imagem que Use no exemplo:
package org.xulescode.itext;import com.itextpdf.*;import java.io.*; /** * Example of using the iText library to work with PDF documents on Java, * lets you create, analyze, modify and maintain documents in this format. * Ejemplo de uso de la librería iText para trabajar con documentos PDF en Java, * nos permite crear, analizar, modificar y mantener documentos en este formato. * * @author xules You can follow me on my website http://www.codigoxules.org/en * Puedes seguirme en mi web http://www.codigoxules.org */public class GeneratePDFFileIText { private static final Font chapterFont = FontFactory.getFont(FontFactory.HELVETICA, 26, Font.BOLDITALIC); private static final Font paragraphFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL); private static final Font categoryFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD); private static final Font subcategoryFont = new Font(Font.FontFamily.TIMES_ROMAN, 16, Font.BOLD); private static final Font blueFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL, BaseColor.RED); private static final Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD); private static final String iTextExampleImage = "/home/xules/codigoxules/iText-Example-image.png"; /** * We create a PDF document with iText using different elements to learn * to use this library. * Creamos un documento PDF con iText usando diferentes elementos para aprender * a usar esta librería. * @param pdfNewFile <code>String</code> * pdf File we are going to write. * Fichero pdf en el que vamos a escribir. */ public void createPDF(File pdfNewFile) { // Aquí introduciremos el código para crear el PDF. }}
Criando o documento e metadados
neste Primeiro passo com Java IText PDF Precisamos criar um documento para trabalhar com ele e adicioná-lo As diferentes páginas que precisamos para o nosso exemplo: documento do documento = novo documento ();, uma vez criado, vamos associar o documento de trabalho ao arquivo de saída, isso será feito com o método com.itextpdf.text.pdf.pdfwer, isso é O código que precisamos:
// We create the document and set the file name. // Creamos el documento e indicamos el nombre del fichero. try { Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream(pdfNewFile)); } catch (FileNotFoundException fileNotFoundException) { System.out.println("No such file was found to generate the PDF " + "(No se encontró el fichero para generar el pdf)" + fileNotFoundException); } document.open(); // AQUÍ COMPLETAREMOS NUESTRO CÓDIGO PARA GENERAR EL PDF document.close(); System.out.println("Your PDF file has been generated!(¡Se ha generado tu hoja PDF!"); } catch (DocumentException documentException) { System.out.println("The file not exists (Se ha producido un error al generar un documento): " + documentException); }
Agora vamos adicionar informações ao nosso documento criado com Java IText PDF, digitando os metadados, estes são adicionados diretamente nos valores Do documento previamente definido: documento:
// We add metadata to PDF // Añadimos los metadatos del PDF document.addTitle("Table export to PDF (Exportamos la tabla a PDF)"); document.addSubject("Using iText (usando iText)"); document.addKeywords("Java, PDF, iText"); document.addAuthor("Código Xules"); document.addCreator("Código Xules");
Criamos nossa primeira página
Para a criação da primeira página, usaremos os elementos gerais:
- com.itextpdf.text.cunk: A menor parte que pode ser adicionada a um documento, a maioria dos elementos pode ser dividida Em vários pedaços e basicamente é uma string com uma determinada fonte.
- com.itextpdf.text.Image: representação gráfica de imagens que podemos usar: jpeg, png ou gif.
- com.itextpdf.text.Text.Toach: é uma série de pedaços.
e o elemento com.itextpdf.text.capter que usamos para adicionar uma seção especial e que é Onde vamos pendurar neste exemplo os itens acima mencionados, você pode consultá-lo no código:
// First page // Primera página Chunk chunk = new Chunk("This is the title", chapterFont); chunk.setBackground(BaseColor.GRAY); // Let's create de first Chapter (Creemos el primer capítulo) Chapter chapter = new Chapter(new Paragraph(chunk), 1); chapter.setNumberDepth(0); chapter.add(new Paragraph("This is the paragraph", paragraphFont)); // We add an image (Añadimos una imagen) Image image; try { image = Image.getInstance(iTextExampleImage); image.setAbsolutePosition(2, 150); chapter.add(image); } catch (BadElementException ex) { System.out.println("Image BadElementException" + ex); } catch (IOException ex) { System.out.println("Image IOException " + ex); } document.add(chapter);
Adicione mais elementos do ITEXT ao nosso PDF
Agora, simplesmente adicione alguns itens à nossa nova página para manter os itens de teste, primeiro de tudo que criamos um novo capítulo ao qual somos nomeados usando com.itextpdf.text.Parágrafo, também criamos outro que adicionaremos abaixo:
// Second page - some elements // Segunda página - Algunos elementos Chapter chapSecond = new Chapter(new Paragraph(new Anchor("Some elements (Añadimos varios elementos)")), 1); Paragraph paragraphS = new Paragraph("Do it by Xules (Realizado por Xules)", subcategoryFont);
para mostrar que muitas coisas podem ser feitas, adicionamos um exemplo de como sublinhar um parágrafo com um parágrafo Uma linha pontilhada, Exemplo retirado do blog Java IText PDF, e em que o elemento é usado com.itextpdf.text.pdf.draw.dottedline.pdf.draw.dottedlinesporator que desenha uma linha pontilhada da esquerda para a direita:
// Underline a paragraph by iText (subrayando un párrafo por iText) Paragraph paragraphE = new Paragraph("This line will be underlined with a dotted line (Está línea será subrayada con una línea de puntos)."); DottedLineSeparator dottedline = new DottedLineSeparator(); dottedline.setOffset(-2); dottedline.setGap(2f); paragraphE.add(dottedline); chapSecond.addSection(paragraphE);
Para fazer um simples exemplo de listas, adicionamos do exemplo: lista exemplos do ITEXT, simplesmente para mostrar um exemplo de uso e ver como é simples para executar com .itextpdf.text.list:
No final, não podemos esquecer Adicionar nosso código ao documento com o documento.Add (…).
Usando tabelas em itext: pdfvertable
nesta seção, nos concentramos no uso do com.itextpdf.text.pdf.pdffptable Criando um Nova página, que se tornará vários como veremos, para o comprimento da tabela que implementaremos para ver a operação de com.itextpdf.text.pdf.pdfftable.
Em primeiro lugar no código Adicionamos vários itens a adicionar title e legendas, que não vou explicar mais porque usamos elementos anteriormente explicados e para mais detalhes, você pode vê-lo diretamente no código.
vamos focar no com.itextpdf.text .pdf.pdfftable que é um elemento que nos permite criar uma tabela cuja posição pode ser absoluta, mas também pode ser adicionada diretamente ao documento. Neste exemplo, simplesmente adicionamos texto, mas será muito útil preencher, por exemplo, com os dados obtidos no banco de dados.
As etapas seguimos com o seguinte e você pode consultá-los no código:
- Criamos a tabela: tabela pdfptable = Novo PDFPTEBLE (Numcolumns);
- Adicione as guias da tabela: Columnheader = novo PDFPCell (nova frase (“col” + coluna);
- Preenchemos o conteúdo da tabela com um loop para adicionar cada célula com o código: table.addcell (“linha” + linha + “- col” + coluna;
- Finalmente, adicionaremos a tabela ao documento, adicionando-a neste caso (não precisa ser assim) para o parágrafo, criamos no começo para que seja a seguir.
Este é o código:
// How to use PdfPTable // Utilización de PdfPTable // We use various elements to add title and subtitle // Usamos varios elementos para añadir título y subtítulo Anchor anchor = new Anchor("Table export to PDF (Exportamos la tabla a PDF)", categoryFont); anchor.setName("Table export to PDF (Exportamos la tabla a PDF)"); Chapter chapTitle = new Chapter(new Paragraph(anchor), 1); Paragraph paragraph = new Paragraph("Do it by Xules (Realizado por Xules)", subcategoryFont); Section paragraphMore = chapTitle.addSection(paragraph); paragraphMore.add(new Paragraph("This is a simple example (Este es un ejemplo sencillo)")); Integer numColumns = 6; Integer numRows = 120; // We create the table (Creamos la tabla). PdfPTable table = new PdfPTable(numColumns); // Now we fill the PDF table // Ahora llenamos la tabla del PDF PdfPCell columnHeader; // Fill table rows (rellenamos las filas de la tabla). for (int column = 0; column < numColumns; column++) { columnHeader = new PdfPCell(new Phrase("COL " + column)); columnHeader.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(columnHeader); } table.setHeaderRows(1); // Fill table rows (rellenamos las filas de la tabla). for (int row = 0; row < numRows; row++) { for (int column = 0; column < numColumns; column++) { table.addCell("Row " + row + " - Col" + column); } } // We add the table (Añadimos la tabla) paragraphMore.add(table); // We add the paragraph with the table (Añadimos el elemento con la tabla). document.add(chapTitle); document.close(); System.out.println("Your PDF file has been generated!(¡Se ha generado tu hoja PDF!");
resultado final (código completo)
Nós já concluímos nosso código para gerar um PDF com ITEXT, agora só temos que executá-lo do nosso método principal:
/** * @param args the command line arguments */ public static void main(String args) { GeneratePDFFileIText generatePDFFileIText = new GeneratePDFFileIText(); generatePDFFileIText.createPDF(new File("/home/xules/codigoxules/GeneratePDFFileIText.pdf")); }
em O link Você pode baixar o código completo deste exemplo:
geração de um PDF de Java com ITEXT
também, você pode ver o código completo diretamente:
package org.xulescode.itext;import com.itextpdf.text.Anchor;import com.itextpdf.text.BadElementException;import com.itextpdf.text.BaseColor;import com.itextpdf.text.Chapter;import com.itextpdf.text.Chunk;import com.itextpdf.text.Document;import com.itextpdf.text.DocumentException;import com.itextpdf.text.Element;import com.itextpdf.text.Font;import com.itextpdf.text.FontFactory;import com.itextpdf.text.Image;import com.itextpdf.text.List;import com.itextpdf.text.ListItem;import com.itextpdf.text.Paragraph;import com.itextpdf.text.Phrase;import com.itextpdf.text.Section;import com.itextpdf.text.pdf.PdfPCell;import com.itextpdf.text.pdf.PdfPTable;import com.itextpdf.text.pdf.PdfWriter;import com.itextpdf.text.pdf.draw.DottedLineSeparator;import java.io.*; /** * Example of using the iText library to work with PDF documents on Java, * lets you create, analyze, modify and maintain documents in this format. * Ejemplo de uso de la librería iText para trabajar con documentos PDF en Java, * nos permite crear, analizar, modificar y mantener documentos en este formato. * * @author xules You can follow me on my website http://www.codigoxules.org/en * Puedes seguirme en mi web http://www.codigoxules.org */public class GeneratePDFFileIText { // Fonts definitions (Definición de fuentes). private static final Font chapterFont = FontFactory.getFont(FontFactory.HELVETICA, 26, Font.BOLDITALIC); private static final Font paragraphFont = FontFactory.getFont(FontFactory.HELVETICA, 12, Font.NORMAL); private static final Font categoryFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD); private static final Font subcategoryFont = new Font(Font.FontFamily.TIMES_ROMAN, 16, Font.BOLD); private static final Font blueFont = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL, BaseColor.RED); private static final Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD); private static final String iTextExampleImage = "/home/xules/codigoxules/iText-Example-image.png"; /** * We create a PDF document with iText using different elements to learn * to use this library. * Creamos un documento PDF con iText usando diferentes elementos para aprender * a usar esta librería. * @param pdfNewFile <code>String</code> * pdf File we are going to write. * Fichero pdf en el que vamos a escribir. */ public void createPDF(File pdfNewFile) { // We create the document and set the file name. // Creamos el documento e indicamos el nombre del fichero. try { Document document = new Document(); try { PdfWriter.getInstance(document, new FileOutputStream(pdfNewFile)); } catch (FileNotFoundException fileNotFoundException) { System.out.println("No such file was found to generate the PDF " + "(No se encontró el fichero para generar el pdf)" + fileNotFoundException); } document.open(); // We add metadata to PDF // Añadimos los metadatos del PDF document.addTitle("Table export to PDF (Exportamos la tabla a PDF)"); document.addSubject("Using iText (usando iText)"); document.addKeywords("Java, PDF, iText"); document.addAuthor("Código Xules"); document.addCreator("Código Xules"); // First page // Primera página Chunk chunk = new Chunk("This is the title", chapterFont); chunk.setBackground(BaseColor.GRAY); // Let's create de first Chapter (Creemos el primer capítulo) Chapter chapter = new Chapter(new Paragraph(chunk), 1); chapter.setNumberDepth(0); chapter.add(new Paragraph("This is the paragraph", paragraphFont)); // We add an image (Añadimos una imagen) Image image; try { image = Image.getInstance(iTextExampleImage); image.setAbsolutePosition(2, 150); chapter.add(image); } catch (BadElementException ex) { System.out.println("Image BadElementException" + ex); } catch (IOException ex) { System.out.println("Image IOException " + ex); } document.add(chapter); // Second page - some elements // Segunda página - Algunos elementos Chapter chapSecond = new Chapter(new Paragraph(new Anchor("Some elements (Añadimos varios elementos)")), 1); Paragraph paragraphS = new Paragraph("Do it by Xules (Realizado por Xules)", subcategoryFont); // Underline a paragraph by iText (subrayando un párrafo por iText) Paragraph paragraphE = new Paragraph("This line will be underlined with a dotted line (Está línea será subrayada con una línea de puntos)."); DottedLineSeparator dottedline = new DottedLineSeparator(); dottedline.setOffset(-2); dottedline.setGap(2f); paragraphE.add(dottedline); chapSecond.addSection(paragraphE); Section paragraphMoreS = chapSecond.addSection(paragraphS); // List by iText (listas por iText) String text = "test 1 2 3 "; for (int i = 0; i < 5; i++) { text = text + text; } List list = new List(List.UNORDERED); ListItem item = new ListItem(text); item.setAlignment(Element.ALIGN_JUSTIFIED); list.add(item); text = "a b c align "; for (int i = 0; i < 5; i++) { text = text + text; } item = new ListItem(text); item.setAlignment(Element.ALIGN_JUSTIFIED); list.add(item); text = "supercalifragilisticexpialidocious "; for (int i = 0; i < 3; i++) { text = text + text; } item = new ListItem(text); item.setAlignment(Element.ALIGN_JUSTIFIED); list.add(item); paragraphMoreS.add(list); document.add(chapSecond); // How to use PdfPTable // Utilización de PdfPTable // We use various elements to add title and subtitle // Usamos varios elementos para añadir título y subtítulo Anchor anchor = new Anchor("Table export to PDF (Exportamos la tabla a PDF)", categoryFont); anchor.setName("Table export to PDF (Exportamos la tabla a PDF)"); Chapter chapTitle = new Chapter(new Paragraph(anchor), 1); Paragraph paragraph = new Paragraph("Do it by Xules (Realizado por Xules)", subcategoryFont); Section paragraphMore = chapTitle.addSection(paragraph); paragraphMore.add(new Paragraph("This is a simple example (Este es un ejemplo sencillo)")); Integer numColumns = 6; Integer numRows = 120; // We create the table (Creamos la tabla). PdfPTable table = new PdfPTable(numColumns); // Now we fill the PDF table // Ahora llenamos la tabla del PDF PdfPCell columnHeader; // Fill table rows (rellenamos las filas de la tabla). for (int column = 0; column < numColumns; column++) { columnHeader = new PdfPCell(new Phrase("COL " + column)); columnHeader.setHorizontalAlignment(Element.ALIGN_CENTER); table.addCell(columnHeader); } table.setHeaderRows(1); // Fill table rows (rellenamos las filas de la tabla). for (int row = 0; row < numRows; row++) { for (int column = 0; column < numColumns; column++) { table.addCell("Row " + row + " - Col" + column); } } // We add the table (Añadimos la tabla) paragraphMore.add(table); // We add the paragraph with the table (Añadimos el elemento con la tabla). document.add(chapTitle); document.close(); System.out.println("Your PDF file has been generated!(¡Se ha generado tu hoja PDF!"); } catch (DocumentException documentException) { System.out.println("The file not exists (Se ha producido un error al generar un documento): " + documentException); } } /** * @param args the command line arguments */ public static void main(String args) { GeneratePDFFileIText generatePDFFileIText = new GeneratePDFFileIText(); generatePDFFileIText.createPDF(new File("/home/xules/codigoxules/GeneratePDFFileIText.pdf")); }}
Este é o PDF que é obtido como um Resultado deste exemplo:
icon
.