itext tutorial convert data pdf report using java itext
Questo tutorial iText spiega come manipolare i dati in blocco in un rapporto PDF sicuro e unico utilizzando Java e la libreria iText:
iText è lo strumento per generare un report consolidato in cui possiamo manipolare i dati di massa in un'unica forma di entità che contiene informazioni significative.
iText è una libreria PDF Java utilizzata per creare e manipolare documenti PDF sviluppando programmi Java. Alcune delle caratteristiche della libreria iText includono la generazione di documenti PDF interattivi, l'aggiunta di segnalibri, il salvataggio di PDF come file di immagine, la divisione e l'unione di PDF esistenti in più PDF, ecc.
Cosa imparerai:
Perché iText?
Funziona in un ambiente versatile di un report automatizzato prodotto da server specifici come Apache Tomcat, JBoss, Junit. Fornisce un documento definito dall'utente in base alle esigenze dell'utente.
IText è orientato alla sicurezza?
Offre modi con i quali i documenti possono essere recuperati in base a operazioni relative alla sicurezza come la protezione da password o la convalida degli input da parte dell'utente come l'apertura della busta paga inserendo i dettagli PAN.
Al giorno d'oggi, generalmente preferiamo salvare i dati in copie software piuttosto che in copie cartacee. È meglio archiviare i rapporti sui server che sui documenti. Ogni volta che hai bisogno del rapporto, esegui il file Java e generalo subito.
In questo articolo, proviamo a trovare la soluzione alle seguenti domande:
java come creare un array di oggetti
- Possiamo usare la multifunzionalità?
- Se viene utilizzato solo per la preparazione dei rapporti?
- Dove possiamo usare Itext?
- Se può creare il nuovo rapporto?
- Sono un tester, mi è utile?
Cos'è iText?
L'output dello strumento iText è un report PDF integrato da Java. Questo eredita i comportamenti, i componenti del PDF e genera un rapporto compatibile.
iText è un'API open source con un ambiente cooperativo, partecipazione a pieno titolo, penetrazione della luce del prisma e fondamento della generazione di report.
Per esempio: Considera un esempio di biglietto delle ferrovie indiane. Qui, vogliamo la stampa del riepilogo dettagliato del processo del biglietto a partire dalla ricerca della disponibilità del posto fino alla prenotazione del biglietto.
Successivamente, capiremo come iText può aiutarci con questo requisito.
Alcune delle caratteristiche sono le seguenti:
- Riepilogo completo dell'applicazione (CSA)
- Easy Tracking Details (ETD)
- Facile elaborazione dell'applicazione (EPA)
Come avviare il rapporto iText?
È facile avvicinarsi all'Itext tramite Java. È illustrato con l'aiuto di un esempio.
Business Analyst (BA) riceve il Business Process Document (BPD) e il Functional Specification Document (FSD) dal cliente che spiega le loro aspettative dall'applicazione.
Prendiamo uno scenario. BA ha portato diversi requisiti sull'inquadratura dei report e sul modo in cui il nostro prodotto di base può supportarlo. Tali specifiche da clienti rinomati ci fanno pensare di non perdere comunque il progetto a causa di molteplici confusioni e dilemmi su come ottenere il rapporto in modo compatibile.
Perché tanta confusione sorge nei Rapporti generati?
Questo perché i dati presenti nell'applicazione mostrano solo il riflesso dei dati nel report. Non si sposta per controllare ogni nodo nell'applicazione (es. Come viene fatto nella scansione MRI). Quindi, è il modo più semplice.
Si, esattamente. Ma il nostro cliente si aspetta che i dati siano dinamici. Sulla base dei dati disponibili, il report dovrebbe essere generato in modo dinamico.
Parliamo di questo con un esempio in tempo reale.
Scenario 1: I dati statici potrebbero essere codificati e generare rapporti. Qui, l'importo del prestito e il valore della proprietà non cambiano prima dell'erogazione.
Si prega di trovare l'immagine qui sotto per lo scenario sopra:
Scenario 2 : In questo scenario, il valore della proprietà aumenta di giorno in giorno e il capitale dell'importo del prestito dovrebbe essere ridotto ogni anno, quindi i dati previsti sono dinamici.
Un cliente può venire e avvicinarsi a noi per fornire i dettagli per vari esercizi finanziari perché ha cambiato il mandato e sulla base di esso l'EMI era stato variato. Se hai codificato i dati come mostrato nella figura sotto, sarai colto in flagrante.
Considera il caso in cui il rapporto dovrebbe essere dinamico. Non possiamo presentarlo così com'è. Dobbiamo eseguire l'ispezione tecnica e esaminare chiaramente i requisiti prima di iniziare lo sviluppo e il test.
Dobbiamo concentrarci molto chiaramente sulla parte di progettazione in cui viene fatta l'approvazione da parte dell'analista aziendale. È un buon approccio perché eventuali problemi UAT sollevati in seguito non possono essere segnalati a noi. Si prevede che la soluzione per questo problema di generazione di report dinamici utilizzi semplicemente i concetti Java nella generazione di un report.
Come chiamare un report?
Il diagramma seguente illustra il processo per generare un report:
Come richiamare il report tramite JSP?
Ovunque chiamiamo Java, è necessario progettare l'interfaccia utente poiché questa fungerà da mappa guida per procedere dal front-end. È un modo semplice in quanto possiamo imparare la chiamata Report.
Prendiamo in considerazione un esempio:
Software Report
Possiamo configurare il report in questo modo:
- Nome rapporto: Report software (visualizzato nell'applicazione)
- Segnala una chiamata tramite JS: Rapporto di esempio
- Menu a tendina: È possibile integrare più rapporti
- Al clic: Funzione JavaScript
In che modo i tester possono avviare il report?
I tester di solito preferiscono i test di regressione tramite script di automazione che utilizzano il framework Cucumber, il framework Keyword Driven e il framework Data-Driven.
Per fornire il rapporto in base ai requisiti del cliente, possiamo procedere con un'architettura già pronta, ovvero iText, in cui lo strumento integrato eredita le proprietà e il comportamento del file reporter, nonché gli artefatti da consegnare.
I tester possono creare report consolidati come Remaining Bug List (RBL), percentuale di deliverable di test, mappatura dell'ID bug in base alle rispettive fasi come SIT, UAT e test di produzione utilizzando iText Java.
Considera uno scenario che necessita di configurare più rapporti.
Il codice seguente illustra come utilizzare in JSP che è ciò che guardiamo nel front-end. Viene utilizzato il metodo seguente:
Software Report Software Report1 Software Report2
Come invocare in JavaScript (JS)?
In generale, possiamo fare convalide in JS, ma puoi farlo anche in Java. L'esecutore JavaScript è stato incluso nel nostro pacchetto per chiamare la funzione e invocare il programma per generare un report che è molto compatibile.
Può essere utilizzato per invocare (chiamare) il metodo con un oggetto proprietario come argomento.
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 } }
Il metodo sopra gestisce il file onload () funzione che può essere richiamata nell'applicazione per essere molto versatile che attiva l'URL per generare report.
Come costruire la funzione nel report Java?
Java gestisce gli avvisi e le eccezioni nel programma ed esegue anche la generazione del report.
Illustriamolo con l'aiuto di un esempio.
Document Doc =new Document ();
È il modo di creare il documento ed è anche la piattaforma che integra il report.
Doc.open();
Il comando precedente viene utilizzato per aprire il documento. È importante includere questo comando come se non fosse incluso, genererà un'eccezione al documento.
Doc.close();
Il comando precedente viene utilizzato per chiudere il documento che indica a JVM che il documento ha accettato di interrompere la scrittura. È importante includere questo comando come se non fosse incluso, genererà un'eccezione al documento.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Il comando precedente mostra il documento che integra le proprietà del PDF tramite PDFWriter, chiama il documento e lo rende visibile.
Paragraph para = new Paragraph ();
Un paragrafo scrive l'istanza dei contenuti di adattamento automatico e scrive anche le righe in blocco del requisito.
Doc.setpercentage(%to be given);
Nel comando precedente, è stato richiamato un documento per chiamare il PDF compatibile come definito dalla percentuale inclusa.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Il comando precedente visualizza il nome del documento, incluso tra virgolette doppie, e la posizione specificata per memorizzare il file una volta che si fa clic sul report.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Qui, mostra come impostare la versione PDF nella generazione del report.
document. setPageSize (PageSize.A4);
Possiamo anche impostare la dimensione della pagina di come il report deve essere consegnato in base ai requisiti. La dimensione della pagina come A3, A4, A5, ecc.
document. setMargins(24, 43, 34, 43);
Possiamo usare la funzionalità di cui sopra per impostare i margini e possiamo usare il metodo di adattamento automatico per adattarlo normalmente al documento.
document.setMarginMirroring(true);
Il comando precedente mostra il metodo di impostazione dello specchio del margine.
Gestione di avvisi ed eccezioni
È importante gestire gli avvisi e le eccezioni in Java.
Alcuni degli avvisi che incontriamo durante il runtime sono elencati di seguito:
- NoSuchElement Eccezione
- Eccezione puntatore nullo
- Indice di matrice associato all'eccezione
- Errore di asserzione
- Eccezione avviso non gestita
- Eccezione SQL
- Eccezione timeout
- Eccezione documento
A volte, lo sviluppatore può anche stampare l'eccezione di un blocco try-catch. L'eccezione è racchiusa sotto il blocco catch.
Esempio:
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); }
Output di esempio: scenario positivo
Immettere il numero da controllare: 2
Numero pari
Output di esempio: scenario negativo
Immettere il numero da controllare: a
Si è verificata un'eccezione: Eccezione di formato illegale
Spiegazione:
È necessario fornire un numero come input perché abbiamo definito 'n' come numero intero nell'esempio di codice precedente. Se inseriamo degli alfabeti in cui cerca di ottenere il Resto (% modulo utilizzato), non recupererà alcun dato e genererà semplicemente l'eccezione utilizzando il blocco catch.
La differenza esatta tra errore ed eccezione in Java:
Un errore ti impedirà di eseguire il programma ma verrà rilevata un'eccezione durante l'esecuzione del programma mentre non interromperà l'esecuzione.
Registrazione di un registro file:
Scrivere il log per ogni metodo o modulo ci consente di identificare dove termina l'esecuzione di JVM. Un registro di solito mostra il valore in cui è memorizzato nel file di registro specificato e in che modo il processore esegue il programma Java nell'applicazione.
Differenza tra System.out.println (SOP) e Log:
Entrambi stampano il valore o mostrano il contenuto inserito tra virgolette doppie. Ma il le differenze tra questi due sono: Mentre il programma è in esecuzione, l'applicazione stampa i valori sulla console tramite il comando SOP. Ma una volta cancellato il contenuto della console, è difficile trovare il valore. Questo accade anche quando abbiamo più SOP.
Fondamentalmente, il comando Log factory potrebbe recuperare e aggiornare i valori. Possiamo visualizzare il file di registro a qualsiasi costo perché scrive ogni volta ad ogni esecuzione con la data e l'ora del sistema.
Esempio:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Server
I server svolgono un ruolo importante nell'azienda in quanto possono determinare se l'esecuzione del programma viene passata o meno.
I server locali sono i server in cui possiamo eseguire il programma nella nostra macchina locale. Possiamo utilizzare i seguenti server locali:
- Apache Tomcat
- JBoss
Una volta inserito il codice Stato pronto, dovrebbe essere distribuito al server specificato e richiede un riavvio. Potremmo utilizzare i seguenti server:
- Oracle Weblogic
- IBM Websphere
Programma di esempio:
Considera il programma in cui potrebbe elaborare l'implementazione di 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()); } }
Allineamento in Itext Java
In genere, gli utenti necessitano dei documenti del report in un formato specifico perché i report devono rappresentare chiaramente cosa e come si desidera mostrare i risultati. IText ti aiuta in questo.
Programma di esempio
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”); }}}
IText viene utilizzato per crearne uno nuovo o aggiornarne uno esistente?
Potrebbe sorgere una domanda se iText viene utilizzato solo per creare un nuovo PDF? La risposta è no, oltre a generare nuovi report PDF, iText fornisce anche alcune funzionalità come l'aggiornamento di un pdf esistente e fornisce l'output consolidato che include la modifica aggiornata.
Codice di esempio:
// 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(); }
Pezzo in iText Pdf:
Chunk è la nuova tecnica che si inserisce nello spazio disponibile in pdf e che non richiederebbe nulla di accompagnamento.
puoi creare un array di oggetti in java
Programma di esempio:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Chi può usare iText?
Profilo | Sviluppo | Visualizza accesso |
---|---|---|
Sviluppo | Possibile | Facile da usare |
Tester | Parzialmente possibile | Facile da usare |
Analista di affari | Non possibile | Facile da usare |
Cliente | Non possibile | Facile da usare |
Conclusione
iTextpdf di solito elabora il contributo del report utilizzando Java per il risultato dell'applicazione
'IText è Java, ma genera PDF che si adatterebbe come user-friendly e può generare rapporti cristallini'
Vantaggi di iText:
- API (Application Processing Interface) di alto e basso livello
- Compatibilità nella fornitura di servizi end to end (PEE)
- Controllo della disponibilità del flusso di testo per gli utenti mobili (TFRAM)
- Adattabilità.
- Disponibilità multipiattaforma.
Svantaggi di iText:
- Non è in grado di realizzare progetti specifici.
- È richiesta una conoscenza approfondita dei concetti di OOP.
Lettura consigliata
- Tutorial Java Reflection con esempi
- Tutorial Java SWING: contenitore, componenti e gestione degli eventi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Modificatori di accesso in Java - Tutorial con esempi
- Java String con String Buffer e String Builder Tutorial
- Esercitazione sul data mart - Tipi, esempi e implementazione del data mart
- Tutorial sul metodo Java String contains () con esempi
- Tutorial Java String | Metodi Java String con esempi