itext tutorial convert data pdf report using java itext
Denne opplæringen til iText diskuterer hvordan man kan manipulere massedata til en sikker, enkelt form for PDF-rapport ved hjelp av Java og iText-biblioteket:
iText er verktøyet for å generere en konsolidert rapport der vi kan manipulere bulkdata til den eneste formen for enhet som inneholder meningsfull informasjon.
iText er et Java PDF-bibliotek som brukes til å lage og manipulere PDF-dokumenter ved å utvikle Java-programmer. Noen av funksjonene i iText-biblioteket inkluderer å generere interaktive PDF-dokumenter, legge til bokmerker, lagre PDF-filer som bildefiler, dele og slå sammen eksisterende PDF-filer i flere PDF-filer osv.
Hva du vil lære:
Hvorfor iText?
Det fungerer i et allsidig miljø i en automatisert rapport som er produsert av spesifikke servere som Apache Tomcat, JBoss, Junit. Det gir et brukerdefinert dokument i henhold til brukerens behov.
Er iText sikkerhetsorientert?
Det tilbyr måter som dokumenter kan hentes på grunnlag av sikkerhetsrelaterte operasjoner som passordbeskyttet eller validerende innganger fra brukeren, som å åpne lønnsslipp ved å legge inn PAN-detaljer.
I dag foretrekker vi generelt å lagre data i myke kopier i stedet for på papir. Det er bedre å lagre rapporter på servere enn papirer. Når du trenger rapporten, kjører du bare Java-filen og genererer den der og der.
La oss i denne artikkelen prøve å finne løsningen på følgende spørsmål:
hvordan du bruker solarmovie uten å registrere deg
- Kan vi bruke multifunksjonalitet?
- Om det bare brukes til å utarbeide rapporter?
- Hvor kan vi bruke Itext?
- Om den kan lage den nye rapporten?
- Jeg er tester, er det nyttig for meg?
Hva er iText?
Resultatet av iText-verktøyet er en PDF-rapport integrert av Java. Dette arver PDF-oppførselen, komponentene og genererer en kompatibel rapport.
iText er en åpen kildekode-API med et samarbeidsmiljø, deltakelse i fullverdig, prisme-penetrering av lys og grunnlaget for rapportgenerering.
For eksempel: Tenk på et eksempel på en Indian Railways-billett. Her vil vi ha utskrift av detaljert sammendrag av billettprosessen, fra å søke på ledig plass til bestilling av billetten.
Deretter vil vi forstå hvordan iText kan hjelpe oss med dette kravet.
Noen av egenskapene er som følger:
- Komplett sammendrag av søknaden (CSA)
- Enkel sporing av detaljer (ETD)
- Enkel behandling av applikasjonen (EPA)
Hvordan starte iText-rapporten?
Det er enkelt å nærme seg Itext gjennom Java. Det er illustrert ved hjelp av et eksempel.
Business Analyst (BA) får Business Process Document (BPD) og Functional Specification Document (FSD) fra klienten som forklarer deres forventninger fra applikasjonen.
La oss ta et scenario. BA hadde flere krav til rapportinnramming, samt hvordan basisproduktet vårt kan støtte dette. Slike spesifikasjoner fra anerkjente kunder får oss til å tro at vi ikke mister prosjektet på grunn av mangfoldig forvirring og dilemma om hvordan vi skal oppnå rapporten på en kompatibel måte.
Hvorfor oppstår slik forvirring i genererte rapporter?
Dette er fordi dataene i applikasjonen bare viser gjenspeiling av data i rapporten. Det beveger seg ikke for å sjekke hver node i applikasjonen (Eks. Som er gjort i MR-skanning). Dermed er det den enkleste måten.
Ja nøyaktig. Men vår klient forventer at dataene er dynamiske. Basert på tilgjengelige data, bør rapporten genereres på en dynamisk måte.
La oss diskutere dette med et sanntidseksempel.
Scenario 1: Statiske data kan være hardkodet og generere rapporter. Her endres ikke lånebeløpet og eiendomsverdien før utbetaling.
Vennligst finn bildet nedenfor for scenariet ovenfor:
Scenario 2 : I dette scenariet øker eiendomsverdien dag for dag, og lånebeløpet skal reduseres hvert år, og dermed er dataene som er spådd dynamiske.
En kunde kan komme og henvende seg til oss for å oppgi detaljene i ulike regnskapsår fordi han har endret ansettelsesperioden og basert på den hadde EMI vært variert. Hvis du har hardkodet dataene som vist i figuren nedenfor, blir du fanget på fersk hånd.
Tenk på tilfellet der rapporten skal være dynamisk. Vi kan ikke legge det frem som det er. Vi må gjøre den tekniske inspeksjonen og gå tydelig gjennom kravene før vi starter utviklingen og testingen.
Vi må fokusere veldig tydelig på designdelen der godkjenningen gjøres fra Business Analyst. Det er en god tilnærming fordi eventuelle UAT-spørsmål som tas opp senere ikke kan påpekes for oss. Løsningen for dette problemet med generering av dynamisk rapport er spådd å bare bruke Java-konsepter for å generere en rapport.
Hvordan ringe en rapport?
Diagrammet nedenfor illustrerer prosessen for å generere en rapport:
Hvordan påkalle rapport gjennom JSP?
Uansett hvor vi kaller Java, er det nødvendig å gjøre UI-design, da dette vil fungere som et veiledningskart for å fortsette fra frontenden. Det er en enkel måte som vi kan lære rapportanropet.
La oss se på et eksempel:
Software Report
Vi kan konfigurere rapporten på denne måten:
- Rapportnavn: Programvarerapport (vises i applikasjonen)
- Rapporter anrop gjennom JS: Eksempelrapport
- Slipp-meny: Flere rapporter kan integreres
- Ved trykk: JavaScript-funksjon
Hvordan kan testere sette i gang rapport?
Testere foretrekker vanligvis regresjonstesting gjennom automatiseringsskripter ved hjelp av agurkerammeverket, søkeorddrevet rammeverk og datadrevet rammeverk.
For å levere rapporten basert på kundens krav, kan vi fortsette med ferdiglaget arkitektur, dvs. iText der det innebygde verktøyet arver reporterfilens egenskaper og oppførsel, samt gjenstander som skal leveres.
Testere kan lage den konsoliderte rapporten, for eksempel RBL (Resting Bug List), prosentandel testleveranser, kartlegging av feil-ID basert på de respektive fasene, for eksempel SIT, UAT, og produksjonstesting ved hjelp av iText Java.
Vurder et scenario som må konfigurere flere rapporter.
Koden nedenfor illustrerer hvordan du bruker i JSP, det er det vi ser på i frontenden. Følgende metode brukes:
Software Report Software Report1 Software Report2
Hvordan påkalle jeg JavaScript (JS)?
Generelt kan vi gjøre valideringer i JS, men du kan gjøre det selv i Java. JavaScript-utfører har blitt inkludert i pakken vår for å ringe funksjon og å påkalle programmet for å generere en rapport som er veldig kompatibel.
Den kan brukes til å påkalle (anrop) metoden med et eierobjekt som 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 } }
Ovennevnte metode håndterer på Last() funksjon som kan påberopes i applikasjonen for å være veldig allsidig som utløser URL-en for å generere rapport.
Hvordan bygge funksjonen i Java-rapport?
Java håndterer varslene og unntakene i programmet og utfører også rapportgenerering.
La oss illustrere dette ved hjelp av et eksempel.
Document Doc =new Document ();
Det er måten å lage dokumentet på, og det er også plattformen som integrerer rapporten.
Doc.open();
Ovennevnte kommando brukes til å åpne dokumentet. Det er viktig å ta med denne kommandoen som om den ikke er inkludert, den vil kaste dokument unntak.
Doc.close();
Ovennevnte kommando brukes til å lukke dokumentet som indikerer JVM at dokumentet har godtatt å slutte å skrive. Det er viktig å ta med denne kommandoen som om den ikke er inkludert, den vil kaste dokument unntak.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Ovennevnte kommando viser dokumentet som integrerer egenskapene til PDF gjennom PDFWriter, kaller dokumentet og gjør det synlig.
beste stedet å se gratis anime
Paragraph para = new Paragraph ();
Et avsnitt skriver forekomsten av autofit-innholdet og skriver også hovedlinjene i kravet.
Doc.setpercentage(%to be given);
I kommandoen ovenfor er et dokument påkalt ved å kalle PDF-filen for å være kompatibel som definert av prosentandelen som er inkludert.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Ovennevnte kommando viser dokumentnavnet, inkludert i dobbelt anførselstegn, og den angitte plasseringen for å lagre filen når rapporten er klikket.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Her viser den måten å sette PDF-versjonen på i generasjonen av rapporter.
document. setPageSize (PageSize.A4);
Vi kan også angi sidestørrelsen for hvordan rapporten skal leveres ut fra kravene. Sidestørrelsen som A3, A4, A5, etc.
document. setMargins(24, 43, 34, 43);
Vi kan bruke ovennevnte funksjonalitet til å sette marginer, og vi kan bruke autofit-metoden for å passe den normalt i dokumentet.
document.setMarginMirroring(true);
Kommandoen ovenfor viser metoden for innstillingen for margspeil.
Håndtering av varsler og unntak
Det er viktig å håndtere varslene og unntakene i Java.
Noen av varslene vi kommer over i løpet av kjøretiden er vervet nedenfor:
- NoSuchElement Unntak
- Null Pointer Unntak
- Array Index bound of Exception
- Påstandsfeil
- Ubehandlet varsel unntak
- SQL-unntak
- Timeout Unntak
- Dokument unntak
Noen ganger kan utvikleren også skrive ut unntaket fra en prøvefangstblokk. Unntaket er lukket under fangstblokken.
Eksempel:
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); }
Eksempel på utgang: Positivt scenario
Skriv inn nummeret du vil sjekke: 2
Partall
Eksempel på utgang: Negativt scenario
Skriv inn nummeret du vil sjekke: a
Det oppstod et unntak: Ulovlig format unntak
Forklaring:
Et tall må oppgis som inndata fordi vi har definert ‘n’ som et heltall i ovennevnte kodeeksempel. Hvis vi skriver inn noen alfabeter der den prøver å få Resten (% modulus brukt), vil den ikke hente noen data og bare kaste unntaket ved hjelp av fangstblokk.
Den eksakte forskjellen mellom feil og unntak i Java:
En feil hindrer deg i å kjøre programmet, men et unntak blir fanget mens du kjører programmet mens det ikke stopper kjøringen.
Logge en fillogg:
Å skrive loggen for hver metode eller modul får oss til å identifisere hvor JVM slutter å kjøre. En logg viser vanligvis verdien der den er lagret i den angitte loggfilen, og på hvilken måte prosessoren utfører Java-programmet i applikasjonen.
Forskjellen mellom System.out.println (SOP) og Log:
Begge skriver ut verdien eller viser ut hva innholdet er angitt med to anførselstegn. Men forskjellene mellom disse to er: Mens programmet kjører, skriver applikasjonen ut verdiene på konsollen etter SOP-kommando. Men når vi først har slettet innholdet i konsollen, er det vanskelig å finne verdien. Dette skjer også når vi har flere SOP-er.
I utgangspunktet kan Logg-fabrikk-kommandoen hente og oppdatere verdiene. Vi kan se loggfilen for enhver pris fordi den skriver hver gang ved hvert løp med systemdato og -tid.
Eksempel:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Servere
Servere spiller en viktig rolle i firmaet, da det kan avgjøre om programutførelsen er bestått eller ikke.
Lokale servere er serverne der vi kan utføre programmet i vår lokale maskin. Vi kan bruke følgende lokale servere:
- Apache Tomcat
- JBoss
Når koden er inne Klar tilstand, den skal distribueres til den angitte serveren, og den krever omstart. Vi kan bruke følgende servere:
- Oracle Weblogic
- IBM Websphere
Eksempelprogram:
Tenk på programmet der det kan behandle iText-implementeringen.
/****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()); } }
Justering i Itext Java
Vanligvis trenger brukerne rapportdokumentene i et bestemt format, fordi rapportene må tydelig representere hva og hvordan du vil vise resultatene. IText hjelper deg med dette.
Eksempelprogram
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”); }}}
Brukes iText til å lage en ny eller oppdatere en eksisterende?
Det kan oppstå et spørsmål om iText bare brukes til å lage en ny PDF? Svaret er nei, i tillegg til å generere nye PDF-rapporter, gir iText også noen funksjoner som å oppdatere en eksisterende pdf og gi den konsoliderte utdata som inkluderer den oppdaterte endringen.
Eksempelkode:
// 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 i iText Pdf:
Chunk er den nye teknikken som passer inn i tilgjengelig plass i pdf og som ikke krever noe å følge med.
Eksempelprogram:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Hvem kan bruke iText?
Profil | Utvikling | Vis tilgang |
---|---|---|
Utvikling | Mulig | Brukervennlig |
Tester | Delvis mulig | Brukervennlig |
Forretningsanalytiker | Ikke mulig | Brukervennlig |
Kunde | Ikke mulig | Brukervennlig |
Konklusjon
iTextpdf utdyper vanligvis rapportbidrag ved hjelp av Java mot applikasjonsresultat
“IText er Java, men det genererer pdf som passer som brukervennlig og kan generere krystallklare rapporter”
Fordeler med iText:
- API på høyt og lavt nivå Application Application Processing
- Kompatibilitet i å tilby slutt-til-slutt-tjenester (PEE)
- Tekstflyt Kontroller tilgjengelighet for mobilbrukere (TFRAM)
- Tilpasningsevne.
- Tilgjengelighet på tvers av plattformer.
Ulemper ved iText:
- Det er ikke i stand til å oppnå spesifikke design.
- Det kreves grundig kunnskap om OOPs konsepter.
Anbefalt lesing
- Java Reflection Tutorial med eksempler
- Java SWING Tutorial: Container, Components and Event Handling
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Få tilgang til modifikatorer i Java - opplæring med eksempler
- Java String with String Buffer and String Builder Tutorial
- Data Mart Tutorial - Typer, eksempler og implementering av Data Mart
- Java String inneholder () Metodeopplæring med eksempler
- Java String Tutorial | Java strengmetoder med eksempler