itext tutorial convert data pdf report using java itext
Aquest tutorial iText explica com manipular dades massives en un formulari segur i únic d'informe PDF mitjançant Java i la biblioteca iText:
iText és l'eina per generar un informe consolidat on podem manipular dades massives en la forma única d'entitat que conté informació significativa.
iText és una biblioteca de PDF Java que s’utilitza per crear i manipular documents PDF mitjançant el desenvolupament de programes Java. Algunes de les funcions de la biblioteca iText inclouen la generació de documents PDF interactius, l’addició de marcadors, el desat de PDF com a fitxers d’imatges, la divisió i la combinació de PDF existents en diversos PDF, etc.
Què aprendreu:
- Per què iText?
- Què és iText?
- Com iniciar l'informe iText?
- Com es pot invocar l'informe mitjançant JSP?
- Com poden iniciar els informes els verificadors?
- Com es pot invocar a JavaScript (JS)?
- Com es construeix la funció a l'informe Java?
- Gestió d'alertes i excepcions
- Servidors
- Alineació a Itext Java
- Qui pot utilitzar iText?
- Conclusió
Per què iText?
Funciona en un entorn versàtil d'un informe automatitzat que és produït per servidors específics com Apache Tomcat, JBoss, Junit. Proporciona un document definit per l’usuari segons les necessitats de l’usuari.
Està orientat a la seguretat d'iText?
Ofereix maneres amb què es podrien recuperar els documents en funció d’operacions relacionades amb la seguretat, com ara protegir amb contrasenya o validar entrades de l’usuari, com obrir el full de pagament introduint els detalls del PAN.
Avui en dia, generalment preferim desar les dades en còpies suaus en lloc de còpies impreses. És millor emmagatzemar informes en servidors que papers. Sempre que necessiteu l'informe, executeu el fitxer Java i genereu-lo de tant en tant.
En aquest article, intentem trobar la solució a les preguntes següents:
eines de proves d'automatització més recents del mercat
- Podem utilitzar la multifuncionalitat?
- Si només s’utilitza per preparar informes?
- On podem utilitzar Itext?
- Si pot crear el nou informe?
- Sóc provador, em resulta útil?
Què és iText?
La sortida de l'eina iText és un informe PDF integrat per Java. Això hereta els comportaments, els components del PDF i genera un informe compatible.
iText és una API de codi obert amb un entorn de cooperació, participació en ple desenvolupament, penetració de la llum Prism i fonament de la generació d’informes.
Per exemple: Penseu en un exemple de bitllet de Indian Railways. Aquí volem que s’imprimeixi el resum detallat del procés d’entrades a partir de la cerca de disponibilitat de places fins a la reserva de l’entrada.
A continuació, entendrem com iText ens pot ajudar amb aquest requisit.
Algunes de les característiques són les següents:
- Resum complet de la sol·licitud (CSA)
- Detalls de seguiment fàcils (ETD)
- Fàcil processament de l'aplicació (EPA)
Com iniciar l'informe iText?
És fàcil abordar l’Itext a través de Java. S’il·lustra amb l’ajut d’un exemple.
Business Analyst (BA) rep el document de processos empresarials (BPD) i el document d’especificació funcional (FSD) del client que explica les seves expectatives respecte de l’aplicació.
Prenem un escenari. BA va presentar múltiples requisits sobre l’enquadrament d’informes i sobre com el nostre producte base pot suportar-ho. Aquestes especificacions de clients de renom ens fan pensar a no perdre el projecte de totes maneres a causa de múltiples confusions i dilemes sobre com aconseguir l'informe d'una manera compatible.
Per què sorgeix aquesta confusió als informes generats?
Això es deu al fet que les dades presents a l'aplicació només mostren el reflex de les dades a l'informe. No es mou per comprovar cada node de l'aplicació (per exemple, com es fa a la ressonància magnètica). Per tant, és la forma més fàcil.
Si exactament. Però el nostre client espera que les dades siguin dinàmiques. En funció de les dades disponibles, l’informe s’hauria de generar de manera dinàmica.
Analitzem-ho amb un exemple en temps real.
Escenari 1: Les dades estàtiques es podrien codificar i generar informes. Aquí, l'import del préstec i el valor de la propietat no canvien abans del desemborsament.
Trobareu la imatge següent per a l’escenari anterior:
Escenari 2 : En aquest escenari, el valor de la propietat augmenta dia a dia i el principal de l'import del préstec s'ha de reduir cada any i, per tant, les dades predites són dinàmiques.
Un client pot venir i acostar-se a nosaltres per proporcionar-nos els detalls de diversos exercicis financers perquè ha canviat el mandat i en funció d’ell l’EMI havia estat variat. Si heu codificat les dades tal com es mostra a la figura següent, us enxamparan.
Penseu en el cas en què se suposa que l'informe és dinàmic. No ho podem avançar tal com és. Hem de fer la inspecció tècnica i seguir els requisits clarament abans de començar el desenvolupament i les proves.
Ens hem de centrar molt clarament en la part de disseny on es fa l’aprovació de Business Analyst. És un bon enfocament perquè qualsevol qüestió de la UAT plantejada més endavant no ens pot assenyalar. Es preveu que la solució d’aquest problema de generació d’informes dinàmics simplement utilitzi conceptes Java per generar un informe.
Com es pot trucar a un informe?
El diagrama següent il·lustra el procés per generar un informe:
Com es pot invocar l'informe mitjançant JSP?
Sempre que anomenem Java, és necessari fer un disseny d’interfície d’usuari, ja que actuarà com a mapa guia per procedir des de la part frontal. És una manera senzilla, ja que podem aprendre la trucada Informe.
Considerem un exemple:
Software Report
Podem configurar l'informe d'aquesta manera:
- Nom de l'informe: Informe de programari (visualització a l'aplicació)
- Informeu de trucades mitjançant JS: Exemple d’informe
- Menú de caiguda: Es poden integrar diversos informes
- En fer clic: Funció JavaScript
Com poden iniciar els informes els verificadors?
Els verificadors solen preferir les proves de regressió mitjançant scripts d’automatització mitjançant el marc Cucumber, el marc basat en paraules clau i el marc basat en dades.
Per proporcionar l’informe en funció dels requisits del client, podem procedir a l’arquitectura readymade, és a dir, iText, on l’eina incorporada hereta les propietats i el comportament del fitxer informador, així com els artefactes que s’han de lliurar.
Els provadors poden fer l’informe consolidat, com ara la llista d’errors restants (RBL), el percentatge de lliuraments de proves, el mapatge d’identificadors d’errors basats en les fases respectives, com ara SIT, UAT i proves de producció, mitjançant iText Java.
Penseu en un escenari que necessiti configurar diversos informes.
El codi següent il·lustra com utilitzar-lo a JSP, que és el que veiem a la part frontal. S'utilitza el mètode següent:
Software Report Software Report1 Software Report2
Com es pot invocar a JavaScript (JS)?
Generalment, podem fer validacions a JS, però podeu fer-ho fins i tot a Java. S'ha inclòs un executor de JavaScript al nostre paquet per a la funció de trucada i per invocar el programa per generar un informe que sigui molt compatible.
Es pot utilitzar per invocar (cridar) el mètode amb un objecte propietari com a argument.
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 } }
El mètode anterior tracta el fitxer onload () funció que es pot invocar a l'aplicació per ser molt versàtil i que activa l'URL per generar informe.
Com es construeix la funció a l'informe Java?
Java gestiona les alertes i excepcions del programa i també executa la generació d'informes.
Il·lustrem això amb l'ajut d'un exemple.
Document Doc =new Document ();
És la forma de crear el document i també és la plataforma que integra l'informe.
Doc.open();
L'ordre anterior s'utilitza per obrir el document. És important incloure aquesta ordre ja que si no s'inclou, llançarà l'excepció del document.
Doc.close();
L'ordre anterior s'utilitza per tancar el document que indica que JVM ha acceptat que el document deixi d'escriure. És important incloure aquesta ordre ja que si no s'inclou, llançarà l'excepció del document.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
L'ordre anterior mostra el document que integra les propietats del PDF a través de PDFWriter, crida el document i el fa visible.
Paragraph para = new Paragraph ();
Un paràgraf escriu la instància del contingut d’ajust automàtic i també escriu les línies massives del requisit.
Doc.setpercentage(%to be given);
A l'ordre anterior, s'ha invocat un document en cridar el PDF perquè sigui compatible segons el percentatge inclòs.
implementació del programa de resum en c ++
public static final String output FileName = 'sample output/Automation/sample report.pdf';
L'ordre anterior mostra el nom del document, inclòs a les cometes dobles, i la ubicació especificada per emmagatzemar el fitxer un cop es fa clic a l'informe.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Aquí es mostra la manera d’establir la versió PDF a la generació d’informes.
document. setPageSize (PageSize.A4);
També podem definir la mida de la pàgina de com s’ha de lliurar l’informe en funció dels requisits. La mida de la pàgina és A3, A4, A5, etc.
document. setMargins(24, 43, 34, 43);
Podem utilitzar la funcionalitat anterior per establir els marges i podem utilitzar el mètode d’ajust automàtic per ajustar-lo normalment al document.
document.setMarginMirroring(true);
L'ordre anterior mostra el mètode de configuració del mirall de marge.
Gestió d'alertes i excepcions
És important gestionar les alertes i excepcions a Java.
A continuació es detallen algunes de les alertes que trobem durant el temps d’execució:
- NoSuchElement Exception
- Excepció de punter nul
- Índex de matriu limitat de l'excepció
- Error d'asserció
- Excepció d'alerta no gestionada
- Excepció SQL
- Excepció del temps d'espera
- Excepció del document
De vegades, el desenvolupador també pot imprimir l'excepció d'un bloc de prova. L’excepció s’inclou al bloc de captures.
Exemple:
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); }
Sortida de mostra: escenari positiu
Introduïu el número que voleu comprovar: 2
Número parell
Sortida de mostra: escenari negatiu
Introduïu el número per comprovar: a
S'ha produït una excepció: Excepció de format il·legal
Explicació:
S'ha de donar un número com a entrada perquè hem definit 'n' com un enter a l'exemple de codi anterior. Si introduïm algun alfabet on intenta obtenir el Remainder (% mòdul utilitzat), llavors no recuperarà cap dada i només llançarà l'excepció mitjançant el bloc de captura.
La diferència exacta entre Error i Excepció a Java:
Un error us impedirà executar el programa, però s’obtindrà una excepció mentre s’executa el programa, mentre que no l’aturarà.
Registre d'un registre de fitxers:
L’escriptura del registre de cada mètode o mòdul ens permet identificar on deixa d’executar-se JVM. Un registre sol mostrar el valor on s’emmagatzema al fitxer de registre especificat i de quina manera el processador executa el programa Java a l’aplicació.
Diferència entre System.out.println (SOP) i Log:
Tots dos imprimeixen el valor o mostren el contingut que s'introdueix entre cometes dobles. Però el les diferències entre aquests dos són: Mentre s’executa el programa, l’aplicació imprimeix els valors a la consola mitjançant l’ordre SOP. Però un cop esborrat el contingut de la consola, és difícil trobar-ne el valor. Això també passa quan tenim diversos SOP.
Bàsicament, l’ordre Log factory podria recuperar i actualitzar els valors. Podem veure el fitxer de registre a qualsevol preu perquè escriu cada vegada a cada execució amb la data i l’hora del sistema.
Exemple:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servidors
Els servidors tenen un paper important a l’empresa, ja que poden determinar si s’executa o no l’execució del programa.
Els servidors locals són els servidors on podem executar el programa a la nostra màquina local. Podem utilitzar els servidors locals següents:
- Apache Tomcat
- JBoss
Un cop el codi estigui Estat preparat, s'hauria de desplegar al servidor especificat i requereix un reinici. Podríem utilitzar els servidors següents:
- Oracle Weblogic
- IBM Websphere
Programa de mostra:
Penseu en el programa on podria processar la implementació de 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()); } }
Alineació a Itext Java
Generalment, els usuaris necessiten els documents de l'informe en un format específic perquè els informes han de representar clarament què i com voleu mostrar els resultats. IText us ajuda amb això.
Programa de mostra
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”); }}}
S'utilitza iText per crear-ne un de nou o actualitzar-ne un d'existent?
Pot sorgir una pregunta si iText només s'utilitza per crear un PDF nou? La resposta és que no, a més de generar nous informes PDF, iText també proporciona algunes funcions, com ara actualitzar un pdf existent i proporcionar el resultat consolidat que inclou el canvi actualitzat.
Codi de mostra:
// 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(); }
Tros en iText Pdf:
Chunk és la nova tècnica que s’adapta a l’espai disponible en pdf i que no requeriria res per acompanyar.
Programa de mostra:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Qui pot utilitzar iText?
Perfil | Desenvolupament | Veure accés |
---|---|---|
Desenvolupament | Possible | Fàcil d’utilitzar |
Probador | Parcialment possible | Fàcil d’utilitzar |
Analista de negoci | No és possible | Fàcil d’utilitzar |
Client | No és possible | Fàcil d’utilitzar |
Conclusió
iTextpdf sol elaborar la contribució de l'informe mitjançant Java cap al resultat de l'aplicació
'IText és Java, però genera pdf que encaixarien fàcilment i poden generar informes clars'
Avantatges d'iText:
- Interfície de processament d'aplicacions (API) d'alt i baix nivell
- Compatibilitat en proporcionar serveis de punta a punta (PEE)
- Revisió del flux de text Disponibilitat per a usuaris de mòbils (TFRAM)
- Adaptabilitat.
- Disponibilitat multiplataforma.
Inconvenients d'iText:
- No és capaç d'aconseguir dissenys específics.
- Es requereix un coneixement exhaustiu dels conceptes d’OOP.
Lectura recomanada
- Tutorial de reflexió de Java amb exemples
- Tutorial Java SWING: Gestió de contenidors, components i esdeveniments
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Modificadors d'accés a Java: tutorial amb exemples
- Java String amb buffer de cadenes i tutorial de Generador de cadenes
- Tutorial de Data Mart: tipus, exemples i implementació de Data Mart
- Java String conté () Tutorial de mètode amb exemples
- Tutorial de cadenes de Java | Mètodes de cadena Java amb exemples