itext tutorial convert data pdf report using java itext
Ta vadnica iText razpravlja o upravljanju z velikimi podatki v varno, enotno obliko poročila PDF z uporabo Java in knjižnice iText:
iText je orodje za ustvarjanje konsolidiranega poročila, v katerem lahko množične podatke obdelamo v eno samo obliko entitete, ki vsebuje pomembne informacije.
iText je knjižnica Java PDF, ki se uporablja za ustvarjanje in obdelavo dokumentov PDF z razvojem programov Java. Nekatere funkcije knjižnice iText vključujejo ustvarjanje interaktivnih dokumentov PDF, dodajanje zaznamkov, shranjevanje PDF-jev kot slikovnih datotek, razdeljevanje in združevanje obstoječih PDF-jev v več PDF-je itd.
Kaj se boste naučili:
Zakaj iText?
Deluje v vsestranskem okolju samodejnega poročila, ki ga ustvarijo določeni strežniki, kot so Apache Tomcat, JBoss, Junit. Ponuja uporabniško določen dokument glede na potrebe uporabnika.
Ali je iText usmerjen v varnost?
Ponuja načine, kako lahko dokumente pridobivate na podlagi varnostnih operacij, na primer zaščitenih z geslom ali preverjanja vnosov uporabnika, kot je odpiranje plačilne liste z vnosom podrobnosti PAN.
Danes običajno raje shranjujemo podatke v mehkih kopijah kot v tiskanih. Poročila je bolje shraniti na strežnikih kot papirje. Kadar koli potrebujete poročilo, zaženite datoteko Java in jo nato ustvarite.
V tem članku poskusimo najti rešitev za naslednja vprašanja:
kaj je dvojna spremenljivka v javi
- Ali lahko uporabimo večnamensko funkcijo?
- Ali se uporablja samo za pripravo poročil?
- Kje lahko uporabimo Itext?
- Ali lahko ustvari novo poročilo?
- Sem preizkuševalec, ali mi je v pomoč?
Kaj je iText?
Rezultat orodja iText je poročilo PDF, ki ga je integrirala Java. Ta podeduje vedenja PDF, komponente in ustvari združljivo poročilo.
iText je odprtokodni API s sodelovalnim okoljem, sodelovanjem v polni moči, prodiranjem svetlobe v prizmo in temeljem ustvarjanja poročil.
Na primer: Poglejmo primer vozovnice za indijske železnice. Tu želimo natis podrobnega povzetka postopka vstopnic, od iskanja razpoložljivosti sedežev do rezervacije vstopnice.
Nato bomo razumeli, kako nam iText lahko pomaga pri tej zahtevi.
Nekatere značilnosti so naslednje:
- Popoln povzetek prijave (CSA)
- Podrobnosti o enostavnem sledenju (ETD)
- Enostavna obdelava vloge (EPA)
Kako začeti poročilo iText?
Preko Jave je enostavno pristopiti k besedilu Itext. Ilustrirano je s pomočjo primera.
Poslovni analitik (BA) od stranke dobi dokument o poslovnih procesih (BPD) in dokument o funkcionalnih specifikacijah (FSD), ki pojasnjuje njihova pričakovanja od aplikacije.
Vzemimo scenarij. BA je prinesel več zahtev glede oblikovanja poročil in tega, kako lahko naš osnovni izdelek to podpira. Zaradi takšnih specifikacij cenjenih strank mislimo, da vseeno ne izgubimo projekta zaradi večkratne zmede in dilem, kako poročilo doseči na združljiv način.
Zakaj v zbranih poročilih nastane takšna zmeda?
To je zato, ker podatki v aplikaciji samo prikazujejo odsev podatkov v poročilu. Ne premakne se, da bi preveril vsako vozlišče v aplikaciji (npr. Kot pri MRI skeniranju). Tako je to najlažji način.
Ja točno. Toda naša stranka pričakuje, da bodo podatki dinamični. Na podlagi razpoložljivih podatkov je treba poročilo ustvariti dinamično.
O tem se pogovorimo s primerom v realnem času.
1. scenarij: Statični podatki so lahko trdo kodirani in ustvarjajo poročila. Tu se znesek posojila in vrednost nepremičnine pred izplačilom ne spremenita.
Za zgornji scenarij poiščite spodnjo sliko:

2. scenarij : V tem primeru se vrednost nepremičnine iz dneva v dan povečuje, glavnico zneska posojila pa je treba vsako leto zniževati, zato so napovedani podatki dinamični.
Stranka se lahko obrne na nas in nam posreduje podrobnosti za različna poslovna leta, ker je spremenil mandat in na podlagi tega je bil EMI spremenjen. Če ste podatke trdo kodirali, kot je prikazano na spodnji sliki, boste ujeti.

Razmislite o primeru, ko naj bi bilo poročilo dinamično. Ne moremo ga postaviti naprej, kakršen je. Pred začetkom razvoja in testiranja moramo opraviti tehnični pregled in jasno prehoditi zahteve.
Zelo jasno se moramo osredotočiti na oblikovalski del, kjer odobritev odobri poslovni analitik. To je dober pristop, saj nam kasneje zastavljenih vprašanj UAT ni mogoče izpostaviti. Rešitev tega problema dinamičnega ustvarjanja poročil naj bi preprosto ustvarjala koncepte Java za ustvarjanje poročila.
Kako poklicati poročilo?
Spodnji diagram prikazuje postopek ustvarjanja poročila:

Kako priklicati poročilo prek JSP?
Kjerkoli pokličemo Javo, je treba narediti oblikovanje uporabniškega vmesnika, saj bo to delovalo kot vodilo za nadaljevanje s sprednjega dela. To je preprost način, saj se lahko naučimo klica Report.
Oglejmo si primer:
Software Report Poročilo lahko konfiguriramo na ta način:
- Ime poročila: Poročilo o programski opremi (prikaz v aplikaciji)
- Prijavi klicanje prek JS: Vzorčno poročilo
- Spustni meni: Vključi se lahko več poročil
- Ob kliku: Funkcija JavaScript
Kako lahko preizkuševalci sprožijo poročilo?
Preizkuševalci imajo navadno raje regresijsko testiranje s pomočjo skriptov za avtomatizacijo, ki uporabljajo ogrodje Cucumber, Framework Driven Framework in Data-Driven framework
Za predložitev poročila na podlagi zahtev odjemalca lahko nadaljujemo s pripravljeno arhitekturo, tj. IText, kjer vgrajeno orodje podeduje lastnosti in vedenje poročevalske datoteke ter artefakte, ki jih je treba dostaviti.
Preizkuševalci lahko pripravijo konsolidirano poročilo, kot so seznam preostalih napak (RBL), odstotek preskusnih rezultatov, preslikava id hroščev na podlagi ustreznih faz, kot so SIT, UAT in preskušanje proizvodnje, z uporabo iText Java.
Razmislite o scenariju, ki mora konfigurirati več poročil.
Spodnja koda prikazuje, kako uporabljati JSP, kar je tisto, kar gledamo spredaj. Uporablja se naslednja metoda:
Software Report Software Report1 Software Report2 Kako priklicati v JavaScript (JS)?
Na splošno lahko izvajamo validacije v JS, lahko pa tudi v Javi. Izvršitelj JavaScript je bil vključen v naš paket za funkcijo klicanja in za sprožitev programa, da ustvari poročilo, ki je zelo združljivo.
Uporablja se lahko za priklic (klic) metode z lastniškim objektom kot 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 } } Zgornja metoda obravnava obremenitev () funkcija, ki jo v aplikaciji lahko prikličete, da je zelo vsestranska, ki sproži URL za ustvarjanje poročila.
Kako zgraditi funkcijo v poročilu Java?
Java obravnava opozorila in izjeme v programu in izvede tudi generiranje poročil.
najboljša aplikacija za vohunjenje na drugem telefonu
Naj to ponazorimo s pomočjo primera.
Document Doc =new Document ();To je način ustvarjanja dokumenta in je tudi platforma, ki vključuje poročilo.
Doc.open();Zgornji ukaz se uporablja za odpiranje dokumenta. Pomembno je, da vključite ta ukaz, saj če ni vključen, bo vrgel izjemo dokumenta.
Doc.close();Zgornji ukaz se uporablja za zapiranje dokumenta, ki označuje JVM, da je dokument sprejel ustavitev pisanja. Pomembno je, da vključite ta ukaz, saj če ni vključen, bo vrgel izjemo dokumenta.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));Zgornji ukaz prikazuje dokument, ki skozi PDFWriter vključuje lastnosti PDF-ja, pokliče dokument in ga naredi vidnega.
Paragraph para = new Paragraph ();Odstavek zapiše primerek vsebine samodejnega prilagajanja in napiše tudi obsežne vrstice zahteve.
Doc.setpercentage(%to be given);V zgornjem ukazu je bil poklican dokument, ki je poklical PDF, da je združljiv, kot je določeno z vključenim odstotkom.
public static final String output FileName = 'sample output/Automation/sample report.pdf'; Zgornji ukaz prikazuje ime dokumenta, vključeno v dvojne narekovaje, in določeno mesto za shranjevanje datoteke po kliku na poročilo.
writer. setPdfVersion(PdfWriter.VERSION_1_9);Tukaj prikazuje način nastavitve različice PDF v generaciji poročila.
document. setPageSize (PageSize.A4);Glede na zahteve lahko nastavimo tudi velikost strani, kako naj bo poročilo dostavljeno. Velikost strani kot A3, A4, A5 itd.
document. setMargins(24, 43, 34, 43);Zgornjo funkcionalnost lahko uporabimo za nastavitev robov, lahko pa uporabimo tudi metodo samodejnega prilagajanja, da se običajno prilega dokumentu.
document.setMarginMirroring(true);Zgornji ukaz prikazuje metodo nastavitve zrcala Margin.
Ravnanje z opozorili in izjemami
Pomembno je, da opozorila in izjeme obravnavate v Javi.
Nekatera opozorila, na katera naletimo med izvajanjem, so navedena spodaj:
- NoSuchElement izjema
- Izjema za ničelni kazalec
- Indeks polja vezan na izjemo
- Napaka trditve
- Neobdelana izjema opozorila
- Izjema SQL
- Izjema časovne omejitve
- Izjema dokumenta
Včasih lahko razvijalec natisne tudi izjemo bloka try-catch. Izjema je priložena bloku catch.
Primer:
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); } Rezultat vzorca: pozitiven scenarij
Vnesite številko za preverjanje: 2
Sodo število
Rezultat vzorca: negativni scenarij
Vnesite številko za preverjanje: a
Prišlo je do izjeme: Izjema nezakonite oblike
Pojasnilo:
Številko je treba navesti kot vhod, ker smo v zgornjem primeru kode definirali 'n' kot celo število. Če vnesemo katero koli abecedo, kjer poskuša dobiti ostanek (% uporabljenega modula), potem ne bo pridobil nobenih podatkov in bo vrgel izjemo s pomočjo bloka catch.
Natančna razlika med napakami in izjemami v Javi:
Napaka vas bo ustavila pri izvajanju programa, vendar bo med izvajanjem programa zaznana izjema, medtem ko ne bo ustavila vaše izvedbe.
Beleženje dnevnika datotek:
Z zapisovanjem dnevnika za vsako metodo ali modul ugotovimo, kje JVM preneha izvajati. Dnevnik običajno prikaže vrednost, kjer je shranjena v določeni dnevniški datoteki, in na kakšen način procesor izvrši program Java v aplikaciji.
Razlika med System.out.println (SOP) in Log:
Oba natisneta vrednost ali predstavita kakršno koli vsebino, vneseno z dvojnimi narekovaji. Toda razlike med tema dvema so: Med izvajanjem programa aplikacija na ukaz SOP natisne vrednosti na konzoli. Ko pa smo izbrisali vsebino konzole, je težko najti vrednost. To se zgodi tudi, ko imamo več SOP-jev.
V bistvu lahko ukaz Log factory pridobi in posodobi vrednosti. Datoteko dnevnika si lahko ogledamo za vsako ceno, ker piše vsakič ob vsakem zagonu s sistemskim datumom in uro.
Primer:
private static Log logFile= LogFactory.getLog(SampleProgram.class);Strežniki
Strežniki igrajo pomembno vlogo v podjetju, saj lahko ugotovi, ali je izvajanje programa uspešno ali ne.
Lokalni strežniki so strežniki, na katerih lahko izvajamo program v našem lokalnem računalniku. Uporabljamo lahko naslednje lokalne strežnike:
- Apache Tomcat
- JBoss
Ko je koda noter Pripravljena država, razporediti ga je treba na določeni strežnik in zahteva ponovni zagon. Uporabili bi lahko naslednje strežnike:
- Oracle Weblogic
- IBM Websphere
Vzorčni program:
Razmislite o programu, kjer bi lahko obdelal izvedbo 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()); } } Poravnava v besedilu Java
Na splošno uporabniki potrebujejo dokumente poročil v določeni obliki, ker morajo poročila jasno predstavljati, kaj in kako želite prikazati rezultate. Pri tem vam pomaga IText.
Vzorčni program
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”); }}} Ali se iText uporablja za ustvarjanje novega ali posodobitev obstoječega?
Lahko se pojavi vprašanje, ali se iText uporablja samo za ustvarjanje novega PDF-ja? Odgovor je ne, iText poleg ustvarjanja novih poročil PDF ponuja tudi nekatere funkcije, kot je posodabljanje obstoječega PDF-ja, in konsolidirane rezultate, ki vključujejo posodobljeno spremembo.
Vzorčna 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(); } Del v iText Pdf:
Chunk je nova tehnika, ki ustreza razpoložljivemu prostoru v pdf in za katero ni treba ničesar spremljati.
Vzorčni program:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close(); Kdo lahko uporablja iText?
| Profil | Razvoj | Ogled dostopa |
|---|---|---|
| Razvoj | Mogoče | Uporabniku prijazno |
| Tester | Delno mogoče | Uporabniku prijazno |
| Poslovni analitik | Ni mogoče | Uporabniku prijazno |
| Stranka | Ni mogoče | Uporabniku prijazno |
Zaključek
iTextpdf običajno pripravi prispevek k poročilu z uporabo Jave k izidu aplikacije
'IText je Java, vendar ustvarja pdf, ki ustreza uporabniku prijaznemu in lahko ustvari kristalno jasna poročila.'
Prednosti iText:
- Vmesnik za obdelavo aplikacij na visoki in nizki ravni (API)
- Združljivost pri zagotavljanju storitev od konca do konca (PEE)
- Ponovno preverjanje razpoložljivosti besedilnega toka za mobilne uporabnike (TFRAM)
- Prilagodljivost.
- Razpoložljivost med različnimi platformami.
Slabosti iText:
- Ne more doseči določenih modelov.
- Potrebno je temeljito poznavanje konceptov OOP.
Priporočeno branje
- Vadnica za odsev Java s primeri
- Java SWING Vadnica: Vsebnik, komponente in obdelava dogodkov
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Dostopni modifikatorji v Javi - Vadnica s primeri
- Java String z vmesnikom String Buffer in String Builder
- Data Mart Vadnica - Vrste, primeri in izvedba Data Mart
- Java String vsebuje () Vadnico metode s primeri
- Vadnica za Java String | Nizovske metode Java s primeri