itext tutorial convert data pdf report using java itext
Ce didacticiel iText explique comment manipuler des données en masse dans un formulaire unique et sécurisé de rapport PDF à l'aide de Java et de la bibliothèque iText:
iText est l'outil pour générer un rapport consolidé dans lequel nous pouvons manipuler des données en vrac dans la forme unique d'entité qui contient des informations significatives.
iText est une bibliothèque Java PDF utilisée pour créer et manipuler des documents PDF en développant des programmes Java. Certaines des fonctionnalités de la bibliothèque iText incluent la génération de documents PDF interactifs, l'ajout de signets, l'enregistrement de fichiers PDF en tant que fichiers image, la division et la fusion de PDF existants en plusieurs PDF, etc.
Ce que vous apprendrez:
- Pourquoi iText?
- Qu'est-ce que iText?
- Comment démarrer le rapport iText?
- Comment appeler un rapport via JSP?
- Comment les testeurs peuvent-ils lancer un rapport?
- Comment invoquer en JavaScript (JS)?
- Comment créer la fonction dans le rapport Java?
- Gestion des alertes et des exceptions
- Les serveurs
- Alignement dans Itext Java
- Qui peut utiliser iText?
- Conclusion
Pourquoi iText?
Il fonctionne dans un environnement polyvalent d'un rapport automatisé qui est produit par des serveurs spécifiques tels que Apache Tomcat, JBoss, Junit. Il fournit un document défini par l’utilisateur en fonction des besoins de l’utilisateur.
IText est-il axé sur la sécurité?
Il offre des moyens de récupérer les documents en fonction d'opérations liées à la sécurité, telles que la protection par mot de passe ou la validation des entrées de l'utilisateur, comme l'ouverture de la fiche de paie en entrant les détails du PAN.
De nos jours, nous préférons généralement enregistrer les données sur des copies électroniques plutôt que sur des copies papier. Il vaut mieux stocker les rapports sur des serveurs que sur les papiers. Chaque fois que vous avez besoin du rapport, exécutez simplement le fichier Java et générez-le sur-le-champ.
Dans cet article, essayons de trouver la solution aux questions suivantes:
implémentation de liste de contiguïté c ++
- Pouvons-nous utiliser la multifonctionnalité?
- Est-il utilisé uniquement pour la préparation de rapports?
- Où pouvons-nous utiliser Itext?
- S'il peut créer le nouveau rapport?
- Je suis testeur, est-ce utile pour moi?
Qu'est-ce que iText?
La sortie de l'outil iText est un rapport PDF intégré par Java. Cela hérite des comportements et des composants PDF et génère un rapport compatible.
iText est une API open-source avec un environnement coopératif, une participation à la pleine pénétration de la lumière Prism et la base de la génération de rapports.
Par exemple: Prenons un exemple de ticket des chemins de fer indiens. Ici, nous voulons l'impression du résumé détaillé du processus de billetterie à partir de la recherche de la disponibilité des sièges jusqu'à la réservation du billet.
Ensuite, nous comprendrons comment iText peut nous aider avec cette exigence.
Certaines des caractéristiques sont les suivantes:
- Résumé complet de la demande (CSA)
- Détails de suivi facile (ETD)
- Traitement facile de la demande (EPA)
Comment démarrer le rapport iText?
Il est facile d'approcher l'Itext via Java. Il est illustré à l'aide d'un exemple.
L'analyste métier (BA) obtient du client un document de processus métier (BPD) et un document de spécification fonctionnelle (FSD) qui explique ses attentes par rapport à l'application.
Prenons un scénario. BA a imposé de nombreuses exigences sur le cadrage des rapports et sur la manière dont notre produit de base peut le supporter. De telles spécifications de clients réputés nous font penser à ne pas perdre le projet de toute façon en raison de la confusion et du dilemme multiples sur la façon de réaliser le rapport de manière compatible.
Pourquoi une telle confusion survient dans les rapports générés?
En effet, les données présentes dans l'application présentent simplement le reflet des données dans le rapport. Il ne se déplace pas pour vérifier chaque nœud dans l'application (Ex. Comme cela est fait dans l'IRM). C'est donc le moyen le plus simple.
Oui, exactement. Mais notre client s'attend à ce que les données soient dynamiques. Sur la base des données disponibles, le rapport doit être généré de manière dynamique.
Discutons-en avec un exemple en temps réel.
Scénario 1: Les données statiques peuvent être codées en dur et générer des rapports. Ici, le montant du prêt et la valeur de la propriété ne changent pas avant le décaissement.
Veuillez trouver l'image ci-dessous pour le scénario ci-dessus:
Scénario 2 : Dans ce scénario, la valeur de la propriété augmente de jour en jour et le principal du montant du prêt doit être réduit chaque année, et les données prévues sont donc dynamiques.
Un client peut venir nous approcher pour nous fournir les détails des différents exercices car il a changé le mandat et sur cette base l'IME a été varié. Si vous avez codé en dur les données comme indiqué dans la figure ci-dessous, vous serez pris en flagrant délit.
Prenons le cas où le rapport est censé être dynamique. Nous ne pouvons pas le présenter tel quel. Nous devons faire l'inspection technique et parcourir clairement les exigences avant de commencer le développement et les tests.
Nous devons nous concentrer très clairement sur la partie conception où l'approbation est faite par le Business Analyst. C’est une bonne approche, car les problèmes UAT soulevés ultérieurement ne peuvent nous être signalés. La solution à ce problème de génération de rapport dynamique devrait simplement utiliser les concepts Java pour générer un rapport.
Comment appeler un rapport?
Le diagramme ci-dessous illustre le processus de génération d'un rapport:
Comment appeler un rapport via JSP?
Partout où nous appelons Java, il est nécessaire de faire la conception de l'interface utilisateur car cela servira de carte guide pour procéder à partir du front-end. C'est un moyen facile car nous pouvons apprendre l'appel de rapport.
Analysons un exemple:
Software Report
Nous pouvons configurer le rapport de cette manière:
- Nom du rapport: Rapport logiciel (affichage dans l'application)
- Signaler un appel via JS: Exemple de rapport
- Menu déroulant: Plusieurs rapports peuvent intégrer
- Sur clic: Fonction JavaScript
Comment les testeurs peuvent-ils lancer un rapport?
Les testeurs préfèrent généralement les tests de régression via des scripts d'automatisation utilisant le framework Cucumber, le framework Keyword Driven et le framework Data-Driven.
Pour fournir le rapport en fonction des exigences du client, nous pouvons procéder avec une architecture prête à l'emploi, c'est-à-dire iText, où l'outil intégré hérite des propriétés et du comportement du fichier rapporteur ainsi que des artefacts à livrer.
Les testeurs peuvent créer le rapport consolidé tel que la liste des bogues restants (RBL), le pourcentage des livrables de test, le mappage des identifiants de bogue en fonction des phases respectives telles que SIT, UAT et les tests de production en utilisant iText Java.
Considérez un scénario qui doit configurer plusieurs rapports.
Le code ci-dessous illustre comment utiliser dans JSP, ce que nous examinons dans le front-end. La méthode suivante est utilisée:
Software Report Software Report1 Software Report2
Comment invoquer en JavaScript (JS)?
Généralement, nous pouvons faire des validations en JS, mais vous pouvez le faire même en Java. L'exécuteur JavaScript a été inclus dans notre package pour appeler la fonction et appeler le programme pour générer un rapport qui est très compatible.
Il peut être utilisé pour invoquer (appeler) une méthode avec un objet propriétaire comme 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 } }
La méthode ci-dessus gère le en charge() fonction qui peut être appelée dans l'application pour être très polyvalente qui déclenche l'URL pour générer un rapport.
Comment créer la fonction dans le rapport Java?
Java gère les alertes et les exceptions dans le programme et exécute également la génération de rapport.
Illustrons cela à l'aide d'un exemple.
Document Doc =new Document ();
C'est la manière de créer le document et c'est aussi la plateforme qui intègre le rapport.
Doc.open();
La commande ci-dessus est utilisée pour ouvrir le document. Il est important d'inclure cette commande car si elle n'est pas incluse, elle lèvera une exception de document.
Doc.close();
La commande ci-dessus est utilisée pour fermer le document qui indique à JVM que le document a accepté d'arrêter l'écriture. Il est important d'inclure cette commande car si elle n'est pas incluse, elle lèvera une exception de document.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
La commande ci-dessus montre le document qui intègre les propriétés du PDF via PDFWriter, appelle le document et le rend visible.
Paragraph para = new Paragraph ();
Un paragraphe écrit l'instance du contenu de l'ajustement automatique et écrit également les lignes en vrac de l'exigence.
Doc.setpercentage(%to be given);
Dans la commande ci-dessus, un document a été appelé en appelant le PDF pour être compatible tel que défini par le pourcentage inclus.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
La commande ci-dessus affiche le nom du document, inclus dans les guillemets, et l'emplacement spécifié pour stocker le fichier une fois que l'utilisateur clique sur le rapport.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Ici, il montre la manière de définir la version PDF dans la génération de rapport.
document. setPageSize (PageSize.A4);
Nous pouvons également définir la taille de page de la façon dont le rapport doit être livré en fonction des exigences. La taille de la page comme A3, A4, A5, etc.
document. setMargins(24, 43, 34, 43);
Nous pouvons utiliser la fonctionnalité ci-dessus pour définir les marges et nous pouvons utiliser la méthode d'ajustement automatique pour l'ajuster normalement dans le document.
document.setMarginMirroring(true);
La commande ci-dessus affiche la méthode du paramètre Miroir de marge.
Gestion des alertes et des exceptions
Il est important de gérer les alertes et les exceptions en Java.
Certaines des alertes que nous rencontrons pendant l'exécution sont répertoriées ci-dessous:
- Exception NoSuchElement
- Exception de pointeur nul
- Index de tableau lié à l'exception
- Erreur d'assertion
- Exception d'alerte non gérée
- Exception SQL
- Exception de délai d'expiration
- Exception de document
Parfois, le développeur peut également imprimer l'exception d'un bloc try-catch. L'exception est incluse sous le bloc catch.
Exemple:
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); }
Exemple de sortie: scénario positif
Entrez le numéro à vérifier: 2
Nombre pair
Exemple de sortie: scénario négatif
Entrez le numéro à vérifier: a
Une exception s'est produite: Exception de format illégal
Explication:
Un nombre doit être donné en entrée car nous avons défini «n» comme un entier dans l'exemple de code ci-dessus. Si nous entrons des alphabets où il essaie d'obtenir le reste (% module utilisé), il ne récupérera aucune donnée et lèvera simplement l'exception en utilisant le bloc catch.
La différence exacte entre Erreur et Exception en Java:
Une erreur vous empêchera d’exécuter le programme, mais une exception sera interceptée lors de l’exécution du programme alors qu’elle n’arrêtera pas votre exécution.
Journalisation d'un journal de fichiers:
L'écriture du journal pour chaque méthode ou module nous permet d'identifier où JVM s'arrête de s'exécuter. Un journal affiche généralement la valeur où il est stocké dans le fichier journal spécifié et la manière dont le processeur exécute le programme Java dans l'application.
Différence entre System.out.println (SOP) et Log:
Les deux imprime la valeur ou affiche quel que soit le contenu entré entre guillemets. Mais le les différences entre ces deux sont: Pendant l'exécution du programme, l'application imprime les valeurs sur la console par la commande SOP. Mais une fois que nous avons effacé le contenu de la console, il est difficile de trouver la valeur. Cela se produit également lorsque nous avons plusieurs SOP.
Fondamentalement, la commande Log factory pourrait récupérer et mettre à jour les valeurs. Nous pouvons consulter le fichier journal à tout prix car il écrit à chaque fois à chaque exécution avec la date et l'heure du système.
Exemple:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Les serveurs
Les serveurs jouent un rôle important dans l'entreprise car ils peuvent déterminer si l'exécution du programme est réussie ou non.
Les serveurs locaux sont les serveurs sur lesquels nous pouvons exécuter le programme sur notre machine locale. Nous pouvons utiliser les serveurs locaux suivants:
- Apache Tomcat
- JBoss
Une fois le code entré État prêt, il doit être déployé sur le serveur spécifié et nécessite un redémarrage. Nous pourrions utiliser les serveurs suivants:
- Oracle Weblogic
- IBM Websphere
Exemple de programme:
Considérez le programme où il pourrait traiter l'implémentation 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()); } }
Alignement dans Itext Java
En règle générale, les utilisateurs ont besoin des documents de rapport dans un format spécifique, car les rapports doivent clairement représenter ce que vous voulez et comment vous voulez montrer les résultats. IText vous aide avec cela.
Exemple de programme
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 est-il utilisé pour en créer un nouveau ou mettre à jour un existant?
Une question peut se poser de savoir si iText est utilisé uniquement pour créer un nouveau PDF? La réponse est non, en plus de générer de nouveaux rapports PDF, iText fournit également certaines fonctionnalités telles que la mise à jour d'un pdf existant et fournit la sortie consolidée qui inclut la modification mise à jour.
que fait le c ++
Exemple de code:
// 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 dans iText Pdf:
Chunk est la nouvelle technique qui s'intègre dans l'espace disponible en pdf et qui ne nécessiterait rien pour l'accompagner.
Exemple de programme:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Qui peut utiliser iText?
Profil | Développement | Afficher l'accès |
---|---|---|
Développement | Possible | Convivial |
Testeur | Partiellement possible | Convivial |
Analyste d'affaires | Pas possible | Convivial |
Client | Pas possible | Convivial |
Conclusion
iTextpdf élabore généralement la contribution du rapport en utilisant Java vers le résultat de l'application
«IText est le Java, mais il génère des fichiers PDF qui conviendraient à l'utilisateur et peuvent générer des rapports clairs.»
Avantages d'iText:
- Interface de traitement d'application (API) de haut et bas niveau
- Compatibilité dans les services de bout en bout (PEE)
- Vérifier la disponibilité du flux de texte pour les utilisateurs mobiles (TFRAM)
- Adaptabilité.
- Disponibilité multiplateforme.
Inconvénients d'iText:
- Il n'est pas en mesure de réaliser des conceptions spécifiques.
- Une connaissance approfondie des concepts de la POO est requise.
lecture recommandée
- Tutoriel de réflexion Java avec des exemples
- Tutoriel Java SWING: Conteneur, composants et gestion des événements
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Modificateurs d'accès en Java - Tutoriel avec des exemples
- Tutoriel Java String with String Buffer et String Builder
- Tutoriel Data Mart - Types, exemples et implémentation de Data Mart
- Tutoriel sur la méthode Java String contains () avec des exemples
- Tutoriel Java String | Méthodes de chaîne Java avec exemples