itext tutorial convert data pdf report using java itext
In diesem iText-Lernprogramm wird erläutert, wie Sie Massendaten mithilfe von Java und iText Library in eine sichere, einzelne Form von PDF-Berichten bearbeiten:
iText ist das Tool zum Generieren eines konsolidierten Berichts, in dem wir Massendaten in eine einzelne Entitätsform mit aussagekräftigen Informationen umwandeln können.
iText ist eine Java PDF-Bibliothek, die zum Erstellen und Bearbeiten von PDF-Dokumenten durch Entwicklung von Java-Programmen verwendet wird. Zu den Funktionen der iText-Bibliothek gehören das Generieren interaktiver PDF-Dokumente, das Hinzufügen von Lesezeichen, das Speichern von PDFs als Bilddateien, das Teilen und Zusammenführen vorhandener PDFs in mehrere PDFs usw.
Was du lernen wirst:
- Warum iText?
- Was ist iText?
- Wie starte ich den iText-Bericht?
- Wie rufe ich einen Bericht über JSP auf?
- Wie können Tester einen Bericht initiieren?
- Wie rufe ich JavaScript (JS) auf?
- Wie erstelle ich die Funktion in Java Report?
- Umgang mit Warnungen und Ausnahmen
- Server
- Ausrichtung in Itext Java
- Wer kann iText verwenden?
- Fazit
Warum iText?
Es funktioniert in einer vielseitigen Umgebung eines automatisierten Berichts, der von bestimmten Servern wie Apache Tomcat, JBoss, Junit erstellt wird. Es bietet ein benutzerdefiniertes Dokument, das den Anforderungen des Benutzers entspricht.
Ist iText sicherheitsorientiert?
Es bietet Möglichkeiten, wie Dokumente basierend auf sicherheitsrelevanten Vorgängen wie kennwortgeschütztem oder validierenden Eingaben des Benutzers wie dem Öffnen der Gehaltsabrechnung durch Eingabe von PAN-Details abgerufen werden können.
Heutzutage bevorzugen wir es im Allgemeinen, Daten in Softcopies anstatt in Hardcopys zu speichern. Es ist besser, Berichte auf Servern als auf Papieren zu speichern. Wenn Sie den Bericht benötigen, führen Sie einfach die Java-Datei aus und generieren Sie sie dann und dort.
Versuchen wir in diesem Artikel, die Lösung für die folgenden Fragen zu finden:
Was sollten Sie bei der Fehlerbehebung bei einem Live-Netzwerkkabel verwenden?
- Können wir Multifunktionalität nutzen?
- Ob es nur zur Erstellung von Berichten verwendet wird?
- Wo können wir Itext verwenden?
- Ob es den neuen Bericht erstellen kann?
- Ich bin ein Tester, ist es hilfreich für mich?
Was ist iText?
Die Ausgabe des iText-Tools ist ein von Java integrierter PDF-Bericht. Dadurch werden die PDF-Verhaltensweisen und -Komponenten geerbt und ein kompatibler Bericht erstellt.
iText ist eine Open-Source-API mit einer kooperativen Umgebung, der Teilnahme an Full-Fledge, dem Eindringen von Prisma in Licht und der Grundlage für die Berichterstellung.
Zum Beispiel: Betrachten Sie ein Beispiel für ein Ticket der Indian Railways. Hier möchten wir den Ausdruck der detaillierten Zusammenfassung des Ticketprozesses von der Suche nach Sitzplatzverfügbarkeit bis zur Buchung des Tickets.
Als nächstes werden wir verstehen, wie iText uns bei dieser Anforderung helfen kann.
Einige der Merkmale sind wie folgt:
- Vollständige Zusammenfassung des Antrags (CSA)
- Easy Tracking Details (ETD)
- Einfache Bearbeitung des Antrags (EPA)
Wie starte ich den iText-Bericht?
Es ist einfach, sich dem Itext über Java zu nähern. Es wird anhand eines Beispiels veranschaulicht.
Business Analyst (BA) erhält vom Kunden ein Business Process Document (BPD) und ein Functional Specification Document (FSD), in denen die Erwartungen an die Anwendung erläutert werden.
Nehmen wir ein Szenario. BA brachte mehrere Anforderungen bezüglich der Erstellung von Berichten sowie der Frage, wie unser Basisprodukt dies unterstützen kann. Solche Spezifikationen von renommierten Kunden lassen uns denken, dass wir das Projekt ohnehin nicht verlieren sollten, da es viele Verwirrungen und ein Dilemma gibt, wie der Bericht auf kompatible Weise erstellt werden kann.
Warum entsteht eine solche Verwirrung in den erstellten Berichten?
Dies liegt daran, dass die in der Anwendung vorhandenen Daten nur die Reflexion der Daten im Bericht darstellen. Es wird nicht bewegt, um jeden Knoten in der Anwendung zu überprüfen (z. B. wie beim MRT-Scan). Somit ist es der einfachste Weg.
Ja genau. Unser Kunde erwartet jedoch, dass die Daten dynamisch sind. Basierend auf den verfügbaren Daten sollte der Bericht auf dynamische Weise erstellt werden.
Lassen Sie uns dies anhand eines Echtzeitbeispiels diskutieren.
Szenario 1: Statische Daten können fest codiert werden und Berichte erstellen. Hier ändern sich der Darlehensbetrag und der Immobilienwert vor der Auszahlung nicht.
Bitte finden Sie das Bild unten für das obige Szenario:
Szenario 2 :: In diesem Szenario steigt der Immobilienwert von Tag zu Tag und der Kapitalbetrag des Darlehensbetrags sollte jedes Jahr reduziert werden. Daher sind die vorhergesagten Daten dynamisch.
Ein Kunde kann sich an uns wenden, um die Details für verschiedene Geschäftsjahre anzugeben, da er die Amtszeit geändert hat und das EMI darauf basierend geändert wurde. Wenn Sie die Daten wie in der folgenden Abbildung gezeigt fest codiert haben, werden Sie auf frischer Tat ertappt.
Stellen Sie sich den Fall vor, in dem der Bericht dynamisch sein soll. Wir können es nicht so vorbringen, wie es ist. Wir müssen die technische Inspektion durchführen und die Anforderungen klar durchgehen, bevor wir mit der Entwicklung und dem Testen beginnen.
Wir müssen uns sehr klar auf den Designteil konzentrieren, bei dem die Genehmigung durch den Business Analyst erfolgt. Dies ist ein guter Ansatz, da später auf UAT-Probleme hingewiesen werden kann. Es wird vorausgesagt, dass die Lösung für dieses Problem der dynamischen Berichterstellung einfach Java-Konzepte zum Generieren eines Berichts verwendet.
Wie rufe ich einen Bericht auf?
Das folgende Diagramm zeigt den Prozess zum Generieren eines Berichts:
Wie rufe ich einen Bericht über JSP auf?
Wo immer wir Java aufrufen, ist es notwendig, das UI-Design durchzuführen, da dies als Leitfaden dient, um vom Front-End aus fortzufahren. Dies ist ein einfacher Weg, da wir den Berichtsaufruf lernen können.
Betrachten wir ein Beispiel:
Software Report
Wir können den Bericht folgendermaßen konfigurieren:
- Berichtsname: Softwarebericht (Anzeige in der Anwendung)
- Anruf über JS melden: Beispielbericht
- Drop-Menü: Es können mehrere Berichte integriert werden
- Beim Klicken: JavaScript-Funktion
Wie können Tester einen Bericht initiieren?
Tester bevorzugen normalerweise Regressionstests durch Automatisierungsskripte unter Verwendung des Cucumber-Frameworks, des Keyword-gesteuerten Frameworks und des datengesteuerten Frameworks.
Um den Bericht basierend auf den Anforderungen des Kunden bereitzustellen, können wir mit einer vorgefertigten Architektur fortfahren, d. H. iText, bei der das integrierte Tool die Eigenschaften und das Verhalten der Reporterdatei sowie die zu liefernden Artefakte erbt.
Tester können mithilfe von iText Java den konsolidierten Bericht wie die verbleibende Fehlerliste (RBL), den Prozentsatz der Testergebnisse und die Fehler-ID-Zuordnung basierend auf den jeweiligen Phasen wie SIT-, UAT- und Produktionstests erstellen.
Stellen Sie sich ein Szenario vor, in dem mehrere Berichte konfiguriert werden müssen.
Der folgende Code veranschaulicht die Verwendung in JSP, die wir im Frontend betrachten. Die folgende Methode wird verwendet:
Software Report Software Report1 Software Report2
Wie rufe ich JavaScript (JS) auf?
Im Allgemeinen können wir Validierungen in JS durchführen, aber Sie können dies auch in Java tun. JavaScript Executor wurde in unser Paket aufgenommen, um Funktionen aufzurufen und das Programm aufzurufen, um einen Bericht zu generieren, der sehr kompatibel ist.
Es kann verwendet werden, um eine Methode mit einem Eigentümerobjekt als Argument aufzurufen (aufzurufen).
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 } }
Die obige Methode behandelt die onload () Funktion, die in der Anwendung aufgerufen werden kann, um sehr vielseitig zu sein und die URL zum Generieren eines Berichts auslöst.
Wie erstelle ich die Funktion in Java Report?
Java behandelt die Warnungen und Ausnahmen im Programm und führt auch die Berichterstellung aus.
Arbeitszeittabellen-App für Android und iPhone
Lassen Sie uns dies anhand eines Beispiels veranschaulichen.
Document Doc =new Document ();
Es ist die Art und Weise, das Dokument zu erstellen, und es ist auch die Plattform, die den Bericht integriert.
Doc.open();
Der obige Befehl wird verwendet, um das Dokument zu öffnen. Es ist wichtig, diesen Befehl einzuschließen, da er eine Dokumentausnahme auslöst, wenn er nicht enthalten ist.
Doc.close();
Der obige Befehl wird verwendet, um das Dokument zu schließen, das anzeigt, dass JVM akzeptiert hat, dass das Dokument das Schreiben beendet. Es ist wichtig, diesen Befehl einzuschließen, da er eine Dokumentausnahme auslöst, wenn er nicht enthalten ist.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Der obige Befehl zeigt das Dokument, das die Eigenschaften der PDF über PDFWriter integriert, das Dokument aufruft und es sichtbar macht.
Paragraph para = new Paragraph ();
Ein Absatz schreibt die Instanz des Autofit-Inhalts und auch die Bulk-Zeilen der Anforderung.
Doc.setpercentage(%to be given);
Im obigen Befehl wurde ein Dokument aufgerufen, um die PDF-Datei als kompatibel aufzurufen, wie durch den enthaltenen Prozentsatz definiert.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Der obige Befehl zeigt den in den doppelten Anführungszeichen enthaltenen Dokumentnamen und den angegebenen Speicherort für die Datei an, sobald auf den Bericht geklickt wird.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Hier wird gezeigt, wie die PDF-Version in der Berichtsgenerierung festgelegt wird.
document. setPageSize (PageSize.A4);
Wir können auch die Seitengröße festlegen, wie der Bericht basierend auf den Anforderungen geliefert werden muss. Die Seitengröße als A3, A4, A5 usw.
document. setMargins(24, 43, 34, 43);
Wir können die oben genannten Funktionen verwenden, um die Ränder festzulegen, und wir können die Autofit-Methode verwenden, um sie normal in das Dokument einzufügen.
document.setMarginMirroring(true);
Der obige Befehl zeigt die Methode der Randspiegeleinstellung an.
Umgang mit Warnungen und Ausnahmen
Es ist wichtig, die Warnungen und Ausnahmen in Java zu behandeln.
Einige der Warnungen, auf die wir zur Laufzeit stoßen, sind unten aufgeführt:
- NoSuchElement-Ausnahme
- Nullzeiger-Ausnahme
- Array-Index an Ausnahme gebunden
- Assertionsfehler
- Nicht behandelte Alarmausnahme
- SQL-Ausnahme
- Timeout-Ausnahme
- Dokumentausnahme
Manchmal kann der Entwickler auch die Ausnahme eines Try-Catch-Blocks drucken. Die Ausnahme ist unter dem catch-Block eingeschlossen.
Beispiel:
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); }
Beispielausgabe: Positives Szenario
Geben Sie die zu überprüfende Nummer ein: 2
Gerade Zahl
Beispielausgabe: Negatives Szenario
Geben Sie die zu überprüfende Nummer ein: a
Eine Ausnahme ist aufgetreten: Unzulässige Formatausnahme
Erläuterung:
Als Eingabe muss eine Zahl angegeben werden, da wir im obigen Codebeispiel 'n' als Ganzzahl definiert haben. Wenn wir Alphabete eingeben, in denen versucht wird, den Rest (% Modul verwendet) zu erhalten, werden keine Daten abgerufen und die Ausnahme nur mit catch catch ausgelöst.
Der genaue Unterschied zwischen Fehler und Ausnahme in Java:
Ein Fehler hindert Sie daran, das Programm auszuführen, aber beim Ausführen des Programms wird eine Ausnahme abgefangen, während die Ausführung nicht gestoppt wird.
Protokollieren eines Dateiprotokolls:
Durch das Schreiben des Protokolls für jede Methode oder jedes Modul können wir feststellen, wo die Ausführung von JVM aufhört. Ein Protokoll zeigt normalerweise den Wert an, in dem es in der angegebenen Protokolldatei gespeichert ist und auf welche Weise der Prozessor das Java-Programm in der Anwendung ausführt.
Unterschied zwischen System.out.println (SOP) und Log:
Beide drucken den Wert oder zeigen den Inhalt in doppelten Anführungszeichen. Aber die Unterschiede zwischen diesen beiden sind: Während das Programm ausgeführt wird, druckt die Anwendung die Werte per SOP-Befehl auf der Konsole. Sobald wir den Inhalt der Konsole gelöscht haben, ist es schwierig, den Wert zu finden. Dies passiert auch, wenn wir mehrere SOPs haben.
Grundsätzlich kann der Befehl Log factory die Werte abrufen und aktualisieren. Wir können die Protokolldatei um jeden Preis anzeigen, da sie bei jedem Lauf mit Datum und Uhrzeit des Systems geschrieben wird.
Beispiel:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Server
Server spielen eine wichtige Rolle im Unternehmen, da sie bestimmen können, ob die Programmausführung bestanden wurde oder nicht.
Lokale Server sind die Server, auf denen wir das Programm auf unserem lokalen Computer ausführen können. Wir können die folgenden lokalen Server verwenden:
- Apache tomcat
- JBoss
Sobald der Code in ist Bereitschaftszustand, Es sollte auf dem angegebenen Server bereitgestellt werden und erfordert einen Neustart. Wir könnten die folgenden Server verwenden:
- Oracle Weblogic
- IBM Websphere
Beispielprogramm:
Betrachten Sie das Programm, in dem die iText-Implementierung verarbeitet werden kann.
/****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()); } }
Ausrichtung in Itext Java
Im Allgemeinen benötigen Benutzer die Berichtsdokumente in einem bestimmten Format, da die Berichte klar darstellen müssen, was und wie Sie die Ergebnisse anzeigen möchten. IText hilft Ihnen dabei.
Beispielprogramm
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”); }}}
Wird iText zum Erstellen eines neuen oder zum Aktualisieren eines vorhandenen verwendet?
Es kann sich die Frage stellen, ob iText nur zum Erstellen eines neuen PDF verwendet wird. Die Antwort lautet: Nein. IText generiert nicht nur neue PDF-Berichte, sondern bietet auch einige Funktionen wie das Aktualisieren eines vorhandenen PDF-Dokuments und die konsolidierte Ausgabe, die die aktualisierte Änderung enthält.
Beispielcode:
// 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(); }
Chunk in iText Pdf:
Chunk ist die neue Technik, die in den verfügbaren Platz im PDF-Format passt und für die keine Begleitung erforderlich ist.
Beispielprogramm:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Wer kann iText verwenden?
Profil | Entwicklung | Zugriff anzeigen |
---|---|---|
Entwicklung | Möglich | Benutzerfreundlich |
Tester | Teilweise möglich | Benutzerfreundlich |
Business Analyst | Nicht möglich | Benutzerfreundlich |
Kunde | Nicht möglich | Benutzerfreundlich |
Fazit
iTextpdf erstellt normalerweise einen Berichtsbeitrag mit Java zum Anwendungsergebnis
'IText ist Java, aber es generiert PDFs, die so benutzerfreundlich sind und kristallklare Berichte erstellen können.'
Vorteile von iText:
- High- und Low-Level-API (Application Processing Interface)
- Kompatibilität bei der Bereitstellung von End-to-End-Diensten (PEE)
- Überprüfung der Verfügbarkeit des Textflusses für mobile Benutzer (TFRAM)
- Anpassungsfähigkeit.
- Plattformübergreifende Verfügbarkeit.
Nachteile von iText:
- Es ist nicht in der Lage, bestimmte Designs zu erreichen.
- Gründliche Kenntnisse der OOP-Konzepte sind erforderlich.
Literatur-Empfehlungen
- Java Reflection Tutorial mit Beispielen
- Java SWING Tutorial: Container-, Komponenten- und Ereignisbehandlung
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Zugriffsmodifikatoren in Java - Tutorial mit Beispielen
- Java String mit String Buffer und String Builder Tutorial
- Data Mart Tutorial - Typen, Beispiele und Implementierung von Data Mart
- Java String enthält () Method Tutorial mit Beispielen
- Java String Tutorial | Java-String-Methoden mit Beispielen