itext tutorial convert data pdf report using java itext
Ovaj vodič za iText raspravlja o tome kako manipulirati skupnim podacima u siguran, jedinstveni oblik PDF izvješća pomoću Jave i iText biblioteke:
iText je alat za generiranje konsolidiranog izvješća u kojem možemo manipulirati skupnim podacima u jedinstveni oblik entiteta koji sadrži značajne informacije.
iText je Java PDF biblioteka koja se koristi za stvaranje i manipulaciju PDF dokumentima razvojem Java programa. Neke značajke iText biblioteke uključuju stvaranje interaktivnih PDF dokumenata, dodavanje oznaka, spremanje PDF-a kao slikovnih datoteka, razdvajanje i spajanje postojećih PDF-a u više PDF-ova itd.
Što ćete naučiti:
Zašto iText?
Djeluje u svestranom okruženju automatiziranog izvješća koje proizvode određeni poslužitelji poput Apache Tomcat, JBoss, Junit. Pruža korisnički definirani dokument prema potrebama korisnika.
Je li iText usmjeren na sigurnost?
Nudi načine na koje bi se dokumenti mogli dohvatiti na temelju sigurnosnih operacija, poput zaštićenih lozinkom ili provjere unosa od korisnika poput otvaranja uplatnice upisivanjem podataka o PAN-u.
Danas općenito radije podatke spremamo u meke, a ne u tiskane kopije. Bolje je pohranjivati izvješća na poslužiteljima nego na papirima. Kad god vam treba izvješće, samo pokrenite Java datoteku i generirajte je tada i tamo.
U ovom članku pokušajmo pronaći rješenje za sljedeća pitanja:
najbolji besplatni optimizator za Windows 10
- Možemo li koristiti višenamjenske funkcije?
- Koristi li se samo za pripremu izvještaja?
- Gdje možemo koristiti Itext?
- Može li stvoriti novo izvješće?
- Tester sam, je li mi korisno?
Što je iText?
Rezultat alata iText je PDF izvješće koje je integrirala Java. Ovo nasljeđuje PDF ponašanje, komponente i generira kompatibilno izvješće.
iText je API otvorenog koda s kooperacijskim okruženjem, sudjelovanjem u punom znanju, prodiranjem prizme u svjetlost i temeljima izrade izvještaja.
Na primjer: Razmotrimo primjer karte za indijske željeznice. Ovdje želimo ispis detaljnog sažetka postupka prodaje karata, počevši od pretraživanja raspoloživosti mjesta do rezervacije karte.
Zatim ćemo shvatiti kako nam iText može pomoći u ispunjavanju ovog zahtjeva.
Neke od karakteristika su sljedeće:
- Cjelovit sažetak prijave (CSA)
- Pojedinosti jednostavnog praćenja (ETD)
- Jednostavna obrada zahtjeva (EPA)
Kako pokrenuti iText izvješće?
Itext-u je lako pristupiti putem Jave. Ilustrirano je pomoću primjera.
Poslovni analitičar (BA) od klijenta dobiva dokument poslovnog procesa (BPD) i dokument o funkcionalnim specifikacijama (FSD) koji objašnjavaju njihova očekivanja od aplikacije.
Uzmimo scenarij. BA je donio višestruke zahtjeve u vezi s uokvirivanjem izvještaja kao i kako naš osnovni proizvod to može podržati. Takve specifikacije poznatih klijenata natjeraju nas da pomislimo da projekt nikako nećemo izgubiti zbog višestruke zbrke i dileme kako postići izvješće na kompatibilan način.
Zašto se takva zabuna pojavljuje u generiranim izvješćima?
To je zato što podaci prisutni u aplikaciji samo pokazuju odraz podataka u Izvješću. Ne pomiče se za provjeru svakog čvora u aplikaciji (npr. Kao u MRI skeniranju). Dakle, to je najlakši način.
Da točno. Ali naš klijent očekuje da podaci budu dinamični. Na temelju dostupnih podataka, izvješće treba generirati na dinamičan način.
Razgovarajmo o tome na primjeru u stvarnom vremenu.
Scenarij 1: Statički podaci mogu se čvrsto kodirati i generirati izvješća. Ovdje se iznos zajma i vrijednost imovine ne mijenjaju prije isplate.
Za gornji scenarij pronađite donju sliku:
Scenarij 2 : U ovom se scenariju vrijednost imovine povećava iz dana u dan, a glavnica iznosa zajma trebala bi se smanjivati svake godine, a time su i predviđeni podaci dinamični.
Kupac može doći i obratiti nam se kako bismo pružili detalje za različite financijske godine jer je promijenio mandat i na temelju njega EMI je varirao. Ako ste čvrsto kodirali podatke kao što je prikazano na donjoj slici, bit ćete uhvaćeni.
Razmotrimo slučaj u kojem bi izvještaj trebao biti dinamičan. Ne možemo je iznijeti ovakvu kakva jest. Moramo obaviti tehnički pregled i jasno proći kroz zahtjeve prije početka razvoja i ispitivanja.
Moramo se vrlo jasno usredotočiti na dio dizajna za koji odobrenje daje poslovni analitičar. Dobar je pristup jer nam se na bilo koja pitanja UAT-a pokrenuta kasnije ne može ukazivati. Predviđa se da će rješenje ovog problema generiranja dinamičkog izvješća jednostavno koristiti koncepte Java u generiranju izvješća.
Kako nazvati Izvještaj?
Dijagram u nastavku ilustrira postupak generiranja izvješća:
Kako pozvati izvještaj putem JSP-a?
Gdje god nazivamo Javu, potrebno je napraviti dizajn korisničkog sučelja jer će to djelovati kao karta vodiča za nastavak s prednjeg kraja. To je jednostavan način jer možemo naučiti poziv Report.
Razmotrimo primjer:
Software Report
Izvješće možemo konfigurirati na ovaj način:
- Naziv izvještaja: Izvješće o softveru (prikaz u aplikaciji)
- Prijavi pozivanje putem JS-a: Uzorak izvješća
- Drop Menu: Može se integrirati više izvješća
- Na klik: JavaScript funkcija
Kako testeri mogu pokrenuti izvještaj?
Ispitivači obično preferiraju regresijsko testiranje putem skripti za automatizaciju pomoću okvira Cucumber, Keyword Driven framework i Data-Driven framework.
Da bismo pružili izvješće na temelju zahtjeva klijenta, možemo nastaviti s gotovom arhitekturom, tj. ITextom, gdje ugrađeni alat nasljeđuje svojstva i ponašanje izvjestiteljske datoteke, kao i artefakte koji se isporučuju.
Ispitivači mogu izraditi konsolidirano izvješće kao što je Popis preostalih grešaka (RBL), postotak isporučenih rezultata, mapiranje ID-a grešaka na temelju odgovarajućih faza kao što su SIT, UAT i produkcijsko testiranje pomoću iText Jave.
Razmotrite scenarij koji treba konfigurirati više izvješća.
Donji kod ilustrira kako se koristi u JSP-u, a to je ono što gledamo na prednjem kraju. Koristi se sljedeća metoda:
Software Report Software Report1 Software Report2
Kako se pozvati u JavaScript (JS)?
Općenito, možemo vršiti provjere valjanosti u JS-u, ali to možete učiniti čak i na Javi. Izvršitelj JavaScript-a uključen je u naš paket za funkciju pozivanja i za pozivanje programa za generiranje vrlo kompatibilnog izvješća.
Može se koristiti za pozivanje (poziv) metode s objektom vlasnika kao argumentom.
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 } }
Gornja metoda obrađuje učitavanje () funkcija koja se u aplikaciji može pozvati da bude vrlo svestrana koja pokreće URL za generiranje izvješća.
Kako izgraditi funkciju u Java izvješću?
Java obrađuje upozorenja i iznimke u programu, a također izvršava generiranje izvješća.
Pokažimo to na primjeru.
Document Doc =new Document ();
To je način stvaranja dokumenta, a ujedno je i platforma koja integrira izvješće.
Doc.open();
Gornja naredba koristi se za otvaranje dokumenta. Važno je uključiti ovu naredbu kao da nije uključena, bacit će izuzetak dokumenta.
Doc.close();
Gornja naredba koristi se za zatvaranje dokumenta koji označava JVM da je dokument prihvatio prestati pisati. Važno je uključiti ovu naredbu kao da nije uključena, bacit će izuzetak dokumenta.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Gornja naredba prikazuje dokument koji integrira svojstva PDF-a putem PDFWriter-a, poziva dokument i čini ga vidljivim.
Paragraph para = new Paragraph ();
Odlomak zapisuje instancu sadržaja automatskog uklapanja i također upisuje skupne retke zahtjeva.
Doc.setpercentage(%to be given);
U gornjoj naredbi pozvan je dokument pozivajući PDF da bude kompatibilan kako je definirano uključenim postotkom.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Gornja naredba prikazuje ime dokumenta, uključeno u dvostruke navodnike, i određeno mjesto za spremanje datoteke nakon što se klikne na izvješće.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Ovdje pokazuje način postavljanja PDF verzije u generaciju izvještaja.
document. setPageSize (PageSize.A4);
Također možemo postaviti veličinu stranice kako se izvješće mora dostaviti na temelju zahtjeva. Veličina stranice kao A3, A4, A5 itd.
document. setMargins(24, 43, 34, 43);
Gornju funkcionalnost možemo koristiti za postavljanje margina, a možemo koristiti i metodu automatskog prilagođavanja kako bismo je normalno uklopili u dokument.
besplatni Windows Registry čistač i popravak -
document.setMarginMirroring(true);
Gornja naredba prikazuje metodu postavke zrcala Margin.
Rukovanje upozorenjima i iznimkama
Važno je postupati s upozorenjima i iznimkama na Javi.
U nastavku su navedena neka upozorenja na koja nailazimo tijekom izvođenja:
- NoSuchElement iznimka
- Iznimka null pokazivača
- Indeks niza vezan za iznimku
- Pogreška u tvrdnji
- Neobrađena iznimka upozorenja
- SQL iznimka
- Izuzetak za vremensko ograničenje
- Iznimka dokumenta
Ponekad programer može ispisati i iznimku bloka try-catch. Iznimka je zatvorena ispod bloka catch.
Primjer:
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); }
Izlaz uzorka: pozitivan scenarij
Unesite broj za provjeru: 2
Parni broj
Izlaz uzorka: negativni scenarij
Unesite broj za provjeru: a
Dogodila se iznimka: Izuzetak ilegalnog formata
Obrazloženje:
Broj mora biti naveden kao ulaz jer smo u gornjem primjeru koda definirali 'n' kao cijeli broj. Ako unesemo bilo koju abecedu gdje pokušava dobiti Ostatak (korišteni% modul), tada neće dohvatiti nikakve podatke i samo će izuzetak izbaciti pomoću catch bloka.
Točna razlika između pogreške i iznimke u Javi:
Pogreška će vas zaustaviti u izvršavanju programa, ali iznimka će se uhvatiti tijekom pokretanja programa, dok neće zaustaviti vaše izvršavanje.
Zapisivanje zapisnika datoteka:
Pisanje dnevnika za svaku metodu ili modul čini nas identificirati gdje JVM prestaje izvršavati. Dnevnik obično prikazuje vrijednost gdje je pohranjena u navedenoj datoteci dnevnika i na koji način procesor izvršava Java program u aplikaciji.
Razlika između System.out.println (SOP) i Log:
Oboje ispisuju vrijednost ili izlažu bez obzira na sadržaj koji se unosi u dvostruke navodnike. Ali razlike između ove dvije su: Dok je program pokrenut, aplikacija ispisuje vrijednosti na konzoli naredbom SOP. No nakon što izbrišemo sadržaj konzole, teško je pronaći vrijednost. To se također događa kada imamo više SOP-ova.
U osnovi, naredba Log factory mogla bi dohvatiti i ažurirati vrijednosti. Datoteku dnevnika možemo pregledati po svaku cijenu jer svaki put zapisuje pri svakom pokretanju s datumom i vremenom sustava.
Primjer:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Poslužitelji
Poslužitelji igraju važnu ulogu u korporaciji jer može odrediti je li izvršenje programa prošlo ili ne.
Lokalni poslužitelji su poslužitelji na kojima možemo izvršiti program na našem lokalnom računalu. Možemo koristiti sljedeće lokalne poslužitelje:
- Apache Tomcat
- JBoss
Jednom kad kod uđe Spremna država, treba ga rasporediti na navedeni poslužitelj i zahtijeva ponovno pokretanje. Mogli bismo koristiti sljedeće poslužitelje:
- Oracle Weblogic
- IBM Websphere
Uzorak programa:
Razmotrite program u kojem bi mogao obraditi implementaciju iText-a.
/****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()); } }
Poravnanje u Itext Java
Općenito, korisnici trebaju dokumente izvješća u određenom formatu, jer izvješća moraju jasno predstavljati što i kako želite prikazati rezultate. IText vam u tome pomaže.
Uzorak programa
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”); }}}
Koristi li se iText za izradu novog ili ažuriranje postojećeg?
Može se postaviti pitanje koristi li se iText samo za stvaranje novog PDF-a? Odgovor je ne, osim što generira nova PDF izvješća, iText također nudi neke značajke poput ažuriranja postojećeg pdf-a i pruža konsolidirani izlaz koji uključuje ažuriranu promjenu.
Uzorak koda:
// 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(); }
Dio u iText-u Pdf:
Chunk je nova tehnika koja se uklapa u raspoloživi prostor u pdf-u i koja ne zahtijeva ništa uz nju.
Uzorak programa:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Tko može koristiti iText?
Profil | Razvoj | Pristup pregleda |
---|---|---|
Razvoj | Moguće | Korisniku ugodno |
Tester | Djelomično moguće | Korisniku ugodno |
Poslovni analitičar | Nije moguće | Korisniku ugodno |
Kupac | Nije moguće | Korisniku ugodno |
Zaključak
iTextpdf obično razrađuje doprinos izvješća koristeći Javu prema ishodu aplikacije
'IText je Java, ali generira pdf koji bi odgovarao korisniku i može generirati kristalno jasna izvješća'
Prednosti iText-a:
- Sučelje za obradu aplikacija visoke i niske razine (API)
- Kompatibilnost u pružanju usluga s kraja na kraj (PEE)
- Dostupnost ponovnog provjeravanja protoka teksta za mobilne korisnike (TFRAM)
- Prilagodljivost.
- Dostupnost više platformi.
Mane iText-a:
- Nije u mogućnosti postići određene dizajne.
- Potrebno je temeljito poznavanje koncepata OOP-a.
Preporučena literatura
- Java Vodič za refleksiju s primjerima
- Java SWING Vodič: Spremnici, komponente i upravljanje događajima
- JAVA Tutorial za početnike: 100+ praktičnih Java Video tutorijala
- Pristupiti modifikatorima u Javi - Vodič s primjerima
- Java string sa String Buffer-om i String Builder Tutorial
- Data Mart Tutorial - Vrste, primjeri i provedba Data Mart
- Java String sadrži () Vodič za metode s primjerima
- Java String Vodič | Metode Java niza s primjerima