itext tutorial convert data pdf report using java itext
Acest tutorial iText discută despre modul de manipulare a datelor în bloc într-o formă sigură, unică de raport PDF utilizând Java și biblioteca iText:
iText este instrumentul pentru a genera un raport consolidat în care putem manipula date în bloc într-o singură formă de entitate care deține informații semnificative.
iText este o bibliotecă Java PDF utilizată pentru crearea și manipularea documentelor PDF prin dezvoltarea de programe Java. Unele dintre caracteristicile bibliotecii iText includ generarea de documente PDF interactive, adăugarea de marcaje, salvarea PDF-urilor ca fișiere imagine, împărțirea și îmbinarea PDF-urilor existente în mai multe PDF-uri etc.
Ce veți învăța:
De ce iText?
Funcționează într-un mediu versatil al unui raport automat, care este produs de servere specifice, cum ar fi Apache Tomcat, JBoss, Junit. Acesta oferă un document definit de utilizator în funcție de nevoile utilizatorului.
Este iText Security Oriented?
Oferă modalități prin care documentele pot fi recuperate pe baza operațiunilor legate de securitate, cum ar fi protejate prin parolă sau validarea intrărilor de la utilizator, cum ar fi deschiderea fișei de plată prin introducerea detaliilor PAN.
În zilele noastre, în general, preferăm să păstrăm datele în copii, mai degrabă decât pe copii. Este mai bine să stocați rapoarte pe servere decât hârtii. Ori de câte ori aveți nevoie de raport, rulați fișierul Java și generați-l atunci și acolo.
În acest articol, să încercăm să găsim soluția la următoarele întrebări:
cum deschid fișiere .jar
- Putem folosi multifuncționalitatea?
- Dacă este utilizat numai pentru pregătirea rapoartelor?
- Unde putem folosi Itext?
- Dacă poate crea noul raport?
- Sunt tester, îmi este de ajutor?
Ce este iText?
Ieșirea instrumentului iText este un raport PDF integrat de Java. Aceasta moștenește comportamentele PDF, componentele și generează un raport compatibil.
iText este un API open-source cu un mediu de cooperare, participare la normă întreagă, penetrarea luminii Prism și fundamentul generării de rapoarte.
De exemplu: Luați în considerare un exemplu de bilet al Căilor Ferate Indiene. Aici, dorim tipărirea rezumatului detaliat al procesului de bilet, începând de la căutarea disponibilității locurilor până la rezervarea biletului.
Apoi, vom înțelege cum iText ne poate ajuta cu această cerință.
Unele dintre caracteristici sunt următoarele:
- Rezumatul complet al cererii (CSA)
- Detalii de urmărire ușoară (ETD)
- Procesarea ușoară a aplicației (EPA)
Cum să începeți raportul iText?
Este ușor să abordați Itextul prin Java. Este ilustrat cu ajutorul unui exemplu.
Business Analyst (BA) primește Business Process Document (BPD) și Functional Specification Document (FSD) de la client, care explică așteptările lor de la aplicație.
Să luăm un scenariu. BA a adus mai multe cerințe cu privire la încadrarea rapoartelor, precum și modul în care produsul nostru de bază poate susține acest lucru. Astfel de specificații de la clienți reputați ne fac să ne gândim să nu pierdem proiectul oricum din cauza confuziei multiple și a dilemei cu privire la modul de realizare a raportului într-o manieră compatibilă.
De ce apare o astfel de confuzie în rapoartele generate?
Acest lucru se datorează faptului că datele prezente în aplicație prezintă doar reflectarea datelor din raport. Nu se mișcă pentru a verifica fiecare nod din aplicație (de exemplu, așa cum se face în scanarea RMN). Astfel, este cel mai simplu mod.
Da, exact. Dar clientul nostru se așteaptă ca datele să fie dinamice. Pe baza datelor disponibile, raportul ar trebui să fie generat într-un mod dinamic.
Să discutăm acest lucru cu un exemplu în timp real.
Scenariul 1: Datele statice ar putea fi codificate și ar putea genera rapoarte. Aici, valoarea împrumutului și valoarea proprietății nu se modifică înainte de plată.
Vă rugăm să găsiți imaginea de mai jos pentru scenariul de mai sus:
Scenariul 2 : În acest scenariu, valoarea proprietății crește de la o zi la alta, iar principalul sumei împrumutului ar trebui redus în fiecare an și, astfel, datele prezise sunt dinamice.
Un client poate veni și se poate apropia de noi pentru a oferi detaliile pentru diferiți exerciții financiare, deoarece a schimbat mandatul și pe baza acestuia, IME a fost variat. Dacă ați codificat datele, așa cum se arată în figura de mai jos, veți fi prins în flagrant.
Luați în considerare cazul în care raportul ar trebui să fie dinamic. Nu putem să-l prezentăm așa cum este. Trebuie să facem inspecția tehnică și să parcurgem clar cerințele înainte de a începe dezvoltarea și testarea.
Trebuie să ne concentrăm foarte clar pe partea de proiectare în care aprobarea se face de la Business Analyst. Este o abordare bună, deoarece orice problemă UAT ridicată mai târziu nu ne poate fi subliniată. S-a prezis că soluția pentru această problemă a generării dinamice de rapoarte va folosi pur și simplu concepte Java în generarea unui raport.
Cum să apelați un raport?
Diagrama de mai jos ilustrează procesul de generare a unui raport:
Cum să invocăm raportul prin JSP?
Oriunde numim Java, este necesar să facem proiectarea interfeței, deoarece aceasta va acționa ca o hartă de ghidare pentru a continua din partea frontală. Este o modalitate ușoară, deoarece putem învăța apelul de raportare.
Să luăm în considerare un exemplu:
Software Report
Putem configura raportul în acest fel:
- Numele raportului: Raport software (afișare în aplicație)
- Raportați apelarea prin JS: Exemplu de raport
- Meniu drop: Se pot integra mai multe rapoarte
- La clic: Funcția JavaScript
Cum pot iniția raportorii testerii?
Testerii preferă de obicei testarea de regresie prin scripturi de automatizare folosind cadrul Cucumber, Keyword Driven Framework și Data-Driven Framework.
Pentru a furniza raportul pe baza cerințelor clientului, putem continua cu arhitectura readymade, adică iText, unde instrumentul încorporat moștenește proprietățile și comportamentul fișierului reporter, precum și artefacte care urmează să fie livrate.
Testerii pot face raportul consolidat, cum ar fi Lista de erori rămase (RBL), procentul de livrări de testare, maparea id-ului de erori pe baza fazelor respective, cum ar fi SIT, UAT și testarea producției, utilizând iText Java.
Luați în considerare un scenariu care trebuie să configureze mai multe rapoarte.
Codul de mai jos ilustrează modul de utilizare în JSP, ceea ce ne uităm în partea din față. Se utilizează următoarea metodă:
Software Report Software Report1 Software Report2
Cum se poate invoca în JavaScript (JS)?
În general, putem face validări în JS, dar o puteți face chiar și în Java. Executorul JavaScript a fost inclus în pachetul nostru pentru funcția de apelare și pentru a invoca programul pentru a genera un raport care este foarte compatibil.
Poate fi folosit pentru a invoca metoda (apel) cu un obiect proprietar ca 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 } }
Metoda de mai sus se ocupă de onload () funcție care poate fi invocată în aplicație pentru a fi foarte versatilă, care declanșează adresa URL pentru a genera Raport.
Cum să construiți funcția în raportul Java?
Java gestionează alertele și excepțiile din program și, de asemenea, execută generarea raportului.
Să ilustrăm acest lucru cu ajutorul unui exemplu.
Document Doc =new Document ();
Este modul de creare a documentului și este, de asemenea, platforma care integrează raportul.
Doc.open();
Comanda de mai sus este utilizată pentru a deschide documentul. Este important să includeți această comandă, deoarece dacă nu este inclusă, va arunca excepția documentului.
Doc.close();
Comanda de mai sus este utilizată pentru a închide documentul care indică JVM că documentul a acceptat să nu mai scrie. Este important să includeți această comandă, deoarece dacă nu este inclusă, va arunca excepția documentului.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Comanda de mai sus arată documentul care integrează proprietățile PDF-ului prin PDFWriter, apelează documentul și îl face vizibil.
Paragraph para = new Paragraph ();
Un paragraf scrie instanța conținutului de ajustare automată și, de asemenea, scrie liniile masive ale cerinței.
Doc.setpercentage(%to be given);
În comanda de mai sus, a fost invocat un document în apelarea PDF-ului pentru a fi compatibil, așa cum este definit de procentul inclus.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Comanda de mai sus afișează numele documentului, inclus în ghilimele duble, și locația specificată pentru a stoca fișierul după ce se face clic pe raport.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Aici, arată modul de setare a versiunii PDF în generația de rapoarte.
document. setPageSize (PageSize.A4);
De asemenea, putem seta dimensiunea paginii pentru modul în care raportul trebuie să fie livrat pe baza cerințelor. Dimensiunea paginii ca A3, A4, A5 etc.
document. setMargins(24, 43, 34, 43);
Putem folosi funcționalitatea de mai sus pentru a seta marjele și putem folosi metoda de ajustare automată pentru a o încadra în mod normal în document.
document.setMarginMirroring(true);
Comanda de mai sus afișează metoda setării oglinzii Margină.
Gestionarea alertelor și excepțiilor
Este important să gestionați alertele și excepțiile în Java.
Unele dintre alertele pe care le întâlnim în timpul rulării sunt prezentate mai jos:
- NoSuchElement Exception
- Excepția indicatorului nul
- Array Index legat de excepție
- Eroare de afirmare
- Excepție de alertă nesoluționată
- Excepție SQL
- Excepție de expirare
- Excepție document
Uneori, dezvoltatorul poate imprima, de asemenea, excepția unui bloc try-catch. Excepția este inclusă sub blocul de captură.
Exemplu:
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); }
Eșantion de ieșire: scenariu pozitiv
Introduceți numărul de verificat: 2
Număr par
Eșantion de ieșire: scenariu negativ
Introduceți numărul de verificat: a
A avut loc o excepție: Excepție de format ilegal
Explicaţie:
Un număr trebuie dat ca intrare deoarece am definit „n” ca un întreg în exemplul de cod de mai sus. Dacă introducem vreun alfabet în care încearcă să obțină Rămășița (% modul utilizat), atunci nu va prelua date și va arunca excepția folosind blocul de captură.
cele mai bune companii de jocuri video care lucrează pentru 2018
Diferența exactă între Eroare și Excepție în Java:
O eroare vă va împiedica să executați programul, dar o excepție va fi surprinsă în timp ce rulați programul, în timp ce nu vă va opri executarea.
Înregistrarea unui jurnal de fișiere:
Scrierea jurnalului pentru fiecare metodă sau modul ne face să identificăm locul în care JVM se oprește din executare. Un jurnal prezintă de obicei valoarea în care este stocat în fișierul jurnal specificat și în ce mod procesorul execută programul Java în aplicație.
Diferența dintre System.out.println (SOP) și Jurnal:
Ambele tipăresc valoarea sau prezintă orice conținut este introdus în ghilimele duble. Cu exceptia diferențele dintre aceste două sunt: În timp ce programul rulează, aplicația imprimă valorile pe consolă prin comanda SOP. Dar după ce am șters conținutul consolei, este greu să găsim valoarea. Acest lucru se întâmplă și atunci când avem mai multe SOP-uri.
Practic, comanda Log factory ar putea prelua și actualiza valorile. Putem vizualiza fișierul jurnal cu orice preț, deoarece acesta scrie de fiecare dată la fiecare rulare cu data și ora sistemului.
Exemplu:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servere
Serverele joacă un rol important în companie, deoarece pot determina dacă executarea programului este trecută sau nu.
Serverele locale sunt serverele pe care putem executa programul în mașina noastră locală. Putem folosi următoarele servere locale:
- Apache Tomcat
- JBoss
Odată ce codul este introdus Stare gata, ar trebui să fie implementat pe serverul specificat și necesită o repornire. Am putea folosi următoarele servere:
- Oracle Weblogic
- IBM Websphere
Program de probă:
Luați în considerare programul în care ar putea procesa implementarea 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()); } }
Alinierea în Itext Java
În general, utilizatorii au nevoie de documentele raportului într-un format specific, deoarece rapoartele trebuie să reprezinte clar ce și cum doriți să afișați rezultatele. IText vă ajută în acest sens.
Program de probă
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”); }}}
Este iText folosit pentru a crea unul nou sau pentru a actualiza unul existent?
Poate apărea o întrebare dacă iText este utilizat doar pentru crearea unui nou PDF? Răspunsul este nu, pe lângă generarea de noi rapoarte PDF, iText oferă și câteva caracteristici, cum ar fi actualizarea unui pdf existent și furnizarea rezultatului consolidat care include modificarea actualizată.
Cod simplu:
// 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(); }
Fragment în iText Pdf:
Chunk este noua tehnică care se potrivește în spațiul disponibil în pdf și care nu ar necesita nimic de însoțit.
Program de probă:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Cine poate folosi iText?
Profil | Dezvoltare | Vizualizare acces |
---|---|---|
Dezvoltare | Posibil | Ușor de utilizat |
Tester | Parțial posibil | Ușor de utilizat |
Analist de afaceri | Nu este posibil | Ușor de utilizat |
Client | Nu este posibil | Ușor de utilizat |
Concluzie
iTextpdf elaborează de obicei contribuția raportului folosind Java pentru rezultatul aplicației
„IText este Java, dar generează pdf care s-ar potrivi cu ușurința utilizatorului și poate genera rapoarte clare”
Avantajele iText:
- Interfață de procesare a aplicațiilor (API) de nivel înalt și scăzut
- Compatibilitate în furnizarea de servicii end to end (PEE)
- Flux text Verificați din nou disponibilitatea pentru utilizatorii de telefonie mobilă (TFRAM)
- Adaptabilitate.
- Disponibilitate pe mai multe platforme.
Dezavantaje ale iText:
- Nu este capabil să realizeze modele specifice.
- Este necesară cunoașterea aprofundată a conceptelor OOP.
Lectură recomandată
- Tutorial de reflecție Java cu exemple
- Tutorial Java SWING: Container, componente și gestionarea evenimentelor
- Tutorial JAVA pentru începători: peste 100 de cursuri video Java practice
- Modificatori de acces în Java - Tutorial cu exemple
- Java String cu buffer de șiruri și tutorial de generare de șiruri
- Tutorial Data Mart - Tipuri, exemple și implementarea Data Mart
- Șirul Java conține () Tutorial metodă cu exemple
- Tutorial Java String | Metode Java String cu exemple