itext tutorial convert data pdf report using java itext
Tento výukový program iText pojednáva o tom, ako manipulovať s hromadnými údajmi do bezpečnej jednej formy správy PDF pomocou knižnice Java a iText:
iText je nástroj na generovanie konsolidovanej správy, kde môžeme manipulovať s hromadnými údajmi do jednej formy entity, ktorá obsahuje zmysluplné informácie.
iText je knižnica Java PDF, ktorá sa používa na vytváranie a manipuláciu s dokumentmi PDF vývojom programov Java. Medzi niektoré funkcie knižnice iText patrí generovanie interaktívnych dokumentov PDF, pridávanie záložiek, ukladanie PDF ako obrázkových súborov, rozdelenie a zlúčenie existujúcich PDF do viacerých PDF atď.
Čo sa dozviete:
Prečo iText?
Funguje vo všestrannom prostredí automatizovaného prehľadu, ktorý produkujú konkrétne servery ako Apache Tomcat, JBoss, Junit. Poskytuje dokument definovaný používateľom podľa jeho potrieb.
Je bezpečnosť iText zameraná?
Ponúka spôsoby, ako je možné načítať dokumenty na základe operácií súvisiacich so zabezpečením, ako je ochrana heslom alebo overovanie vstupov od používateľa, napríklad otvorenie výplatnej pásky zadaním podrobností PAN.
V súčasnosti všeobecne uprednostňujeme ukladanie údajov skôr v tlačenej podobe ako v tlačenej podobe. Je lepšie ukladať správy na servery ako na papier. Kedykoľvek potrebujete prehľad, spustite súbor Java a vygenerujte ho.
V tomto článku sa pokúsime nájsť riešenie nasledujúcich otázok:
ako otvoriť súbor SWF v Chrome
- Môžeme použiť multifunkčnosť?
- Či sa používa iba na prípravu správ?
- Kde môžeme použiť text?
- Či môže vytvoriť nový prehľad?
- Som tester, je to pre mňa užitočné?
Čo je to iText?
Výstupom nástroja iText je správa vo formáte PDF integrovaná v prostredí Java. Toto zdedí správanie, komponenty PDF a vygeneruje kompatibilnú správu.
iText je open-source API s prostredím pre spoluprácu, účasťou na plnom nasadení, hranolom, prienikom svetla a základom generovania správy.
Napríklad: Zvážte príklad lístka na indické železnice. Tu chceme vytlačiť podrobné zhrnutie procesu letenky, od hľadania dostupnosti miesta až po rezerváciu letenky.
Ďalej pochopíme, ako nám môže iText pomôcť s touto požiadavkou.
Niektoré z týchto charakteristík:
- Kompletné zhrnutie žiadosti (CSA)
- Podrobnosti o ľahkom sledovaní (ETD)
- Jednoduché spracovanie žiadosti (EPA)
Ako spustiť prehľad iText?
Je ľahké priblížiť sa k textu prostredníctvom Javy. Je to ilustrované pomocou príkladu.
Business Analyst (BA) dostane od klienta dokument Business Process Document (BPD) a Functional Specification Document (FSD), ktorý vysvetlí ich očakávania od aplikácie.
Urobme si scenár. Spoločnosť BA priniesla niekoľko požiadaviek na vytváranie prehľadov, ako aj na to, ako to môže podporiť náš základný produkt. Takéto špecifikácie od renomovaných klientov nás nútia myslieť si, aby sme projekt aj tak nestratili z dôvodu viacnásobného zmätku a dilemy, ako dosiahnuť správu kompatibilným spôsobom.
Prečo vzniká taký zmätok v generovaných správach?
Je to preto, že údaje prítomné v aplikácii iba zobrazujú odraz údajov v správe. Nepohybuje sa, aby skontroloval každý uzol v aplikácii (napr. Ako je to pri skenovaní MRI). Je to teda najjednoduchší spôsob.
Áno presne. Náš klient ale očakáva, že údaje budú dynamické. Na základe dostupných údajov by sa mal prehľad generovať dynamickým spôsobom.
Poďme o tom diskutovať na príklade v reálnom čase.
Scenár 1: Statické údaje je možné napevno kódovať a vytvárať správy. Tu sa výška úveru a hodnota nehnuteľnosti pred vyplatením nezmenia.
Nasledujúci obrázok obsahuje vyššie uvedený scenár:
Scenár 2 : V tomto scenári sa hodnota nehnuteľnosti každým dňom zvyšuje a istina sumy úveru by sa mala každý rok znižovať, a teda predpovedané údaje sú dynamické.
Zákazník môže prísť a priblížiť sa nám k poskytnutiu podrobností o rôznych finančných rokoch, pretože zmenil funkčné obdobie a na základe neho sa zmenil EMI. Ak ste pevne zakódovali údaje tak, ako je to znázornené na nasledujúcom obrázku, budete chytení červenou rukou.
Zvážte prípad, keď má byť správa dynamická. Nemôžeme to predložiť tak, ako to je. Pred zahájením vývoja a testovania musíme urobiť technickú kontrolu a jasne si prečítať požiadavky.
Musíme sa veľmi zreteľne zamerať na dizajnovú časť, kde sa vykonáva schválenie od obchodného analytika. Je to dobrý prístup, pretože na akékoľvek problémy s UAT, ktoré sa neskôr vyskytnú, sa na nás nedá poukázať. Predpokladá sa, že riešenie tohto problému dynamického generovania správy jednoducho použije koncepty Java pri generovaní správy.
Ako zavolať správu?
Nasledujúci diagram ilustruje postup generovania správy:
Ako vyvolať hlásenie prostredníctvom JSP?
Bez ohľadu na to, kde nazývame Java, je potrebné urobiť návrh používateľského rozhrania, pretože bude slúžiť ako sprievodná mapa a bude postupovať od predného konca. Je to ľahký spôsob, ako sa môžeme naučiť hovor Report.
Pozrime sa na príklad:
Software Report
Výkaz môžeme nakonfigurovať takto:
- Názov správy: Správa o softvéri (zobrazenie v aplikácii)
- Hlásiť volanie prostredníctvom JS: Ukážka správy
- Rozbaľovacie menu: Môže sa integrovať viac prehľadov
- Po kliknutí: Funkcia JavaScript
Ako môžu testéri iniciovať hlásenie?
Testéri zvyčajne uprednostňujú regresné testovanie prostredníctvom automatických skriptov pomocou rámca Cucumber, rámca riadeného kľúčovým slovom a rámca založeného na údajoch.
Aby sme mohli poskytnúť správu na základe požiadaviek klienta, môžeme pokračovať s readymade architektúrou, tj. IText, kde vstavaný nástroj dedí vlastnosti a správanie reportérskeho súboru, ako aj artefakty, ktoré sa majú doručiť.
Testéri môžu pomocou aplikácie iText Java vytvoriť konsolidovanú správu, ako napríklad zoznam zvyšných chýb (RBL), testovať percento výstupov, mapovať ID chýb na základe príslušných fáz, ako sú SIT, UAT a testovanie výroby.
Zvážte scenár, ktorý vyžaduje konfiguráciu viacerých správ.
Nasledujúci kód ilustruje, ako sa používa v JSP, na čo sa pozeráme v klientskom rozhraní. Používa sa táto metóda:
Software Report Software Report1 Software Report2
Ako vyvolať JavaScript (JS)?
Spravidla môžeme robiť validácie v JS, ale môžete to robiť aj v Jave. Do nášho balíka pre funkciu volania a pre vyvolanie programu za účelom generovania správy, ktorá je veľmi kompatibilná, bol zahrnutý vykonávač JavaScriptu.
Môže sa použiť na vyvolanie (volanie) metódy s objektom vlastníka ako 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 } }
Vyššie uvedená metóda sa zaoberá onload () funkcia, ktorú je možné v aplikácii vyvolať, je veľmi univerzálna a spúšťa URL na generovanie správy.
Ako zostaviť funkciu v zostave Java?
Java spracováva výstrahy a výnimky v programe a tiež vykonáva generovanie správ.
Ukážme si to na príklade.
Document Doc =new Document ();
Je to spôsob vytvorenia dokumentu a je to tiež platforma, ktorá integruje správu.
Doc.open();
Vyššie uvedený príkaz sa používa na otvorenie dokumentu. Je dôležité zahrnúť tento príkaz, akoby nebol zahrnutý, vyvolá výnimku dokumentu.
Doc.close();
Vyššie uvedený príkaz sa používa na zatvorenie dokumentu, ktorý označuje JVM, že dokument prijal zastavenie zápisu. Je dôležité zahrnúť tento príkaz, akoby nebol zahrnutý, vyvolá výnimku dokumentu.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Vyššie uvedený príkaz zobrazuje dokument, ktorý integruje vlastnosti PDF prostredníctvom PDFWriter, zavolá dokument a zviditeľní ho.
Paragraph para = new Paragraph ();
Odsek píše inštanciu obsahu automatického prispôsobenia a tiež píše hromadné riadky požiadavky.
Doc.setpercentage(%to be given);
Vo vyššie uvedenom príkaze bol vyvolaný dokument pri volaní PDF, aby bol kompatibilný, ako je definované v percentách.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Vyššie uvedený príkaz zobrazuje názov dokumentu zahrnutý v úvodzovkách a zadané umiestnenie na uloženie súboru po kliknutí na správu.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Tu ukazuje spôsob nastavenia verzie PDF v generovaní správy.
document. setPageSize (PageSize.A4);
Na základe požiadaviek tiež môžeme nastaviť veľkosť stránky toho, ako sa má správa doručiť. Veľkosť stránky ako A3, A4, A5 atď.
document. setMargins(24, 43, 34, 43);
Vyššie uvedenú funkcionalitu môžeme použiť na nastavenie okrajov a môžeme použiť metódu autofit, aby sme ju normálne prispôsobili dokumentu.
document.setMarginMirroring(true);
Vyššie uvedený príkaz zobrazuje metódu nastavenia okrajového zrkadla.
Spracovanie výstrah a výnimiek
Je dôležité zaobchádzať s výstrahami a výnimkami v prostredí Java.
Niektoré z upozornení, na ktoré narazíme za behu modulu, sú uvedené nižšie:
- Výnimka NoSuchElement
- Výnimka nulového ukazovateľa
- Pole Index je viazaný na Výnimku
- Chyba tvrdenia
- Výnimka nespracovanej výstrahy
- Výnimka SQL
- Výnimka časového limitu
- Výnimka dokumentu
Vývojár môže niekedy vytlačiť aj blok try-catch. Výnimka je uvedená pod blokom úlovku.
Príklad:
aký je dobrý prevodník z youtube na mp3
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); }
Vzorový výstup: Pozitívny scenár
Zadajte číslo, ktoré chcete skontrolovať: 2
Párne číslo
Vzorový výstup: Negatívny scenár
Zadajte číslo, ktoré chcete skontrolovať: a
Nastala výnimka: Výnimka nezákonného formátu
Vysvetlenie:
Ako vstup je potrebné zadať číslo, pretože vo vyššie uvedenom príklade kódu sme definovali „n“ ako celé číslo. Ak zadáme akékoľvek abecedy, kde sa pokúsi získať Zvyšok (použitý% modulu), potom nenačíta žiadne údaje a iba vyhodí výnimku pomocou úlovkového bloku.
Presný rozdiel medzi chybou a výnimkou v prostredí Java:
Chyba vám zabráni vo vykonaní programu, ale počas spustenia programu sa zachytí výnimka, ktorá nezastaví vaše vykonávanie.
Protokolovanie súboru:
Zápis protokolu pre každú metódu alebo modul nás prinúti zistiť, kde sa JVM zastaví. Protokol zvyčajne predstavuje hodnotu, kde je uložený v zadanom protokolovom súbore, a akým spôsobom procesor v aplikácii vykonáva program Java.
Rozdiel medzi System.out.println (SOP) a protokolom:
Oboje vytlačí hodnotu alebo predvedie akýkoľvek obsah zadaný v úvodzovkách. Ale rozdiely medzi týmito dvoma sú: Keď je program spustený, aplikácia vytlačí hodnoty na konzole príkazom SOP. Ale akonáhle sme vymazali obsah konzoly, je ťažké nájsť hodnotu. To sa stáva aj vtedy, keď máme viac SOP.
Príkaz Log factory mohol v podstate načítať a aktualizovať hodnoty. Súbor denníka môžeme zobraziť za každú cenu, pretože sa pri každom spustení zapisuje zakaždým so systémovým dátumom a časom.
Príklad:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servery
Servery hrajú v podnikovej sfére dôležitú úlohu, pretože môžu určiť, či je vykonanie programu úspešné alebo nie.
Lokálne servery sú servery, na ktorých môžeme program spustiť v našom lokálnom počítači. Môžeme použiť nasledujúce lokálne servery:
- Apache Tomcat
- JBoss
Akonáhle je kód v Pripravený stav, mal by byť nasadený na určený server a vyžaduje reštart. Mohli by sme použiť nasledujúce servery:
- Oracle Weblogic
- IBM Websphere
Ukážkový program:
Zvážte program, kde by mohol spracovať implementáciu 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()); } }
Zarovnanie v textovom prostredí Java
Používatelia spravidla potrebujú dokumenty k výkazom v konkrétnom formáte, pretože správy musia jasne predstavovať, čo a ako chcete zobraziť. IText vám s tým pomáha.
Ukážkový 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”); }}}
Používa sa iText na vytvorenie nového alebo na aktualizáciu existujúceho?
Môže nastať otázka, či sa iText používa iba na vytvorenie nového PDF? Odpoveď je nie, okrem vytvárania nových správ PDF poskytuje iText aj niektoré funkcie, ako je aktualizácia existujúceho súboru PDF a poskytovanie konsolidovaného výstupu, ktorý obsahuje aktualizovanú zmenu.
Ukážkový kód:
// 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(); }
Kus v iText Pdf:
Chunk je nová technika, ktorá zapadá do dostupného priestoru v pdf a ktorá by nevyžaduje nič, čo by ju sprevádzalo.
Ukážkový program:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Kto môže používať iText?
Profil | Rozvoj | Zobraziť prístup |
---|---|---|
Rozvoj | Možné | Užívatelsky prívetivý |
Tester | Čiastočne možné | Užívatelsky prívetivý |
Obchodný analytik | Nemožné | Užívatelsky prívetivý |
Zákazník | Nemožné | Užívatelsky prívetivý |
Záver
iTextpdf zvyčajne vypracúva príspevok k reportu pomocou Java k výsledku aplikácie
„IText je Java, ale generuje formát PDF, ktorý by sa hodil ako užívateľsky príjemný a dokáže generovať krištáľovo čisté správy.“
Výhody iTextu:
- Rozhranie na vysokej a nízkej úrovni spracovania aplikácií (API)
- Kompatibilita pri poskytovaní komplexných služieb (PEE)
- Znova skontrolovať dostupnosť toku textu pre mobilných používateľov (TFRAM)
- Prispôsobivosť.
- Dostupnosť naprieč platformami.
Nevýhody iText:
- Nie je schopný dosiahnuť konkrétne návrhy.
- Vyžadujú sa dôkladné znalosti koncepcií OOP.
Odporúčané čítanie
- Výukový program Java Reflection s príkladmi
- Výukový program Java SWING: Kontajnery, komponenty a spracovanie udalostí
- Výukový program JAVA pre začiatočníkov: viac ako 100 praktických výučbových programov Java Video
- Modifikátory prístupu v prostredí Java - návod s príkladmi
- Výukový program Java String s programom String Buffer a String Builder
- Výukový program Data Mart - Typy, príklady a implementácia Data Mart
- Java String obsahuje () Výukový program metód s príkladmi
- Výukový program pre Java String Metódy reťazca Java s príkladmi