itext tutorial convert data pdf report using java itext
Цей посібник iText обговорює, як маніпулювати масовими даними у безпечну, єдину форму звіту PDF за допомогою Java та бібліотеки iText:
iText - це інструмент для створення зведеного звіту, за допомогою якого ми можемо маніпулювати масовими даними в єдину форму сутності, що містить значущу інформацію.
iText - це бібліотека Java PDF, яка використовується для створення та обробки PDF-документів шляхом розробки програм Java. Деякі функції бібліотеки iText включають створення інтерактивних документів PDF, додавання закладок, збереження PDF-файлів як файлів зображень, розділення та об’єднання існуючих PDF-файлів у декілька PDF-файлів тощо.
Що ви дізнаєтесь:
Чому iText?
Він працює в універсальному середовищі автоматизованого звіту, який створюється певними серверами, такими як Apache Tomcat, JBoss, Junit. Він надає визначений користувачем документ відповідно до потреб користувача.
Чи орієнтована iText на безпеку?
Він пропонує способи отримання документів на основі операцій, пов'язаних із безпекою, таких як захищені паролем або перевірка введених даних від користувача, як відкриття платіжної квитанції шляхом введення даних про PAN.
Сьогодні ми, як правило, воліємо зберігати дані у м’яких, а не в друкованих копіях. Краще зберігати звіти на серверах, ніж папери. Щоразу, коли вам потрібен звіт, просто запустіть файл Java і генеруйте його тоді і там.
У цій статті спробуємо знайти рішення таких питань:
Як відкрити SWF-файл у Chrome
- Чи можемо ми використовувати багатофункціональність?
- Чи використовується він лише для підготовки звітів?
- Де ми можемо використовувати Itext?
- Чи може він створити новий звіт?
- Я тестувальник, чи це мені корисно?
Що таке iText?
Результатом роботи інструменту iText є звіт у форматі PDF, інтегрований Java. Це успадковує поведінку PDF, компоненти та генерує сумісний звіт.
iText - це API з відкритим кодом із середовищем співпраці, участю в повному обсязі, проникненням призми у світ та основою створення звітів.
Наприклад: Розглянемо приклад квитка на Індійські залізниці. Тут ми хочемо роздрукувати детальний підсумок процесу придбання квитків, починаючи від пошуку наявності місць до бронювання квитка.
Далі ми зрозуміємо, як iText може допомогти нам у виконанні цієї вимоги.
Деякі характеристики є такими:
- Повний короткий зміст заявки (CSA)
- Деталі легкого відстеження (ETD)
- Проста обробка заявки (EPA)
Як розпочати звіт iText?
До Java легко підійти до Itext. Це проілюстровано на прикладі.
Бізнес-аналітик (BA) отримує від клієнта документ про бізнес-процес (BPD) та документ про функціональні характеристики (FSD), що пояснює їхні очікування від програми.
Візьмемо сценарій. BA запропонувала кілька вимог щодо створення звітів, а також того, як наш базовий продукт може це підтримати. Такі специфікації відомих клієнтів змушують нас думати не втратити проект у будь-якому випадку через багаторазову плутанину та дилему щодо того, як отримати звіт сумісним способом.
Чому така плутанина виникає у створених звітах?
Це пов’язано з тим, що дані, що містяться у програмі, просто демонструють відображення даних у звіті. Він не рухається для перевірки кожного вузла в програмі (наприклад, як це зроблено при скануванні МРТ). Таким чином, це найпростіший спосіб.
Так, саме так. Але наш клієнт очікує, що дані будуть динамічними. На підставі наявних даних звіт має формуватися динамічно.
Обговоримо це на прикладі в реальному часі.
Сценарій 1: Статичні дані можуть бути жорстко закодовані та створювати звіти. Тут сума позики та вартість майна не змінюються до виплати.
Будь ласка, знайдіть зображення нижче для вищевказаного сценарію:
Сценарій 2 : У цьому сценарії вартість власності зростає з кожним днем, і основна сума позики повинна зменшуватися щороку, а отже прогнозовані дані є динамічними.
Клієнт може прийти і звернутися до нас, щоб надати детальну інформацію за різні фінансові роки, оскільки він змінив термін перебування і на основі цього EMI змінювався. Якщо ви жорстко закодували дані, як показано на малюнку нижче, вас зловлять.
Розглянемо випадок, коли звіт повинен бути динамічним. Ми не можемо висувати його таким, яким воно є. Перед початком розробки та випробувань ми повинні зробити технічний огляд і чітко пройти через вимоги.
Ми повинні чітко зосередитись на проектній частині, де схвалення надається бізнес-аналітиком. Це хороший підхід, оскільки на будь-які проблеми UAT, порушені пізніше, нам не можна вказувати. Прогнозується, що вирішення цієї проблеми динамічного формування звітів буде просто використовувати концепції Java для створення звіту.
Як викликати Звіт?
Наведена нижче схема ілюструє процес створення звіту:
Як викликати звіт через JSP?
Де б ми не називали Java, необхідно зробити дизайн інтерфейсу, оскільки це буде діяти як орієнтир для переходу від переднього кінця. Це простий спосіб, оскільки ми можемо вивчити дзвінок Report.
Давайте розглянемо приклад:
Software Report
Ми можемо налаштувати звіт таким чином:
- Назва звіту: Звіт про програмне забезпечення (відображається в додатку)
- Звіт про дзвінки через JS: Зразок звіту
- Меню падіння: Можна інтегрувати кілька звітів
- При натисканні: Функція JavaScript
Як тестувальники можуть ініціювати звіт?
Зазвичай тестувальники віддають перевагу тестуванню регресії за допомогою сценаріїв автоматизації, що використовують фреймворк Cucumber, фреймворк, керований ключовими словами, та фреймворк, керований даними.
Щоб надати звіт на основі вимог клієнта, ми можемо перейти до готової архітектури, тобто iText, де вбудований інструмент успадковує властивості та поведінку файлу-репортера, а також артефакти, які потрібно доставити.
Тестери можуть складати зведений звіт, такий як Список залишкових помилок (RBL), відсоток результатів тесту, відображення ідентифікаторів помилок на основі відповідних фаз, таких як SIT, UAT та тестування виробництва, використовуючи iText Java.
Розглянемо сценарій, для якого потрібно налаштувати кілька звітів.
Наведений нижче код ілюструє, як використовувати JSP, на що ми дивимось у передній частині. Використовується наступний метод:
Software Report Software Report1 Software Report2
Як викликати в JavaScript (JS)?
Як правило, ми можемо робити перевірки в JS, але ви можете це робити навіть на Java. Виконавець JavaScript був включений у наш пакет для функції виклику та виклику програми для створення звіту, який є дуже сумісним.
Він може бути використаний для виклику (виклику) методу з об'єктом власника як аргументом.
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 } }
Вищевказаний метод обробляє onload () Функція, яка може бути використана в додатку, є дуже універсальною, що викликає URL-адресу для створення звіту.
Як побудувати функцію у звіті Java?
Java обробляє попередження та винятки в програмі, а також виконує генерацію звітів.
Проілюструємо це на прикладі.
Document Doc =new Document ();
Це спосіб створення документа, а також платформа, яка інтегрує звіт.
Doc.open();
Вищевказана команда використовується для відкриття документа. Важливо включити цю команду, так як якщо вона не включена, вона викличе виняток документа.
Doc.close();
Вищевказана команда використовується для закриття документа, який вказує на JVM, що документ прийняв припинити запис. Важливо включити цю команду, так як якщо вона не включена, вона викличе виняток документа.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Наведена вище команда показує документ, який інтегрує властивості PDF за допомогою PDFWriter, викликає документ і робить його таким, як видимий.
Paragraph para = new Paragraph ();
Абзац пише екземпляр вмісту автозапуску, а також пише основні рядки вимоги.
Doc.setpercentage(%to be given);
У наведеній вище команді документ викликається під час виклику PDF-файлу як сумісного, як визначено у відсотках.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Наведена вище команда відображає ім'я документа, включене в подвійні лапки, та вказане місце для зберігання файлу після натискання звіту.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Тут він показує спосіб встановлення версії PDF у генерації звіту.
document. setPageSize (PageSize.A4);
Ми також можемо встановити розмір сторінки щодо способу подання звіту відповідно до вимог. Розмір сторінки як A3, A4, A5 тощо.
document. setMargins(24, 43, 34, 43);
Ми можемо використовувати вищезазначену функціональність для встановлення полів, і ми можемо використовувати метод автозапуску, щоб нормально вмістити його в документі.
document.setMarginMirroring(true);
Наведена вище команда відображає метод налаштування дзеркала поля.
Обробка попереджень та винятків
Важливо обробляти попередження та винятки в Java.
Деякі попередження, на які ми стикаємось під час роботи, перелічені нижче:
- NoSuchElement виняток
- Виняток нульового вказівника
- Індекс масиву, обмежений винятком
- Помилка твердження
- Необроблений виняток оповіщення
- Виняток SQL
- Виняток часу очікування
- Виняток документів
Іноді розробник може також надрукувати виняток блоку try-catch. Виняток укладено під блоком catch.
Приклад:
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); }
Зразок результату: Позитивний сценарій
Введіть номер для перевірки: 2
Парне число
Зразок результату: негативний сценарій
Введіть номер для перевірки: a
Стався виняток: Виняток незаконного формату
Пояснення:
Кількість повинна бути вказана як вхідна, оскільки ми вказали ‘n’ як ціле число у наведеному вище прикладі коду. Якщо ми введемо будь-які алфавіти, де він намагається отримати Залишок (використовуваний модуль%), він не отримає жодних даних і просто викине виняток, використовуючи блок catch.
Точна різниця між помилками та винятками в Java:
Помилка зупинить вас у виконанні програми, але під час запуску програми буде виявлено виняток, в той час як це не зупинить ваше виконання.
Запис журналу файлів:
Запис журналу для кожного методу або модуля змушує нас визначити, де JVM припиняє виконувати. Журнал зазвичай демонструє значення, де воно зберігається у вказаному файлі журналу, і те, яким чином процесор виконує програму Java у додатку.
Різниця між System.out.println (SOP) та Log:
Обидва друкують значення або демонструють будь-який вміст, введений у подвійні лапки. Але відмінності між цими двома: Поки програма працює, програма друкує значення на консолі командою SOP. Але після того, як ми стерли вміст консолі, важко знайти значення. Це також трапляється, коли ми маємо кілька SOP.
В основному команда Log factory могла отримувати та оновлювати значення. Ми можемо переглядати файл журналу за будь-яку ціну, оскільки він пише кожен раз при кожному запуску із системною датою та часом.
Приклад:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Сервери
Сервери відіграють важливу роль у корпорації, оскільки вона може визначити, пройдено виконання програми чи ні.
Локальні сервери - це сервери, на яких ми можемо виконати програму на нашій локальній машині. Ми можемо використовувати такі локальні сервери:
- Apache Tomcat
- JBoss
Після введення коду Готова держава, його слід розгорнути на вказаному сервері, і для цього потрібно перезапустити. Ми могли б використовувати такі сервери:
- Oracle Weblogic
- IBM Websphere
Зразок програми:
Розглянемо програму, де вона могла б обробити реалізацію 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()); } }
Вирівнювання в Itext Java
Як правило, користувачам потрібні документи звітів у певному форматі, оскільки звіти повинні чітко відображати, що і як ви хочете показати результати. IText допомагає вам у цьому.
Зразок програми
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 для створення нового чи оновлення існуючого?
Може виникнути запитання, чи iText використовується лише для створення нового PDF-файлу? Відповідь - ні, окрім створення нових звітів у форматі PDF, iText також надає деякі функції, такі як оновлення існуючого PDF-файлу та консолідований результат, що включає оновлені зміни.
Зразок коду:
// 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(); }
Шматок у iText Pdf:
Шматок - це нова техніка, яка вкладається в наявний простір у форматі PDF і яка не потребує нічого для супроводу.
Зразок програми:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Хто може використовувати iText?
Профіль | Розвиток | Переглянути доступ |
---|---|---|
Розвиток | Можливо | Зручний для користувачів |
Тестер | Частково можливо | Зручний для користувачів |
Бізнес-аналітик | Неможливо | Зручний для користувачів |
Клієнт | Неможливо | Зручний для користувачів |
Висновок
iTextpdf зазвичай розробляє внесок у звіт із використанням Java до результатів програми
Запитання та відповіді для інтерв’ю для селену Java
'IText - це Java, але він генерує PDF, який підійде як зручний і може створювати кришталево чисті звіти'
Переваги iText:
- Інтерфейс обробки додатків високого та низького рівня (API)
- Сумісність у наданні наскрізних послуг (PEE)
- Перевірка доступності текстового потоку для мобільних користувачів (TFRAM)
- Адаптованість.
- Наявність крос-платформенності
Недоліки iText:
- Він не в змозі досягти конкретних конструкцій.
- Потрібні ґрунтовні знання концепцій ООП.
Рекомендована література
- Підручник з роздумів про Java з прикладами
- Підручник з Java SWING: Контейнер, компоненти та обробка подій
- Підручник JAVA для початківців: 100+ практичних навчальних посібників Java
- Модифікатори доступу в Java - Підручник із прикладами
- Рядок Java із підручником для буфера рядків та побудови рядків
- Підручник з Data Mart - типи, приклади та реалізація Data Mart
- Рядок Java містить () Підручник із методів із прикладами
- Підручник із рядків Java | Рядові методи Java на прикладах