itext tutorial convert data pdf report using java itext
Este tutorial do iText discute como manipular dados em massa em um formulário único e seguro de relatório em PDF usando Java e a biblioteca do iText:
O iText é a ferramenta para gerar um relatório consolidado onde podemos manipular dados em massa em uma única forma de entidade que contém informações significativas.
iText é uma biblioteca Java PDF usada para criar e manipular documentos PDF por meio do desenvolvimento de programas Java. Alguns dos recursos da biblioteca do iText incluem a geração de documentos PDF interativos, adição de marcadores, salvar PDFs como arquivos de imagem, dividir e mesclar PDFs existentes em vários PDFs, etc.
O que você aprenderá:
- Por que o iText?
- O que é o iText?
- Como iniciar o relatório iText?
- Como chamar o relatório por meio de JSP?
- Como os testadores podem iniciar o relatório?
- Como chamar em JavaScript (JS)?
- Como construir a função no relatório Java?
- Tratamento de alertas e exceções
- Servidores
- Alinhamento em Itext Java
- Quem pode usar o iText?
- Conclusão
Por que o iText?
Funciona em um ambiente versátil de Relatório Automatizado que é produzido por servidores específicos como Apache Tomcat, JBoss, Junit. Ele fornece um documento definido pelo usuário de acordo com as necessidades do usuário.
O iText é orientado para a segurança?
Ele oferece maneiras pelas quais os documentos podem ser recuperados com base em operações relacionadas à segurança, como proteção por senha ou validação de dados do usuário, como abrir o recibo de pagamento inserindo os detalhes do PAN.
Hoje em dia, geralmente preferimos salvar os dados em cópias eletrônicas em vez de cópias impressas. É melhor armazenar relatórios em servidores do que em papéis. Sempre que precisar do relatório, basta executar o arquivo Java e gerá-lo ali mesmo.
Neste artigo, vamos tentar encontrar a solução para as seguintes questões:
abra um arquivo xml no excel
- Podemos usar multifuncionalidade?
- Se é usado apenas para preparar relatórios?
- Onde podemos usar o Itext?
- Se ele pode criar o novo relatório?
- Eu sou um testador, isso é útil para mim?
O que é o iText?
A saída da ferramenta iText é um relatório PDF integrado por Java. Isso herda os comportamentos e componentes do PDF e gera um relatório compatível.
O iText é uma API de código aberto com um ambiente cooperativo, participação em pleno desenvolvimento, penetração de luz do Prisma e a base da geração de relatórios.
Por exemplo: Considere um exemplo de uma passagem da Indian Railways. Aqui, queremos a impressão do resumo detalhado do processo de passagem, desde a pesquisa de disponibilidade de assentos até a reserva da passagem.
A seguir, entenderemos como o iText pode nos ajudar com esse requisito.
Algumas das características são as seguintes:
- Resumo completo do aplicativo (CSA)
- Detalhes de rastreamento fácil (ETD)
- Processamento fácil do aplicativo (EPA)
Como iniciar o relatório iText?
É fácil abordar o Itext por meio de Java. É ilustrado com a ajuda de um exemplo.
O Analista de Negócios (BA) obtém o Documento do Processo de Negócios (BPD) e o Documento de Especificação Funcional (FSD) do cliente, o que explica suas expectativas em relação ao aplicativo.
Tomemos um cenário. BA trouxe vários requisitos sobre o enquadramento de relatórios, bem como como nosso produto básico pode dar suporte a isso. Tais especificações de clientes de renome nos fazem pensar em não perder o projeto de forma alguma por causa de múltiplas confusões e dilemas sobre como conseguir o relatório de maneira compatível.
Por que essa confusão surge nos Relatórios gerados?
Isso ocorre porque os dados presentes no aplicativo apenas mostram o reflexo dos dados no Relatório. Ele não se move para verificar cada nó no aplicativo (por exemplo, como é feito na varredura de ressonância magnética). Portanto, é a maneira mais fácil.
Sim, exatamente. Mas nosso cliente espera que os dados sejam dinâmicos. Com base nos dados disponíveis, o relatório deve ser gerado de forma dinâmica.
Vamos discutir isso com um exemplo em tempo real.
Cenário 1: Os dados estáticos podem ser codificados e gerar relatórios. Aqui, o valor do empréstimo e o valor da propriedade não mudam antes do desembolso.
Encontre a imagem abaixo para o cenário acima:
Cenário 2 : Nesse cenário, o valor da propriedade aumenta dia a dia e o principal do valor do empréstimo deve ser reduzido a cada ano e, portanto, os dados previstos são dinâmicos.
Um cliente pode vir e nos abordar para fornecer os detalhes de vários anos financeiros, porque ele mudou o mandato e, com base nisso, o EMI foi alterado. Se você codificou os dados como mostrado na figura abaixo, você será pego em flagrante.
Considere o caso em que o relatório deve ser dinâmico. Não podemos apresentar como está. Temos que fazer a inspeção técnica e examinar os requisitos claramente antes de iniciar o desenvolvimento e os testes.
Devemos nos concentrar muito claramente na parte do design, onde a aprovação é feita pelo Analista de Negócios. É uma boa abordagem porque quaisquer questões UAT levantadas posteriormente não podem ser apontadas para nós. A solução para este problema de geração dinâmica de relatórios é prevista simplesmente pelo uso de conceitos Java na geração de um relatório.
Como chamar um relatório?
O diagrama abaixo ilustra o processo para gerar um relatório:
Como chamar o relatório através de JSP?
Onde quer que chamemos Java, é necessário fazer um design de IU, pois isso funcionará como um mapa-guia para prosseguir do front end. É uma maneira fácil de aprendermos a chamada Report.
Vamos considerar um exemplo:
Software Report
Podemos configurar o relatório desta forma:
- Nome do relatório: Relatório de software (exibição no aplicativo)
- Relatório de chamadas por meio de JS: Relatório de amostra
- Menu para soltar: Vários relatórios podem ser integrados
- Ao clicar: Função JavaScript
Como os testadores podem iniciar o relatório?
Os testadores geralmente preferem o teste de regressão por meio de scripts de automação usando a estrutura Cucumber, a estrutura orientada a palavras-chave e a estrutura orientada a dados.
Para fornecer o relatório com base nos requisitos do cliente, podemos prosseguir com a arquitetura pronta, ou seja, o iText, onde a ferramenta embutida herda as propriedades e o comportamento do arquivo relator, bem como os artefatos a serem entregues.
Os testadores podem fazer o relatório consolidado, como Lista de Bug Remanescente (RBL), porcentagem de resultados de teste, mapeamento de id de bug com base nas respectivas fases, como SIT, UAT e teste de produção usando o iText Java.
Considere um cenário que precisa configurar vários relatórios.
O código a seguir ilustra como usar em JSP, que é o que vemos no front end. O seguinte método é usado:
Software Report Software Report1 Software Report2
Como chamar em JavaScript (JS)?
Geralmente, podemos fazer validações em JS, mas você pode fazer isso até em Java. O executor JavaScript foi incluído em nosso pacote para chamar a função e invocar o programa para gerar um relatório que é muito compatível.
Pode ser usado para invocar (chamar) o método com um objeto proprietário como argumento.
Function onload(){ String ReportName=””; if(ReportName==' Sample Report'){ var applnNum=''; //It is passing Application Number from the session which is active var UrlToPass = SchedulerServlet?action=samplereport &SubAction=StandardRepose &ReportName='+ ReportName +'& applnNum ='+ applnNum } }
O método acima lida com o carregando() função que pode ser chamada no aplicativo para ser muito versátil que aciona a URL para gerar relatório.
Como construir a função no relatório Java?
Java trata dos alertas e exceções do programa e também executa a geração do relatório.
Vamos ilustrar isso com a ajuda de um exemplo.
Document Doc =new Document ();
É a forma de criação do documento e também a plataforma que integra o relatório.
Doc.open();
O comando acima é usado para abrir o documento. É importante incluir este comando como se não estivesse incluído, ele lançará uma exceção de documento.
Doc.close();
O comando acima é usado para fechar o documento que indica à JVM que o documento aceitou interromper a gravação. É importante incluir este comando como se não estivesse incluído, ele lançará uma exceção de documento.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
O comando acima mostra o documento que integra as propriedades do PDF através do PDFWriter, chama o documento e o torna visível.
Paragraph para = new Paragraph ();
Um parágrafo escreve a instância do conteúdo do autofit e também as linhas principais do requisito.
Doc.setpercentage(%to be given);
No comando acima, um documento foi chamado ao chamar o PDF para ser compatível, conforme definido pela porcentagem incluída.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
O comando acima exibe o nome do documento, incluído entre aspas duplas, e o local especificado para armazenar o arquivo assim que o relatório for clicado.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Aqui, mostra como configurar a Versão PDF na geração do Relatório.
como fazer um array genérico em java
document. setPageSize (PageSize.A4);
Também podemos definir o tamanho da página de como o relatório deve ser entregue com base nos requisitos. O tamanho da página como A3, A4, A5, etc.
document. setMargins(24, 43, 34, 43);
Podemos usar a funcionalidade acima para definir as margens e podemos usar o método autofit para ajustá-lo normalmente ao documento.
document.setMarginMirroring(true);
O comando acima exibe o método de configuração do espelho de margem.
Tratamento de alertas e exceções
É importante lidar com os alertas e exceções em Java.
Alguns dos alertas que encontramos durante o tempo de execução estão listados abaixo:
- Exceção NoSuchElement
- Null Pointer Exception
- Limite de índice de matriz de exceção
- Erro de afirmação
- Exceção de alerta não tratada
- Exceção SQL
- Exceção de tempo limite
- Exceção de Documento
Às vezes, o desenvolvedor também pode imprimir a exceção de um bloco try-catch. A exceção está incluída no bloco catch.
Exemplo:
try{ Scanner in= new Scanner(System.in); Int n; System.out.println(“Enter the number to check:” +n); n=in.nextInt(); If(n%2==0){ System.out.println(“Even Number ”); }else{ System.out.println(“ODD Number”); } }catch(Exception e){ e.printstacktrace(); System.out.println(“Exception occurred:” +e); }
Resultado de amostra: cenário positivo
Digite o número a verificar: 2
Numero par
Saída de amostra: Cenário negativo
Digite o número para verificar: a
Ocorreu uma exceção: Exceção de formato ilegal
Explicação:
Um número deve ser fornecido como entrada porque definimos 'n' como um inteiro no exemplo de código acima. Se inserirmos quaisquer alfabetos onde ele tenta obter o Remanescente (% módulo usado), ele não recuperará nenhum dado e apenas lançará a exceção usando o bloco catch.
A diferença exata entre Erro e Exceção em Java:
Um erro irá impedi-lo de executar o programa, mas uma exceção será detectada durante a execução do programa e não interromperá sua execução.
Registrando um registro de arquivo:
Escrever o log para cada método ou módulo nos faz identificar onde a JVM para de ser executada. Um Log geralmente mostra o valor onde está armazenado no arquivo de log especificado e de que maneira o processador executa o Programa Java no aplicativo.
Diferença entre System.out.println (SOP) e Log:
Ambos imprimem o valor ou mostram o que quer que o conteúdo seja inserido entre aspas. Mas o diferenças entre esses dois são: Enquanto o programa está em execução, o aplicativo imprime os valores no console pelo comando SOP. Mas, uma vez que apagamos o conteúdo do console, é difícil encontrar o valor. Isso também acontece quando temos vários SOPs.
Basicamente, o comando Log factory pode recuperar e atualizar os valores. Podemos visualizar o arquivo de log a qualquer custo porque ele grava a cada vez a cada execução com a data e hora do sistema.
Exemplo:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servidores
Os servidores desempenham um papel importante na empresa, pois podem determinar se a execução do programa é aprovada ou não.
Os servidores locais são os servidores onde podemos executar o programa em nossa máquina local. Podemos usar os seguintes servidores locais:
- Apache Tomcat
- JBoss
Assim que o código estiver Estado pronto, ele deve ser implantado no servidor especificado e requer uma reinicialização. Podemos usar os seguintes servidores:
- Oracle Weblogic
- IBM Websphere
Programa de amostra:
Considere o programa onde ele poderia processar a implementação do iText.
/****Importings Header Functions package pkg_Name import java.util.HashMap; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.ommons.logging.Log; import com.commons.logging.LogFactory; /** * Implementing Report for generating Report */ public class ReportsController extends HttpServlet { private static Log Log = LogFactory.getLog(ReportsController.class); /** * Default constructor Used in the method. */ public ReportsController() { TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doPost(request, response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws ServletException, IOException { String action = null; try { Action = pRequest.getParameter('action'); if(Log.isDebugEnabled()) log.debug('action '+action); if(action != null) { Action = Action.trim(); if(Action.equals('createReport')) { createReport(pRequest,pResponse); }}} catch(Exception Ex) { Log.fatal('Exception in ReportsController: '+pEx.toString()); } } // Get the Report name from UI private void createReport(HttpServletRequest pRequest, HttpServletResponse pResponse) throws Exception { if(log.isDebugEnabled()) log.debug('createReport '); String nameofReport = null; try { nameofReport = pRequest.getParameter('ReportName'); if(log.isDebugEnabled()) log.debug('nameofReport '+nameofReport); if(nameofReport != null) { nameofReport = nameofReport.trim(); if(nameofReport.equals('FirstRepo')) { getFirstRepo (pRequest,pResponse); } if(nameofReport.equals('SecondRepo')) { getSecondRepo (pRequest,pResponse); }}} catch(Exception pEx) { log.print('Exception in createReport - while getting Connection: '+pEx.toString()); } } // Add for FirstRepo private void getFirstRepo(HttpServletRequest pRequest, HttpServletResponse pResponse) throws Exception { if(log.isDebugEnabled()) log.debug('getFirstRepo '); String Url = null; String Referno = null; String lproductDesc = null; String lFileName = null; RequestDispatcher requestDispatcherObj = null; try { Referno = pRequest.getParameter('ApplNum'); productDesc=pRequest.getParameter('ProdDesc'); if(log.isDebugEnabled()) log.debug('lReferno '+lReferno); if(log.isDebugEnabled()) log.debug('lproductDesc '+lproductDesc); RequestDispatcherObj.forward(pRequest, pResponse); } catch(Exception pEx) { log.fatal('Exception in createReport - while getting Connection: '+pEx.toString()); } }
Alinhamento em Itext Java
Geralmente, os usuários precisam dos documentos de relatório em um formato específico porque os relatórios devem representar claramente o que e como você deseja mostrar os resultados. IText ajuda você com isso.
Programa de amostra
Package com. Softwaretesting.itext; Import java io.fileoutputstream; Import com itext pdf.Text.Document; //Through this I am including a paragraph in my PDF; Import com itextpdf.Text.Paragraph; //use the below code to write in the PDF Import com. Itext pdf.pdfwriter; Public class Alignmentpdf{ //class starts from here and Start writing in below specified file Private static string file=” Alignmentpdf.pdf”; System out.println(“Document entered is…”+ file); //JVM Starts executing from main method i.e. below code Public static void main (string () args){ //JVM starts compiling from here try { Document doc =new document (); Pdfwriter.getInstance(doc, new file output stream (file)); // Below function which makes to open the document in the front end doc.open(); Paragraph para=new paragraph(“first para”); //Paragraph usually maintains more than one sentence //If Sentence needs to be aligned at Left, use below code Para.setAlignment(Element.ALIGN_LEFT); doc.add(para); // If Sentence needs to be aligned at Right, use below code Paragraph para1=new paragraph(“alignment should be done in second”); Para1 set alignment (Element.ALIGN-RIGHT); doc.add (para1); /*you can create same paragraph object like para or para1 based on user convenience throughout the program. But I am using different object because of showing the difference for Reader Understanding*/ Paragraph para2 = new paragraph (“Alignment is in Centre”); // If Sentence needs to be aligned at the center, use below code Para2 set alignment (Element.Align_CENTER); doc.add(para2); doc.close(); } Catch (DocumentException e){ e. printstacktrace(); System.out.println(“Printed Java Program”); }}}
O iText é usado para criar um novo ou atualizar um existente?
Pode surgir uma dúvida se o iText é usado apenas para criar um novo PDF? A resposta é não. Além de gerar novos relatórios em PDF, o iText também fornece alguns recursos, como atualizar um PDF existente e fornecer a saída consolidada que inclui a alteração atualizada.
Código de amostra:
// Reading Input file from where the need to copy Private static string file-to-be-given=”D:/software/Existingpdf.pdf;” // Reading Input file from where the need to paste Private static string file-to-be-output=”D:/software/outputpdf pdf” doc.open(); pdfReader reader =new pdfReader (file-to-be-given); //Getting Number of pages before enters into for Loop Int n= reader.getNopages(); PdfImportedpage pager; //Reading all pages in pdf For (int i=1;i<=n; i++){ If(i==5) { //I need to add only 5th Page in my new PDF Pager=writer.getImportedpage(reader,i); Paragraph para= new paragraph (“Its adding”); doc. add (para); } doc. close(); }
Chunk no iText Pdf:
Chunk é a nova técnica que cabe no espaço disponível em pdf e que não necessitaria de nenhum acompanhamento.
Programa de amostra:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Quem pode usar o iText?
Perfil | Desenvolvimento | Ver acesso |
---|---|---|
Desenvolvimento | Possível | Amigo do usuário |
Testador | Parcialmente Possível | Amigo do usuário |
Analista de negócios | Não é possivel | Amigo do usuário |
Cliente | Não é possivel | Amigo do usuário |
Conclusão
O iTextpdf geralmente elabora contribuição de relatório usando Java para o resultado do aplicativo
“O iText é o Java, mas gera pdf que caberia como amigável e pode gerar relatórios claros”
Vantagens do iText:
- Interface de processamento de aplicativos (API) de alto e baixo nível
- Compatibilidade em serviços Provide End to End (PEE)
- Verificação de disponibilidade de fluxo de texto para usuários móveis (TFRAM)
- Adaptabilidade.
- Disponibilidade de plataforma cruzada.
Desvantagens do iText:
- Não é capaz de atingir designs específicos.
- É necessário um conhecimento profundo dos conceitos de OOP.
Leitura recomendada
- Tutorial de reflexão Java com exemplos
- Tutorial Java SWING: Container, Componentes e Manipulação de Eventos
- Tutorial de JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Modificadores de acesso em Java - Tutorial com exemplos
- Tutorial Java String com String Buffer e String Builder
- Tutorial do Data Mart - Tipos, Exemplos e Implementação do Data Mart
- Java String contains () Tutorial de método com exemplos
- Tutorial de Java String | Métodos Java String com exemplos