itext tutorial convert data pdf report using java itext
이 iText 자습서에서는 Java 및 iText 라이브러리를 사용하여 대량 데이터를 안전한 단일 형식의 PDF 보고서로 조작하는 방법에 대해 설명합니다.
iText는 의미있는 정보를 보유한 단일 형태의 엔티티로 대량 데이터를 조작 할 수있는 통합 보고서를 생성하는 도구입니다.
iText는 Java 프로그램을 개발하여 PDF 문서를 작성하고 조작하는 데 사용되는 Java PDF 라이브러리입니다. iText 라이브러리의 일부 기능에는 대화 형 PDF 문서 생성, 책갈피 추가, PDF를 이미지 파일로 저장, 기존 PDF를 여러 PDF로 분할 및 병합 등이 포함됩니다.
학습 내용 :
왜 iText인가?
Apache Tomcat, JBoss, Junit과 같은 특정 서버에서 생성되는 자동 보고서의 다양한 환경에서 작동합니다. 사용자의 필요에 따라 사용자 정의 문서를 제공합니다.
iText 보안 지향적입니까?
암호로 보호되는 보안 관련 작업 또는 PAN 세부 정보를 입력하여 급여 명세서 열기와 같은 사용자 입력 확인과 같은 보안 관련 작업을 기반으로 문서를 검색 할 수있는 방법을 제공합니다.
오늘날 우리는 일반적으로 하드 카피보다는 소프트 카피에 데이터를 저장하는 것을 선호합니다. 보고서를 종이보다 서버에 저장하는 것이 좋습니다. 보고서가 필요할 때마다 Java 파일을 실행하고 생성하십시오.
이 기사에서는 다음 질문에 대한 해결책을 찾아 보겠습니다.
테스트 케이스 예제 작성 방법
- 다기능을 사용할 수 있습니까?
- 보고서 작성에만 사용됩니까?
- Itext는 어디에서 사용할 수 있습니까?
- 새 보고서를 만들 수 있습니까?
- 나는 테스터인데 도움이 되나요?
iText 란 무엇입니까?
iText 도구의 출력은 Java로 통합 된 PDF 보고서입니다. 이는 PDF 동작, 구성 요소를 상속하고 호환 가능한 보고서를 생성합니다.
iText는 협력 환경, 본격적인 참여, Prism 빛의 침투, 보고서 생성의 기반을 갖춘 오픈 소스 API입니다.
예를 들면 : Indian Railways 티켓의 예를 고려하십시오. 여기에서는 좌석 공석 검색에서 티켓 예약에 이르기까지 티켓 프로세스의 자세한 요약을 인쇄하고자합니다.
다음으로 iText가이 요구 사항을 어떻게 도울 수 있는지 이해할 것입니다.
일부 특성은 다음과 같습니다.
- 신청서의 전체 요약 (CSA)
- 간편한 추적 세부 정보 (ETD)
- 간편한 애플리케이션 처리 (EPA)
iText 보고서를 시작하는 방법?
Java를 통해 Itext에 접근하는 것은 쉽습니다. 예를 들어 설명합니다.
비즈니스 분석가 (BA)는 클라이언트로부터 비즈니스 프로세스 문서 (BPD) 및 기능 사양 문서 (FSD)를 가져와 애플리케이션의 기대치를 설명합니다.
시나리오를 봅시다. BA는 보고서 프레이밍에 대한 여러 요구 사항과 기본 제품이이를 지원할 수있는 방법을 가져 왔습니다. 평판이 좋은 고객의 이러한 사양은 호환 가능한 방식으로 보고서를 달성하는 방법에 대한 여러 가지 혼란과 딜레마 때문에 어쨌든 프로젝트를 잃지 않을 것이라고 생각하게 만듭니다.
생성 된 보고서에서 이러한 혼란이 발생하는 이유는 무엇입니까?
이는 애플리케이션에있는 데이터가 보고서에 반영된 데이터를 보여주기 때문입니다. 응용 프로그램의 각 노드를 확인하기 위해 이동하지 않습니다 (예 : MRI 스캔에서 수행 한 것처럼). 따라서 가장 쉬운 방법입니다.
네, 맞습니다. 그러나 우리 고객은 데이터가 동적 일 것으로 기대합니다. 사용 가능한 데이터를 기반으로 보고서는 동적 방식으로 생성되어야합니다.
실시간 예제를 통해이를 논의하겠습니다.
시나리오 1 : 정적 데이터는 하드 코딩되어 보고서를 생성 할 수 있습니다. 여기서 대출 금액과 재산 가치는 지불 전에 변경되지 않습니다.
위의 시나리오에 대한 아래 이미지를 찾으십시오.
시나리오 2 : 이 시나리오에서 부동산 가치는 매일 증가하고 대출 금액 원금은 매년 감소해야하므로 예측 된 데이터는 동적입니다.
고객은 임기를 변경하고이를 기반으로 EMI가 변경 되었기 때문에 다양한 회계 연도에 대한 세부 정보를 제공하기 위해 우리에게 다가 갈 수 있습니다. 아래 그림과 같이 데이터를 하드 코딩 한 경우 위험에 처하게됩니다.
보고서가 동적이어야하는 경우를 고려하십시오. 있는 그대로 내세울 수는 없습니다. 개발 및 테스트를 시작하기 전에 기술 검사를 수행하고 요구 사항을 명확하게 살펴 봐야합니다.
비즈니스 분석가의 승인을받은 설계 부분에 매우 명확하게 초점을 맞춰야합니다. 나중에 제기 된 UAT 문제는 지적 할 수 없기 때문에 좋은 접근 방식입니다. 이 동적 보고서 생성 문제에 대한 솔루션은 보고서 생성시 Java 개념을 사용하는 것으로 예측됩니다.
신고는 어떻게하나요?
아래 다이어그램은 보고서를 생성하는 프로세스를 보여줍니다.
JSP를 통해 보고서를 호출하는 방법은 무엇입니까?
Java를 호출 할 때마다 프론트 엔드에서 진행하는 가이드 맵 역할을하므로 UI 디자인을 수행해야합니다. Report 호출을 배울 수있는 쉬운 방법입니다.
예를 들어 보겠습니다.
Software Report
다음과 같은 방식으로 보고서를 구성 할 수 있습니다.
- 보고서 이름 : 소프트웨어 보고서 (애플리케이션에 표시)
- JS를 통한 신고 신고 : 샘플 보고서
- 드롭 메뉴 : 여러 보고서를 통합 할 수 있습니다.
- 클릭시 : 자바 스크립트 기능
테스터는 어떻게보고를 시작할 수 있습니까?
테스터는 일반적으로 Cucumber 프레임 워크, 키워드 기반 프레임 워크 및 데이터 기반 프레임 워크를 사용하는 자동화 스크립트를 통한 회귀 테스트를 선호합니다.
고객의 요구 사항을 기반으로 보고서를 제공하기 위해 내장 된 도구가 제공 할 아티팩트뿐만 아니라 리포터 파일의 속성과 동작을 상속하는 iText와 같은 기성품 아키텍처를 진행할 수 있습니다.
테스터는 iText Java를 사용하여 SIT, UAT 및 Production 테스트와 같은 각 단계를 기반으로 RBL (Remaining Bug List), 테스트 결과물 비율, 버그 ID 매핑과 같은 통합 보고서를 만들 수 있습니다.
여러 보고서를 구성해야하는 시나리오를 고려하십시오.
아래 코드는 프런트 엔드에서 살펴 보는 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 } }
위의 방법은 길 위에() 보고서를 생성하기 위해 URL을 트리거하는 매우 다양한 기능을 응용 프로그램에서 호출 할 수있는 함수입니다.
Java 보고서에서 기능을 구축하는 방법?
Java는 프로그램의 경고 및 예외를 처리하고 보고서 생성도 실행합니다.
예를 들어이를 설명하겠습니다.
Document Doc =new Document ();
문서를 작성하는 방법이자 보고서를 통합하는 플랫폼이기도합니다.
Doc.open();
위의 명령은 문서를 여는 데 사용됩니다. 이 명령이 포함되지 않은 것처럼 포함하는 것이 중요합니다. 문서 예외가 발생합니다.
Doc.close();
위의 명령은 문서가 쓰기 중지를 승인했음을 JVM을 나타내는 문서를 닫는 데 사용됩니다. 이 명령이 포함되지 않은 것처럼 포함하는 것이 중요합니다. 문서 예외가 발생합니다.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
위의 명령은 PDFWriter를 통해 PDF의 속성을 통합하고 문서를 호출하여 표시되도록하는 문서를 보여줍니다.
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);
위의 명령은 Margin 미러 설정 방법을 표시합니다.
경고 및 예외 처리
Java에서 경고 및 예외를 처리하는 것이 중요합니다.
런타임 중에 발생하는 경고 중 일부는 다음과 같습니다.
- NoSuchElement 예외
- Null 포인터 예외
- 예외의 배열 인덱스 경계
- 어설 션 오류
- 처리되지 않은 경고 예외
- 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 블록을 사용하여 예외를 throw합니다.
Java에서 오류와 예외의 정확한 차이점 :
오류가 발생하면 프로그램 실행이 중지되지만 프로그램을 실행하는 동안 예외가 발생하지만 실행이 중지되지는 않습니다.
파일 로그 로깅 :
모든 메소드 또는 모듈에 대한 로그를 작성하면 JVM이 실행을 중지하는 위치를 식별 할 수 있습니다. 로그는 일반적으로 지정된 로그 파일에 저장된 값과 프로세서가 애플리케이션에서 Java 프로그램을 실행하는 방식을 보여줍니다.
System.out.println (SOP)과 Log의 차이점 :
둘 다 값을 인쇄하거나 큰 따옴표로 입력 된 내용을 보여줍니다. 하지만 이 둘의 차이점은 다음과 같습니다. 프로그램이 실행되는 동안 응용 프로그램은 SOP 명령으로 콘솔에 값을 인쇄합니다. 그러나 일단 콘솔의 내용을 지운 후에는 값을 찾기가 어렵습니다. 이는 여러 SOP가있는 경우에도 발생합니다.
기본적으로 Log factory 명령은 값을 검색하고 업데이트 할 수 있습니다. 로그 파일은 시스템 날짜 및 시간과 함께 실행될 때마다 기록되기 때문에 어떤 비용 으로든 볼 수 있습니다.
예:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
서버
서버는 프로그램 실행의 통과 여부를 결정할 수 있으므로 기업에서 중요한 역할을합니다.
예제가있는 유닉스의 tar 명령
로컬 서버는 로컬 컴퓨터에서 프로그램을 실행할 수있는 서버입니다. 다음 로컬 서버를 사용할 수 있습니다.
- 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를 사용하여 보고서 기여를 정교화합니다
'iText는 Java이지만 사용자 친화적이고 명확한 보고서를 생성 할 수있는 pdf를 생성합니다.'
iText의 장점 :
- 상위 및 하위 수준의 애플리케이션 처리 인터페이스 (API)
- 종단 간 서비스 제공 (PEE)의 호환성
- 모바일 사용자를위한 텍스트 흐름 재확인 (TFRAM)
- 적응성.
- 크로스 플랫폼 가용성.
iText의 단점 :
- 특정 디자인을 달성 할 수 없습니다.
- OOP의 개념에 대한 철저한 지식이 필요합니다.