itext tutorial convert data pdf report using java itext
Този урок за iText обсъжда как да манипулирате групови данни в сигурна, единична форма на PDF отчет, използвайки Java и iText Library:
iText е инструментът за генериране на консолидиран отчет, където можем да манипулираме групови данни в единната форма на обект, който съдържа значима информация.
iText е Java PDF библиотека, използвана за създаване и манипулиране на PDF документи чрез разработване на Java програми. Някои от функциите на библиотеката iText включват генериране на интерактивни PDF документи, добавяне на отметки, запазване на PDF файлове като файлове с изображения, разделяне и обединяване на съществуващи PDF файлове в множество PDF файлове и т.н.
Какво ще научите:
Защо iText?
Той работи в гъвкава среда на автоматизиран отчет, който се създава от специфични сървъри като Apache Tomcat, JBoss, Junit. Той предоставя дефиниран от потребителя документ според нуждите на потребителя.
Ориентиран ли е iText Security?
Той предлага начини, по които документите могат да бъдат извлечени въз основа на операции, свързани със сигурността, като защитени с парола или валидиране на входове от потребителя, като отваряне на фиш за плащане чрез въвеждане на данни за PAN.
В днешно време обикновено предпочитаме да запазваме данни в меки копия, а не в хартиени копия. По-добре е да съхранявате отчети на сървъри, отколкото хартии. Винаги, когато имате нужда от отчета, просто стартирайте Java файла и го генерирайте тогава и там.
В тази статия нека се опитаме да намерим решението на следните въпроси:
въпроси за интервю за кодиране на Java за опитни
- Можем ли да използваме многофункционалност?
- Дали се използва само за изготвяне на отчети?
- Къде можем да използваме Itext?
- Дали може да създаде новия отчет?
- Аз съм тестер, полезно ли ми е?
Какво е iText?
Резултатът от инструмента iText е PDF отчет, интегриран от Java. Това наследява PDF поведението, компонентите и генерира съвместим отчет.
iText е API с отворен код с кооперативна среда, участие в full-fledge, проникване на призмата на светлината и основата на генерирането на отчети.
Например: Да разгледаме пример за билет за индийските железници. Тук искаме отпечатване на подробното резюме на процеса на билета, започвайки от търсене на наличност на места до резервиране на билета.
След това ще разберем как iText може да ни помогне с това изискване.
Някои от характеристиките са както следва:
- Пълно резюме на заявлението (CSA)
- Детайли за лесно проследяване (ETD)
- Лесна обработка на заявлението (EPA)
Как да стартирам отчета iText?
Лесно е да се доближите до Itext чрез Java. Илюстрирано е с помощта на пример.
Бизнес анализатор (BA) получава документ за бизнес процес (BPD) и документ за функционална спецификация (FSD) от клиента, което обяснява очакванията им от приложението.
Нека вземем сценарий. BA донесе множество изисквания относно рамкирането на доклади, както и как нашият основен продукт може да подкрепи това. Такива спецификации от известни клиенти ни карат да мислим да не загубим проекта така или иначе поради множество обърквания и дилеми как да постигнем доклада по съвместим начин.
Защо възниква такова объркване в генерираните отчети?
Това е така, защото данните, налични в приложението, просто показват отражението на данните в отчета. Той не се движи, за да провери всеки възел в приложението (напр., Както се прави в MRI сканиране). По този начин това е най-лесният начин.
Да точно. Но нашият клиент очаква данните да бъдат динамични. Въз основа на наличните данни докладът трябва да се генерира по динамичен начин.
Нека обсъдим това с пример в реално време.
Сценарий 1: Статичните данни могат да бъдат твърдо кодирани и да генерират отчети. Тук размерът на заема и стойността на имота не се променят преди изплащането.
Моля, намерете изображението по-долу за горния сценарий:
Сценарий 2 : В този сценарий стойността на имота се увеличава всеки ден и главницата на сумата на кредита трябва да се намалява всяка година и по този начин прогнозираните данни са динамични.
Клиент може да дойде и да се обърне към нас, за да предоставим подробности за различните финансови години, тъй като той е променил мандата и въз основа на него EMI е варирал. Ако сте кодирали твърдо данните, както е показано на фигурата по-долу, ще бъдете уловени.
Да разгледаме случая, в който се предполага, че докладът е динамичен. Не можем да го представим така, както е. Трябва да направим техническия преглед и да преминем ясно през изискванията, преди да започнем разработването и тестването.
Трябва да се съсредоточим много ясно върху дизайнерската част, където одобрението се извършва от бизнес анализатора. Това е добър подход, защото всички въпроси, свързани с UAT, повдигнати по-късно, не могат да ни бъдат посочени. Решението за този проблем с динамичното генериране на отчети се предвижда просто да използва Java концепции при генерирането на отчет.
Как да извикам отчет?
Диаграмата по-долу илюстрира процеса на генериране на отчет:
Как да извикам отчет чрез JSP?
Където и да наречем Java, е необходимо да се направи дизайн на потребителския интерфейс, тъй като това ще действа като ориентировъчна карта, за да се продължи от предния край. Това е лесен начин, тъй като можем да научим повикването Report.
Нека разгледаме един пример:
Software Report
Можем да конфигурираме отчета по този начин:
- Име на отчета: Софтуерен отчет (показване в приложение)
- Отчетете обаждането чрез JS: Примерен доклад
- Падащо меню: Могат да се интегрират множество отчети
- При кликване: JavaScript функция
Как тестерите могат да инициират доклад?
Тестерите обикновено предпочитат тестването на регресия чрез скриптове за автоматизация, използващи рамката Cucumber, Framework Driven framework и Data-Driven framework.
За да предоставим отчета въз основа на изискванията на клиента, можем да продължим с готовата архитектура, т.е. 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 Report?
Java обработва предупрежденията и изключенията в програмата и също така изпълнява генерирането на отчети.
Нека илюстрираме това с помощта на пример.
Document Doc =new Document ();
Това е начинът за създаване на документа и също така е платформата, която интегрира доклада.
Doc.open();
Горната команда се използва за отваряне на документа. Важно е да включите тази команда, сякаш тя не е включена, ще хвърли изключение на документа.
Doc.close();
Горната команда се използва за затваряне на документа, който показва JVM, че документът е приел да спре да пише. Важно е да включите тази команда, сякаш тя не е включена, ще хвърли изключение на документа.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Горната команда показва документа, който интегрира свойствата на PDF чрез PDFWriter, извиква документа и го прави видим.
Paragraph para = new Paragraph ();
Абзацът записва екземпляра на съдържанието на автоматичното редактиране и също така записва груповите редове на изискването.
приложение за планиране на публикации в instagram безплатно
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 изключение
- Изключение за изчакване
- Изключение на документ
Понякога разработчикът може да отпечата и изключението на блок за опит за улавяне. Изключението е затворено под блока 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 block.
Точната разлика между грешка и изключение в 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:
Chunk е новата техника, която се вписва в наличното пространство в 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 към резултата от приложението
„IText е Java, но генерира pdf, който ще се побере като лесен за ползване и може да генерира кристално чисти отчети“
Предимства на iText:
- Интерфейс за обработка на приложения на високо и ниско ниво (API)
- Съвместимост при предоставяне на услуги от край до край (PEE)
- Проверка на наличността на текстов поток за мобилни потребители (TFRAM)
- Адаптивност.
- Наличност на различни платформи.
Недостатъци на iText:
- Не е в състояние да постигне конкретни проекти.
- Изискват се задълбочени познания за концепциите на ООП.
Препоръчително четене
- Урок за отражение на Java с примери
- Java SWING Урок: Контейнер, компоненти и обработка на събития
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Модификатори на достъп в Java - Урок с примери
- Java String с String Buffer и String Builder Tutorial
- Data Mart Урок - Видове, примери и изпълнение на Data Mart
- Java String съдържа () Урок за метод с примери
- Java урок за низове | Низови методи на Java с примери