itext tutorial convert data pdf report using java itext
Овај водич за иТект расправља о томе како манипулисати скупим подацима у сигуран, јединствени облик ПДФ извештаја помоћу Јаве и иТект библиотеке:
иТект је алат за генерисање консолидованог извештаја у којем можемо манипулирати скупним подацима у јединствени облик ентитета који садржи значајне информације.
иТект је Јава ПДФ библиотека која се користи за креирање и манипулисање ПДФ документима развојем Јава програма. Неке од карактеристика иТект библиотеке укључују стварање интерактивних ПДФ докумената, додавање обележивача, спремање ПДФ-а као датотека слика, поделу и спајање постојећих ПДФ-а у више ПДФ-ова итд.
Шта ћете научити:
Зашто иТект?
Ради у свестраном окружењу аутоматизованог извештаја који производе одређени сервери као што су Апацхе Томцат, ЈБосс, Јунит. Пружа кориснички дефинисан документ према потребама корисника.
Да ли је иТект оријентисан на безбедност?
Нуди начине на које се документи могу дохватити на основу сигурносних операција, као што су заштићени лозинком или потврђивање уноса од корисника, попут отварања уплатнице уписивањем података о ПАН-у.
Данас углавном више волимо да податке чувамо у меким копијама него у штампаним копијама. Боље је чувати извештаје на серверима него на папирима. Кад год вам је потребан извештај, само покрените Јава датотеку и генеришите је тада и тамо.
У овом чланку покушајмо да пронађемо решење за следећа питања:
иоутубе то мп3 цонвертер висококвалитетно бесплатно преузимање
- Да ли можемо да користимо вишефункционалност?
- Да ли се користи само за припрему извештаја?
- Где можемо да користимо Итект?
- Да ли може да креира нови извештај?
- Ја сам тестер, да ли ми је то корисно?
Шта је иТект?
Резултат алата иТект је ПДФ извештај који је интегрисала Јава. Ово наслеђује ПДФ понашање, компоненте и генерише компатибилни извештај.
иТект је АПИ отвореног кода са кооперативним окружењем, учешћем у пуном знању, продирањем призме у светлост и темељима генерисања извештаја.
На пример: Размотримо пример карте за индијске железнице. Овде желимо испис детаљног сажетка поступка продаје карата, почев од претраживања доступности места до резервације карте.
Даље ћемо разумети како нам иТект може помоћи у испуњавању овог захтева.
Неке од карактеристика су следеће:
- Комплетан резиме пријаве (ЦСА)
- Детаљи једноставног праћења (ЕТД)
- Једноставна обрада пријаве (ЕПА)
Како покренути иТект извештај?
Итект-у је лако приступити путем Јаве. Илустровано је помоћу примера.
Пословни аналитичар (БА) од клијента добија документ пословног процеса (БПД) и документ функционалне спецификације (ФСД) који објашњава њихова очекивања од апликације.
Узмимо сценарио. БА је донео више захтева у вези са уоквиривањем извештаја, као и како наш основни производ то може подржати. Такве спецификације цењених клијената наводе нас на размишљање да пројекат ипак не изгубимо због вишеструке збуњености и дилеме о томе како извештај постићи на компатибилан начин.
Зашто таква забуна настаје у генерисаним извештајима?
То је зато што подаци присутни у апликацији само показују одраз података у Извештају. Не помера се да провери сваки чвор у апликацији (нпр. Као што се то ради у МРИ скенирању). Тако је то најлакши начин.
Да тачно. Али наш клијент очекује да подаци буду динамични. На основу доступних података, извештај треба генерисати на динамичан начин.
Размотримо ово на примеру у стварном времену.
Сценарио 1: Статички подаци могу бити чврсто кодирани и генерирати извештаје. Овде се износ зајма и вредност имовине не мењају пре исплате.
За горњи сценарио пронађите доњу слику:
Сценарио 2 : У овом сценарију, вредност имовине се повећава из дана у дан, а главницу износа зајма треба смањивати сваке године, а самим тим и предвиђени подаци су динамични.
Купац може доћи и обратити нам се како бисмо пружили детаље за различите финансијске године, јер је променио мандат и на основу њега је ЕМИ варирао. Ако сте чврсто кодирали податке као што је приказано на доњој слици, бићете ухваћени.
Размотримо случај када би извештај требало да буде динамичан. Не можемо то изнети онаквим какав јесте. Морамо обавити технички преглед и јасно проћи кроз захтеве пре него што започнемо развој и тестирање.
Морамо се врло јасно усредсредити на део дизајна за који одобрење даје пословни аналитичар. То је добар приступ јер нам се на било која накнадно покренута питања УАТ-а не може указати. Решено је да ће решење овог проблема динамичког генерисања извештаја једноставно користити Јава концепте у генерисању извештаја.
Како позвати извештај?
Дијаграм у наставку илуструје поступак за генерисање извештаја:
Како позвати извештај путем ЈСП-а?
Где год називамо Јаву, неопходно је направити дизајн корисничког интерфејса, јер ће ово деловати као мапа водича за наставак са предњег краја. То је једноставан начин јер можемо научити позив извештаја.
Размотримо пример:
Software Report
Извештај можемо да конфигуришемо на овај начин:
- Назив извештаја: Извештај о софтверу (приказ у апликацији)
- Пријави позивање путем ЈС: Узорак извештаја
- Дроп Мену: Може се интегрисати више извештаја
- На клик: ЈаваСцрипт функција
Како тестери могу да покрену извештај?
Испитивачи обично преферирају регресијско тестирање путем скрипти за аутоматизацију користећи оквир Цуцумбер, Кеиворд Дривен фрамеворк и Дата-Дривен фрамеворк.
Да бисмо пружили извештај на основу захтева клијента, можемо да наставимо са готовом архитектуром, тј. ИТект-ом, где уграђени алат наслеђује својства и понашање датотеке извештача, као и артефакте који се испоручују.
Тестер може да направи консолидовани извештај као што је Листа преосталих грешака (РБЛ), проценат испоручених резултата, мапирање ИД-а грешака на основу одговарајућих фаза као што су СИТ, УАТ и производно тестирање помоћу иТект Јава.
Размотрите сценарио који треба да конфигурише више извештаја.
Доњи код илуструје како се користи у ЈСП-у, што је оно што гледамо на предњем крају. Користи се следећа метода:
Software Report Software Report1 Software Report2
Како се позивати у ЈаваСцрипт (ЈС)?
Генерално, можемо да вршимо валидацију у ЈС, али то можете чак и на Јави. ЈаваСцрипт извршитељ је укључен у наш пакет за функцију позивања и за позивање програма да генерише извештај који је врло компатибилан.
Може се користити за позивање (позив) методе са објектом власника као аргументом.
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 } }
Горња метода обрађује на оптерећење() функција која се у апликацији може позвати да буде врло свестрана која покреће УРЛ за генерисање извештаја.
Како изградити функцију у Јава извештају?
Јава обрађује упозорења и изузетке у програму, а такође извршава генерисање извештаја.
Покажимо то на примеру.
ц вс ц ++ синтакса
Document Doc =new Document ();
То је начин креирања документа и такође је платформа која интегрише извештај.
Doc.open();
Горња наредба се користи за отварање документа. Важно је укључити ову наредбу као да није укључена, бациће изузетак документа.
Doc.close();
Горња наредба се користи за затварање документа који указује на ЈВМ да је документ прихватио да престане са писањем. Важно је укључити ову наредбу као да није укључена, бациће изузетак документа.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Горња команда приказује документ који интегрише својства ПДФ-а путем ПДФВритер-а, позива документ и чини га видљивим.
Paragraph para = new Paragraph ();
Одломак записује инстанцу садржаја аутоматског уклапања и такође уписује масовне редове захтева.
Doc.setpercentage(%to be given);
У горњој наредби документ је позван позивањем ПДФ-а да буде компатибилан како је дефинисано укљученим процентом.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Горња команда приказује име документа, укључено у двоструке наводнике, и наведену локацију за чување датотеке када се кликне на извештај.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Овде показује начин постављања ПДФ верзије у генерисање извештаја.
document. setPageSize (PageSize.A4);
Такође можемо да одредимо величину странице како се извештај мора достављати на основу захтева. Величина странице као А3, А4, А5 итд.
document. setMargins(24, 43, 34, 43);
Горе наведену функционалност можемо користити за постављање маргина, а можемо користити методу аутоматског прилагођавања како бисмо је нормално уклопили у документ.
document.setMarginMirroring(true);
Горња команда приказује метод подешавања огледала маргине.
Руковање упозорењима и изузецима
Важно је руковати упозорењима и изузецима на Јави.
У наставку су наведена нека упозорења на која наилазимо током извођења:
- НоСуцхЕлемент Екцептион
- Изузетак нулл показивача
- Индекс низа везан за изузетак
- Грешка у тврдњи
- Необрађена изузетак упозорења
- СКЛ Екцептион
- Изузетак за временско ограничење
- Изузетак документа
Понекад програмер може да одштампа и изузетак блока три-цатцх. Изузетак је приложен испод блока цатцх.
Пример:
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
Паран број
Излаз узорка: негативан сценарио
Унесите број за проверу: а
Догодило се изузеће: Изузетак илегалног формата
Објашњење:
Број мора бити наведен као улаз јер смо у горњем примеру кода дефинисали „н“ као цео број. Ако унесемо било коју абецеду тамо где покушава да добије Остатак (% модула који се користи), тада неће дохватити никакве податке и само ће изузетак избацити помоћу цатцх блока.
Тачна разлика између грешке и изузетка у Јави:
Грешка ће вас зауставити у извршавању програма, али изузетак ће бити ухваћен током покретања програма, док неће зауставити ваше извршавање.
Евидентирање дневника датотека:
Писање дневника за сваку методу или модул наводи нас да идентификујемо где ЈВМ престаје да се извршава. Дневник обично приказује вредност где се она чува у наведеној датотеци дневника и на који начин процесор извршава Јава програм у апликацији.
Разлика између Систем.оут.принтлн (СОП) и Лог:
Обоје исписују вредност или излажу шта год да је садржај унесен у двоструке наводнике. Али разлике између ове две су: Док је програм покренут, апликација штампа вредности на конзоли помоћу СОП наредбе. Али када избришемо садржај конзоле, тешко је пронаћи вредност. То се такође дешава када имамо више СОП-ова.
У основи, команда Лог фацтори може да преузме и ажурира вредности. Датотеку евиденције можемо прегледати по сваку цену, јер сваки пут записује сваки пут са системским датумом и временом.
Пример:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Сервери
Сервери играју важну улогу у корпорацији јер може да одреди да ли је извршавање програма прослеђено или не.
Локални сервери су сервери на којима можемо да извршимо програм на нашој локалној машини. Можемо користити следеће локалне сервере:
- Апацхе Томцат
- ЈБосс
Једном када код уђе Спремна држава, требало би да буде распоређен на наведени сервер и захтева поновно покретање. Могли бисмо да користимо следеће сервере:
- Орацле Веблогиц
- ИБМ Вебспхере
Пример програма:
Размотрите програм где би могао да обради иТект имплементацију.
/****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()); } }
Поравнање у Итект Јава
Генерално, корисницима су потребни документи извештаја у одређеном формату, јер извештаји морају јасно представљати шта и како желите да прикажете резултате. ИТект вам помаже у овоме.
Пример програма
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”); }}}
Да ли се иТект користи за креирање новог или ажурирање постојећег?
Може се поставити питање да ли се иТект користи само за стварање новог ПДФ-а? Одговор је не, осим што генерише нове ПДФ извештаје, иТект такође нуди неке функције као што је ажурирање постојећег пдф-а и пружа обједињени излаз који укључује ажурирану промену.
Пример кода:
// 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(); }
Део у иТект-у Пдф:
Цхунк је нова техника која се уклапа у расположиви простор у пдф-у и која не захтева ништа уз њу.
Пример програма:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
Ко може да користи иТект?
Профил | Развој | Виев Аццесс |
---|---|---|
Развој | Могуће | Усер-Фриендли |
Тестер | Делимично могуће | Усер-Фриендли |
Пословни аналитичар | Није могуће | Усер-Фриендли |
Купац | Није могуће | Усер-Фриендли |
Закључак
иТектпдф обично разрађује допринос извештају користећи Јаву ка исходу апликације
„ИТект је Јава, али генерише пдф који би одговарао кориснику и који може створити кристално јасне извештаје“
Предности иТект-а:
- Интерфејс за обраду апликација високог и ниског нивоа (АПИ)
- Компатибилност у пружању услуга од краја до краја (ПЕЕ)
- Доступност поновне провере протока текста за мобилне кориснике (ТФРАМ)
- Прилагодљивост.
- Доступност више платформи.
Мане иТект-а:
- Није у стању да постигне одређене дизајне.
- Потребно је темељно познавање концепата ООП-а.
Препоручено читање
- Водич за Јава рефлексију са примерима
- Јава СВИНГ лекције: Контејнери, компоненте и руковање догађајима
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Приступити модификаторима у Јави - Водич са примерима
- Јава Стринг са Стринг бафером и Стринг Буилдер Туториал
- Дата Март Туториал - Врсте, примери и примена Дата Март
- Јава Стринг садржи () Водич за методе са примерима
- Јава Стринг Водич | Јава стринг методе са примерима