itext tutorial convert data pdf report using java itext
このiTextチュートリアルでは、JavaとiTextライブラリを使用してバルクデータを安全な単一形式のPDFレポートに操作する方法について説明します。
iTextは、意味のある情報を保持する単一の形式のエンティティにバルクデータを操作できる統合レポートを生成するためのツールです。
iTextは、Javaプログラムを開発してPDFドキュメントを作成および操作するために使用されるJavaPDFライブラリです。 iTextライブラリの機能には、インタラクティブPDFドキュメントの生成、ブックマークの追加、PDFの画像ファイルとしての保存、既存のPDFの複数のPDFへの分割とマージなどがあります。
学習内容:
なぜiTextなのか?
これは、Apache Tomcat、JBoss、Junitなどの特定のサーバーによって生成される自動レポートの用途の広い環境で機能します。ユーザーのニーズに応じてユーザー定義のドキュメントを提供します。
iTextのセキュリティ指向ですか?
パスワードで保護したり、PANの詳細を入力して給与明細を開くなど、ユーザーからの入力を検証したりするなど、セキュリティ関連の操作に基づいてドキュメントを取得する方法を提供します。
今日、私たちは一般的にハードコピーよりもソフトコピーでデータを保存することを好みます。紙よりもサーバーにレポートを保存することをお勧めします。レポートが必要なときはいつでも、Javaファイルを実行してその場で生成するだけです。
この記事では、次の質問に対する解決策を見つけてみましょう。
新しいメールプロバイダーが必要です
- 多機能を使用できますか?
- レポート作成のみに使用するのか?
- Itextはどこで使用できますか?
- 新しいレポートを作成できるかどうか。
- 私はテスターですが、役に立ちますか?
iTextとは何ですか?
iTextツールの出力は、Javaによって統合されたPDFレポートです。これはPDFの動作、コンポーネントを継承し、互換性のあるレポートを生成します。
iTextは、協調的な環境、本格的なPrismの光の浸透、およびレポート生成の基盤を備えたオープンソースAPIです。
例えば: インド鉄道のチケットの例を考えてみましょう。ここでは、空席の検索からチケットの予約まで、チケットプロセスの詳細な概要を印刷する必要があります。
次に、iTextがこの要件にどのように役立つかを理解します。
いくつかの特徴は次のとおりです。
- アプリケーションの完全な要約(CSA)
- Easy Tracking Details(ETD)
- アプリケーションの簡単な処理(EPA)
iTextレポートを開始する方法は?
Javaを介してItextにアプローチするのは簡単です。それは例の助けを借りて説明されています。
ビジネスアナリスト(BA)は、クライアントからビジネスプロセスドキュメント(BPD)と機能仕様ドキュメント(FSD)を取得し、アプリケーションからの期待を説明します。
シナリオを考えてみましょう。 BAは、レポートのフレーミングと、基本製品がこれをどのようにサポートできるかについて、複数の要件をもたらしました。評判の良いクライアントからのそのような仕様は、互換性のある方法でレポートを達成する方法に関する複数の混乱とジレンマのために、とにかくプロジェクトを失うことはないと考えさせます。
生成されたレポートでこのような混乱が発生するのはなぜですか?
これは、アプリケーションに存在するデータが、レポート内のデータの反映を示しているだけだからです。アプリケーションの各ノードをチェックするために移動することはありません(例:MRIスキャンで行われるように)。したがって、これが最も簡単な方法です。
はい、正確に。しかし、私たちのクライアントは、データが動的であることを期待しています。利用可能なデータに基づいて、レポートは動的な方法で生成する必要があります。
これについて、リアルタイムの例で説明しましょう。
シナリオ1:シナリオ1: 静的データをハードコーディングしてレポートを生成できます。ここでは、融資額と資産価値は支払い前に変更されません。
上記のシナリオについては、以下の画像をご覧ください。
シナリオ2 : このシナリオでは、プロパティ値は日ごとに増加し、ローン金額の元本は毎年減少する必要があるため、予測されるデータは動的です。
顧客は、在職期間が変更され、それに基づいてEMIが変化したため、さまざまな会計年度の詳細を提供するために私たちに来てアプローチすることができます。次の図に示すようにデータをハードコーディングしている場合は、手に負えないものになります。
レポートが動的であると想定されている場合を考えてみます。そのままではお伝えできません。開発とテストを開始する前に、技術的な検査を行い、要件を明確に確認する必要があります。
ビジネスアナリストから承認が得られる設計部分に明確に焦点を当てる必要があります。後で提起されたUATの問題は私たちに指摘できないため、これは良いアプローチです。動的レポート生成のこの問題の解決策は、レポートの生成にJavaの概念を使用するだけであると予測されています。
レポートを呼び出す方法は?
次の図は、レポートを生成するプロセスを示しています。
JSPを介してレポートを呼び出す方法は?
Javaを呼び出す場合は常に、UI設計を行う必要があります。これは、フロントエンドから続行するためのガイドマップとして機能するためです。レポート呼び出しを学ぶことができるので、これは簡単な方法です。
例を考えてみましょう:
Software Report
レポートは次のように構成できます。
- レポート名: ソフトウェアレポート(アプリケーションに表示)
- JSを介したレポート呼び出し: サンプルレポート
- ドロップメニュー: 複数のレポートを統合できます
- クリック時: JavaScript関数
テスターはどのようにレポートを開始できますか?
テスターは通常、Cucumberフレームワーク、Keyword Drivenフレームワーク、およびData-Drivenフレームワークを使用した自動化スクリプトによる回帰テストを好みます。
クライアントの要件に基づいてレポートを提供するために、既製のアーキテクチャ、つまり、組み込みツールがレポーターファイルのプロパティと動作、および配信されるアーティファクトを継承するiTextを使用できます。
テスターは、iText Javaを使用して、残りのバグリスト(RBL)、テスト成果物の割合、SIT、UAT、本番テストなどの各フェーズに基づくバグ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 } }
上記の方法は、 onload() アプリケーションで呼び出すことができる関数で、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);
上記の機能を使用してマージンを設定し、autofitメソッドを使用してドキュメント内に通常どおりに合わせることができます。
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」を整数として定義しているため、入力として数値を指定する必要があります。 Remainder(使用された%モジュラス)を取得しようとするアルファベットを入力すると、データは取得されず、catchブロックを使用して例外がスローされます。
Javaのエラーと例外の正確な違い:
エラーが発生するとプログラムの実行が停止しますが、プログラムの実行中に例外がキャッチされ、実行は停止されません。
ファイルログのログ:
すべてのメソッドまたはモジュールのログを書き込むことで、JVMが実行を停止する場所を特定できます。ログは通常、指定されたログファイルに格納されている値と、プロセッサがアプリケーションでJavaプログラムを実行する方法を示します。
System.out.println(SOP)とログの違い:
どちらも、値を出力するか、コンテンツが二重引用符で囲まれている場合はそれを示します。しかし これら2つの違いは次のとおりです。 プログラムの実行中に、アプリケーションはSOPコマンドによってコンソールに値を出力します。しかし、コンソールの内容を消去すると、値を見つけるのは困難です。これは、複数のSOPがある場合にも発生します。
基本的に、Logfactoryコマンドは値を取得して更新できます。ログファイルは、実行のたびにシステムの日付と時刻で書き込まれるため、どのようなコストでも表示できます。
例:
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()); } }
ItextJavaでの配置
通常、レポートには結果を表示する内容と方法を明確に表す必要があるため、ユーザーは特定の形式のレポートドキュメントを必要とします。 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の利点:
Windowsで.datファイルを開く方法
- 高レベルおよび低レベルのアプリケーション処理インターフェイス(API)
- エンドツーエンドサービスの提供(PEE)の互換性
- モバイルユーザーの利用可能性を再確認するテキストフロー(TFRAM)
- 適応性。
- クロスプラットフォームの可用性。
iTextのデメリット:
- 特定のデザインを実現することはできません。
- OOPの概念に関する十分な知識が必要です。