itext tutorial convert data pdf report using java itext
Tento výukový program iText pojednává o tom, jak manipulovat s hromadnými daty do zabezpečené jediné formy zprávy PDF pomocí Java a knihovny iText:
iText je nástroj pro generování konsolidované zprávy, kde můžeme manipulovat s hromadnými daty do jediné formy entity, která obsahuje smysluplné informace.
iText je knihovna Java PDF používaná pro vytváření a manipulaci s dokumenty PDF vývojem programů Java. Mezi funkce knihovny iText patří generování interaktivních dokumentů PDF, přidávání záložek, ukládání PDF jako obrazových souborů, rozdělení a sloučení existujících PDF do více PDF atd.
Co se naučíte:
Proč iText?
Funguje ve všestranném prostředí automatizované zprávy, kterou produkují konkrétní servery, jako jsou Apache Tomcat, JBoss, Junit. Poskytuje uživatelsky definovaný dokument podle potřeb uživatele.
Je iText zaměřen na bezpečnost?
Nabízí způsoby, jakými lze dokumenty načíst na základě operací souvisejících se zabezpečením, jako je ochrana heslem nebo ověření vstupů od uživatele, například otevření výplatní pásky zadáním podrobností PAN.
V dnešní době obecně dáváme přednost ukládání dat v měkkých kopiích před tištěnými kopiemi. Je lepší ukládat zprávy na servery než papíry. Kdykoli potřebujete zprávu, spusťte soubor Java a vygenerujte jej tam a tam.
V tomto článku se pokusíme najít řešení následujících otázek:
java programovací otázky pro zkušené
- Můžeme použít multifunkčnost?
- Zda se používá pouze k přípravě zpráv?
- Kde můžeme použít text?
- Zda může vytvořit novou zprávu?
- Jsem tester, je to pro mě užitečné?
Co je iText?
Výstupem nástroje iText je zpráva PDF integrovaná v Javě. Tím se zdědí chování, komponenty PDF a vytvoří se kompatibilní zpráva.
iText je open-source API s kooperativním prostředím, účastí na full-fledge, hranolovém pronikání světla a základem generování reportů.
Například: Zvažte příklad lístku na indické železnice. Zde chceme vytisknout podrobné shrnutí procesu letenky od vyhledávání dostupnosti místa k rezervaci letenky.
Dále pochopíme, jak nám může iText s tímto požadavkem pomoci.
Některé z těchto charakteristik jsou následující:
- Úplné shrnutí žádosti (CSA)
- Snadné sledování podrobností (ETD)
- Snadné zpracování aplikace (EPA)
Jak spustit přehled iText?
Je snadné přistupovat k textu prostřednictvím Javy. Je to ilustrováno pomocí příkladu.
Business Analyst (BA) dostane od klienta dokument Business Process Document (BPD) a Functional Specification Document (FSD), který vysvětlí jejich očekávání od aplikace.
Vezměme si scénář. Společnost BA přinesla několik požadavků na vytváření sestav i na to, jak to může podporovat náš základní produkt. Díky těmto specifikacím od renomovaných klientů si myslíme, že o projekt stejně nepřijdeme kvůli mnohonásobnému zmatku a dilematu, jak dosáhnout zprávy kompatibilním způsobem.
Proč takový zmatek vzniká v generovaných zprávách?
Důvodem je, že data přítomná v aplikaci jen předvádějí odraz dat ve zprávě. Nepřesune se ke kontrole každého uzlu v aplikaci (např. Jak se provádí při MRI skenování). Je to tedy nejjednodušší způsob.
Ano přesně. Náš klient ale očekává, že data budou dynamická. Na základě dostupných údajů by měla být zpráva generována dynamickým způsobem.
Pojďme o tom diskutovat na příkladu v reálném čase.
Scénář 1: Statická data mohou být napevno zakódována a generovat zprávy. Zde se výše úvěru a hodnota nemovitosti před výplatou nezmění.
Níže naleznete obrázek výše uvedeného scénáře:
Scénář 2 : V tomto scénáři se hodnota nemovitosti každým dnem zvyšuje a jistina částky půjčky by se měla každý rok snižovat, a proto jsou předvídaná data dynamická.
Zákazník nás může kontaktovat a poskytnout nám podrobnosti pro různé finanční roky, protože změnil funkční období a na jeho základě se změnilo EMI. Pokud jste data napevno zakódovali, jak je znázorněno na následujícím obrázku, budete chyceni červeně.
Zvažte případ, kdy má být zpráva dynamická. Nemůžeme to předložit tak, jak to je. Před zahájením vývoje a testování musíme provést technickou kontrolu a jasně projít požadavky.
Musíme se velmi jasně zaměřit na konstrukční část, kde se provádí schválení od obchodního analytika. Je to dobrý přístup, protože na jakékoli problémy s UAT, které se objeví později, na nás nelze poukázat. Předpokládá se, že řešení tohoto problému dynamického generování zpráv jednoduše použije koncepty Java při generování zprávy.
Jak volat hlášení?
Níže uvedený diagram ilustruje proces generování zprávy:
Jak vyvolat hlášení prostřednictvím JSP?
Kdekoli nazýváme Javu, je nutné provést návrh uživatelského rozhraní, protože to bude fungovat jako vodicí mapa, která bude postupovat od frontendu. Je to snadný způsob, jak se můžeme naučit volání zprávy.
Uvažujme příklad:
Software Report
Sestavu můžeme nakonfigurovat tímto způsobem:
- Název zprávy: Softwarová zpráva (zobrazení v aplikaci)
- Hlášení volání prostřednictvím JS: Ukázka zprávy
- Rozbalovací nabídka: Lze integrovat více sestav
- Při kliknutí: Funkce JavaScript
Jak mohou testeři zahájit hlášení?
Testeři obvykle upřednostňují regresní testování prostřednictvím automatizačních skriptů pomocí rámce Cucumber, rámce řízeného klíčovým slovem a rámce založeného na datech.
Abychom mohli poskytnout zprávu na základě požadavků klienta, můžeme pokračovat s hotovou architekturou, tj. IText, kde vestavěný nástroj zdědí vlastnosti a chování souboru reportéru i artefakty, které mají být doručeny.
Testeři mohou pomocí aplikace iText Java vytvořit konsolidovanou zprávu, jako je Remaining Bug List (RBL), testovat procento výstupů, mapovat ID chyb na základě příslušných fází, jako je SIT, UAT a testování produkce.
Zvažte scénář, který vyžaduje konfiguraci více sestav.
Níže uvedený kód ilustruje, jak se používá v JSP, což je to, na co se díváme v rozhraní frontend. Používá se následující metoda:
Software Report Software Report1 Software Report2
Jak vyvolat JavaScript (JS)?
Obecně můžeme provádět ověření v JS, ale můžete to udělat i v Javě. V našem balíčku pro zahrnutí funkce a vyvolání programu pro vygenerování zprávy, která je velmi kompatibilní, byl zahrnut JavaScriptový exekutor.
Lze jej použít k vyvolání (volání) metody s objektem vlastníka jako argumentem.
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 } }
Výše uvedená metoda zpracovává onload () funkce, kterou lze v aplikaci vyvolat, je velmi univerzální a spouští adresu URL pro generování zprávy.
Jak sestavit funkci v sestavě Java?
Java zpracovává výstrahy a výjimky v programu a také provádí generování zpráv.
Ilustrujme to pomocí příkladu.
Document Doc =new Document ();
Jedná se o způsob vytvoření dokumentu a je to také platforma, která integruje zprávu.
Doc.open();
Výše uvedený příkaz se používá k otevření dokumentu. Je důležité zahrnout tento příkaz, jako by nebyl zahrnut, vyvolá výjimku dokumentu.
Doc.close();
Výše uvedený příkaz se používá k uzavření dokumentu, který označuje JVM, že dokument přijal zastavení psaní. Je důležité zahrnout tento příkaz, jako by nebyl zahrnut, vyvolá výjimku dokumentu.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Výše uvedený příkaz ukazuje dokument, který integruje vlastnosti PDF prostřednictvím PDFWriter, zavolá dokument a zviditelní jej.
Paragraph para = new Paragraph ();
Odstavec zapíše instanci obsahu automatického přizpůsobení a také zapíše hromadné řádky požadavku.
Doc.setpercentage(%to be given);
Ve výše uvedeném příkazu byl vyvolán dokument při volání PDF tak, aby byl kompatibilní, jak je definováno zahrnutým procentem.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Výše uvedený příkaz zobrazuje název dokumentu obsažený v uvozovkách a zadané umístění pro uložení souboru po kliknutí na sestavu.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Zde ukazuje způsob, jak nastavit verzi PDF v generování zprávy.
document. setPageSize (PageSize.A4);
Můžeme také nastavit velikost stránky toho, jak má být zpráva doručena na základě požadavků. Velikost stránky jako A3, A4, A5 atd.
document. setMargins(24, 43, 34, 43);
Výše uvedenou funkci můžeme použít k nastavení okrajů a můžeme použít metodu automatického přizpůsobení, abychom ji normálně přizpůsobili dokumentu.
document.setMarginMirroring(true);
Výše uvedený příkaz zobrazuje metodu nastavení Margin Mirror.
Zpracování výstrah a výjimek
Je důležité zpracovávat výstrahy a výjimky v Javě.
Níže jsou uvedena některá upozornění, se kterými se setkáme za běhu:
- NoSuchElement Výjimka
- Výjimka nulového ukazatele
- Pole index vázáno na výjimku
- Chyba tvrzení
- Neošetřená výjimka výstrahy
- Výjimka SQL
- Výjimka časového limitu
- Výjimka z dokumentu
Někdy může vývojář také vytisknout výjimku bloku try-catch. Výjimka je uzavřena pod blokem catch.
Příklad:
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); }
Ukázkový výstup: Pozitivní scénář
Zadejte číslo ke kontrole: 2
Sudé číslo
Ukázkový výstup: Negativní scénář
Zadejte číslo ke kontrole: a
Došlo k výjimce: Výjimka nelegálního formátu
Vysvětlení:
Jako vstup je nutné zadat číslo, protože ve výše uvedeném příkladu kódu jsme definovali „n“ jako celé číslo. Pokud zadáme libovolné abecedy, kde se pokusí získat Remainder (použitý% modulu), pak nenačte žádná data a pouze vyvolá výjimku pomocí bloku catch.
Přesný rozdíl mezi chybou a výjimkou v Javě:
jaký je nejlepší bezplatný stahovač hudby?
Chyba vám zastaví spuštění programu, ale při spuštění programu bude zachycena výjimka, která nezastaví vaše spuštění.
Protokolování protokolu souboru:
Zápis protokolu pro každou metodu nebo modul umožňuje identifikovat, kde se JVM zastaví. Protokol obvykle zobrazuje hodnotu, kde je uložen v zadaném souboru protokolu a jakým způsobem procesor v aplikaci provádí program Java.
Rozdíl mezi System.out.println (SOP) a protokolem:
Obojí vytiskne hodnotu nebo předvede jakýkoli obsah zadaný v uvozovkách. Ale rozdíly mezi těmito dvěma jsou: Když je program spuštěný, aplikace vytiskne hodnoty na konzole příkazem SOP. Ale jakmile jsme vymazali obsah konzoly, je těžké najít hodnotu. To se také stává, když máme více SOP.
Příkaz Log factory mohl v zásadě načíst a aktualizovat hodnoty. Soubor protokolu můžeme zobrazit za každou cenu, protože se zapisuje pokaždé při každém spuštění se systémovým datem a časem.
Příklad:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servery
Servery hrají ve společnosti důležitou roli, protože mohou určit, zda je předání programu předáno či nikoli.
Místní servery jsou servery, kde můžeme program spustit v našem místním počítači. Můžeme použít následující místní servery:
- Apache Tomcat
- JBoss
Jakmile je kód v Připraveno stav, měl by být nasazen na určený server a vyžaduje restart. Mohli bychom použít následující servery:
- Oracle Weblogic
- IBM Websphere
Ukázkový program:
Zvažte program, kde by mohl zpracovat implementaci 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()); } }
Zarovnání v prostředí Itext Java
Uživatelé obecně potřebují dokumenty sestavy v určitém formátu, protože sestavy musí jasně představovat, co a jak chcete zobrazit výsledky. IText vám s tím pomůže.
Ukázkový 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žívá se iText k vytvoření nového nebo aktualizaci stávajícího?
Může vyvstat otázka, zda se iText používá pouze k vytvoření nového PDF? Odpověď zní ne, kromě vytváření nových zpráv PDF poskytuje iText také některé funkce, jako je aktualizace existujícího souboru PDF a poskytnutí konsolidovaného výstupu, který zahrnuje aktualizovanou změnu.
Ukázkový 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, která zapadá do dostupného prostoru v pdf a která by nevyžadovala nic, co by ji doprovázelo.
Ukázkový program:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Kdo může používat iText?
Profil | Rozvoj | Zobrazit přístup |
---|---|---|
Rozvoj | Možný | Uživatelsky přívětivý |
Tester | Částečně možné | Uživatelsky přívětivý |
Obchodní analytik | Nemožné | Uživatelsky přívětivý |
Zákazník | Nemožné | Uživatelsky přívětivý |
Závěr
iTextpdf obvykle zpracovává příspěvek zprávy pomocí Java k výsledku aplikace
'IText je Java, ale generuje pdf, které by se hodilo jako uživatelsky přívětivé a může generovat křišťálově čisté zprávy'
Výhody iText:
- High and low-level Application Processing Interface (API)
- Kompatibilita při poskytování služeb typu end to end (PEE)
- Znovu zkontrolovat dostupnost textového toku pro uživatele mobilních zařízení (TFRAM)
- Přizpůsobivost.
- Dostupnost napříč platformami.
Nevýhody iText:
- Není schopen dosáhnout konkrétních návrhů.
- Je nutná důkladná znalost konceptů OOP.
Doporučené čtení
- Výukový program Java Reflection s příklady
- Výukový program Java SWING: Kontejner, komponenty a zpracování událostí
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Modifikátory přístupu v Javě - výuka s příklady
- Výukový program Java String s funkcí String Buffer a String Builder
- Výukový program Data Mart - Typy, příklady a implementace Data Mart
- Java String obsahuje () Výukový program metod s příklady
- Výukový program Java String | Metody řetězců Java s příklady