itext tutorial convert data pdf report using java itext
Bu iText Eğitimi, Java ve iText Kitaplığı kullanarak Toplu Verilerin Güvenli, Tek Bir PDF Raporu Formunda Nasıl Değiştirileceğini Açıklar:
iText, toplu verileri anlamlı bilgileri tutan tek bir varlık biçiminde işleyebileceğimiz birleştirilmiş bir rapor oluşturmak için bir araçtır.
iText, Java programları geliştirerek PDF belgelerini oluşturmak ve işlemek için kullanılan bir Java PDF kitaplığıdır. İText kitaplığının bazı özellikleri arasında etkileşimli PDF belgeleri oluşturma, yer imleri ekleme, PDF'leri görüntü dosyaları olarak kaydetme, mevcut PDF'leri bölme ve birden çok PDF'ye birleştirme vb. Yer alır.
Ne öğreneceksin:
Neden iText?
Apache Tomcat, JBoss, Junit gibi belirli sunucular tarafından üretilen çok yönlü bir Otomatik Rapor ortamında çalışır. Kullanıcının ihtiyaçlarına göre kullanıcı tanımlı bir belge sağlar.
İText Güvenliği Odaklı mı?
PAN ayrıntılarını girerek maaş bordrosu açma gibi parola korumalı veya kullanıcıdan gelen girişleri doğrulama gibi güvenlikle ilgili işlemlere dayalı olarak belgelerin alınabileceği yollar sunar.
Günümüzde genellikle verileri basılı kopyalar yerine elektronik kopyalar halinde kaydetmeyi tercih ediyoruz. Raporları belgeler yerine sunucularda depolamak daha iyidir. Rapora ne zaman ihtiyacınız olursa olsun, sadece Java dosyasını çalıştırın ve hemen orada oluşturun.
Bu yazıda aşağıdaki sorulara çözüm bulmaya çalışalım:
ağ anahtarı parola ile aynı mı
- Çok işlevli kullanabilir miyiz?
- Sadece rapor hazırlamak için kullanılıp kullanılmadığı?
- Itext'i nerede kullanabiliriz?
- Yeni raporu oluşturabilir mi?
- Ben bir testçiyim, bana yardımcı olur mu?
İText nedir?
İText aracının çıktısı, Java ile entegre edilmiş bir PDF raporudur. Bu, PDF davranışlarını, bileşenlerini devralır ve uyumlu bir rapor oluşturur.
iText, işbirliğine dayalı bir ortam, tam teşekküllü katılım, Prism ışığın nüfuz etmesi ve Rapor oluşturmanın temelini içeren açık kaynaklı bir API'dir.
Örneğin: Bir Hindistan Demiryolları bileti örneğini düşünün. Burada, koltuk müsaitliği aramadan bilet rezervasyonu yapmaya kadar bilet sürecinin ayrıntılı özetinin çıktısını istiyoruz.
Ardından, iText'in bu gereksinim konusunda bize nasıl yardımcı olabileceğini anlayacağız.
Bazı özellikler aşağıdaki gibidir:
- Başvurunun Tam Özeti (CSA)
- Kolay İzleme Ayrıntıları (ETD)
- Uygulamayı Kolay İşleme (EPA)
İText Raporuna Nasıl Başlanır?
Itext'e Java üzerinden ulaşmak kolaydır. Bir örnek yardımı ile gösterilmiştir.
İş Analisti (BA), müşteriden uygulamadan beklentilerini açıklayan İş Süreçleri Belgesini (BPD) ve İşlevsel Şartname Belgesini (FSD) alır.
Bir senaryo alalım. BA, rapor çerçevesinin yanı sıra temel ürünümüzün bunu nasıl destekleyebileceğiyle ilgili birçok gereksinim getirdi. Tanınmış müşterilerden gelen bu tür özellikler, raporu uyumlu bir şekilde nasıl elde edeceğimize dair çoklu kafa karışıklığı ve ikilem nedeniyle projeyi kaybetmemeyi düşündürüyor.
Oluşturulan Raporlarda neden böyle bir kafa karışıklığı ortaya çıkıyor?
Bunun nedeni, uygulamada bulunan verilerin yalnızca Rapordaki verilerin yansımasını göstermesidir. Uygulamadaki her düğümü kontrol etmek için hareket etmez (Örn. MRI Taramasında yapıldığı gibi). Dolayısıyla en kolay yol budur.
Evet kesinlikle. Ancak müşterimiz verilerin dinamik olmasını bekliyor. Mevcut verilere dayanarak, rapor dinamik bir şekilde oluşturulmalıdır.
Bunu gerçek zamanlı bir örnekle tartışalım.
Senaryo 1: Statik veriler kodlanabilir ve raporlar oluşturabilir. Burada, kredi tutarı ve mülk değeri, ödemeden önce değişmez.
Yukarıdaki senaryo için lütfen aşağıdaki resmi bulun:
Senaryo 2 : Bu senaryoda, mülk değeri gün geçtikçe artar ve Kredi Miktarı anaparasının her yıl azaltılması gerekir ve bu nedenle tahmin edilen veriler dinamiktir.
Bir müşteri gelip çeşitli mali yılların ayrıntılarını sağlamak için bize yaklaşabilir çünkü görev süresini değiştirmiştir ve buna bağlı olarak EMI çeşitlidir. Verileri aşağıdaki şekilde gösterildiği gibi kodladıysanız, suçüstü yakalanacaksınız.
Raporun dinamik olması gereken durumu düşünün. Bunu olduğu gibi ortaya koyamayız. Geliştirme ve teste başlamadan önce teknik incelemeyi yapmalı ve gereksinimleri net bir şekilde gözden geçirmeliyiz.
İş Analistinden onayın alındığı tasarım kısmına çok net bir şekilde odaklanmalıyız. Bu iyi bir yaklaşım çünkü daha sonra ortaya çıkan herhangi bir UAT sorunu bize gösterilemez. Bu dinamik rapor oluşturma sorununun çözümünün, bir rapor oluştururken yalnızca Java kavramlarını kullanacağı tahmin edilmektedir.
Rapor nasıl aranır?
Aşağıdaki şema, bir rapor oluşturma sürecini göstermektedir:
JSP Üzerinden Rapor Nasıl Çağırılır?
Java dediğimiz her yerde, ön uçtan ilerlemek için bir kılavuz harita görevi göreceğinden UI tasarımı yapmak gerekir. Rapor çağrısını öğrenebileceğimiz için kolay bir yoldur.
Bir örnek düşünelim:
Software Report
Raporu şu şekilde yapılandırabiliriz:
- Rapor Adı: Yazılım Raporu (uygulamada göster)
- JS üzerinden Rapor Çağrısı: Örnek Rapor
- Açılır Menü: Birden çok rapor entegre edilebilir
- Tıklamada: JavaScript Fonksiyonu
Test Uzmanları Raporu Nasıl Başlatabilir?
Test uzmanları genellikle Salatalık çerçevesi, Anahtar Kelime Odaklı çerçeve ve Veriye Dayalı çerçeveyi kullanan otomasyon komut dosyaları aracılığıyla Regresyon testini tercih eder.
Raporu müşterinin gereksinimlerine göre sağlamak için, hazır mimari ile devam edebiliriz, yani yerleşik aracın, bildirici dosyasının özelliklerini ve davranışını ve teslim edilecek eserleri devraldığı iText.
Test uzmanları, iText Java kullanarak Kalan Hata Listesi (RBL), test teslimat yüzdesi, hata kimliği eşlemesi gibi ilgili aşamalara dayalı olarak SIT, UAT ve Üretim testi gibi konsolide Raporları yapabilir.
Birden çok raporu yapılandırması gereken bir senaryo düşünün.
Aşağıdaki kod, ön uçta baktığımız şey olan JSP'de nasıl kullanılacağını göstermektedir. Aşağıdaki yöntem kullanılır:
Software Report Software Report1 Software Report2
JavaScript'te (JS) Nasıl Çağırılır?
Genel olarak, JS'de doğrulamalar yapabiliriz, ancak bunu Java'da bile yapabilirsiniz. JavaScript yürütücüsü, işlev çağırmak ve programı çok uyumlu bir rapor oluşturmak için çağırmak için paketimize dahil edilmiştir.
Argüman olarak bir sahip nesnesiyle (çağrı) yöntemini çağırmak için kullanılabilir.
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 } }
Yukarıdaki yöntem, onload () çok yönlü olması için uygulamada çağrılabilen işlev URL'yi Rapor oluşturmaya tetikler.
Java Raporunda İşlev Nasıl Oluşturulur?
Java, programdaki uyarıları ve istisnaları ele alır ve ayrıca rapor oluşturmayı yürütür.
Bunu bir örnek yardımıyla açıklayalım.
Document Doc =new Document ();
Belgeyi yaratmanın yolu ve aynı zamanda raporu entegre eden platformdur.
Doc.open();
Yukarıdaki komut, belgeyi açmak için kullanılır. Bu komutu, dahil edilmemiş gibi dahil etmek önemlidir, belge istisnası atacaktır.
Doc.close();
Yukarıdaki komut, JVM'nin belgenin yazmayı durdurmayı kabul ettiğini belirten belgeyi kapatmak için kullanılır. Bu komutu, dahil edilmemiş gibi dahil etmek önemlidir, belge istisnası atacaktır.
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
Yukarıdaki komut, PDFWriter aracılığıyla PDF'nin özelliklerini bütünleştiren, belgeyi çağıran ve onu görünür kılan belgeyi gösterir.
Paragraph para = new Paragraph ();
Bir paragraf, otomatik sığdırma içeriklerinin örneğini yazar ve ayrıca gereksinimin toplu satırlarını da yazar.
Doc.setpercentage(%to be given);
Yukarıdaki komutta, dahil edilen yüzde ile tanımlanan şekilde uyumlu olması için PDF çağrılırken bir belge çağrılmıştır.
public static final String output FileName = 'sample output/Automation/sample report.pdf';
Yukarıdaki komut, çift tırnak işaretlerinde yer alan belge adını ve rapora tıklandığında dosyanın saklanacağı belirtilen konumu görüntüler.
writer. setPdfVersion(PdfWriter.VERSION_1_9);
Burada, Rapor oluşturmada PDF Sürümünü ayarlamanın yolunu gösterir.
document. setPageSize (PageSize.A4);
Gereksinimlere göre raporun nasıl teslim edilmesi gerektiğine ilişkin sayfa boyutunu da belirleyebiliriz. Sayfa boyutu A3, A4, A5 vb.
document. setMargins(24, 43, 34, 43);
Kenar boşluklarını ayarlamak için yukarıdaki işlevi kullanabiliriz ve otomatik sığdırma yöntemini belgeye normal şekilde sığdırmak için kullanabiliriz.
document.setMarginMirroring(true);
Yukarıdaki komut, Margin mirror ayarının yöntemini gösterir.
Uyarıları ve İstisnaları Yönetme
Java'daki uyarıları ve istisnaları işlemek önemlidir.
Çalışma sırasında karşılaştığımız bazı uyarılar aşağıda listelenmiştir:
- NoSuchElement İstisnası
- Boş İşaretçi İstisnası
- İstisnanın Dizi Dizini sınırı
- Onaylama Hatası
- İşlenmemiş Uyarı İstisnası
- SQL İstisnası
- Zaman Aşımı İstisnası
- Belge İstisnası
Bazen geliştirici, bir dene-yakala bloğu istisnasını da yazdırabilir. İstisna, yakalama bloğunun altında bulunur.
Misal:
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); }
Örnek Çıktı: Olumlu Senaryo
Kontrol edilecek numarayı girin: 2
Çift sayı
Örnek Çıktı: Negatif Senaryo
Kontrol edilecek numarayı girin: a
Bir istisna oluştu: Yasadışı Biçim İstisnası
Açıklama:
Yukarıdaki kod örneğinde 'n' yi bir Tamsayı olarak tanımladığımız için girdi olarak bir sayı verilmelidir. Remainder'ı (kullanılan% modül) almaya çalıştığı herhangi bir alfabe girersek, o zaman herhangi bir veriyi almayacak ve catch bloğunu kullanarak istisnayı atacaktır.
Java'da Hata ve İstisna arasındaki tam fark:
Bir hata, programı yürütmenizi engelleyecektir, ancak programı çalıştırırken bir İstisna yakalanacak ve yürütmenizi durdurmayacaktır.
Bir Dosya günlüğünü günlüğe kaydetme:
Her yöntem veya modül için günlüğü yazmak, JVM'nin nerede yürütmeyi durdurduğunu belirlememizi sağlar. Günlük genellikle, belirtilen günlük dosyasında depolandığı değeri ve işlemcinin uygulamada Java Programını hangi yolla çalıştırdığını gösterir.
.jar dosyaları nasıl çalıştırılır
System.out.println (SOP) ve Log arasındaki fark:
Her ikisi de, içeriğin çift tırnak içinde girildiği değeri veya vitrini yazdırır. Fakat bu ikisi arasındaki farklar: Program çalışırken uygulama konsol üzerindeki değerleri SOP komutu ile yazdırır. Ancak konsolun içeriğini bir kez sildiğimizde, değeri bulmak zor. Bu aynı zamanda birden fazla SOP'umuz olduğunda da olur.
Temel olarak, Log factory komutu değerleri alabilir ve güncelleyebilir. Günlük dosyasını her çalıştırmada sistem tarih ve saatiyle yazdığı için herhangi bir maliyetle görüntüleyebiliriz.
Misal:
private static Log logFile= LogFactory.getLog(SampleProgram.class);
Sunucular
Sunucular, programın yürütülmesinin geçilip geçilmediğini belirleyebildiği için şirkette önemli bir rol oynar.
Yerel sunucular, yerel makinemizde programı çalıştırabileceğimiz sunuculardır. Aşağıdaki yerel sunucuları kullanabiliriz:
- Apache Tomcat
- JBoss
Kod girildiğinde Hazır Durum, belirtilen sunucuya dağıtılmalıdır ve yeniden başlatma gerektirir. Aşağıdaki sunucuları kullanabiliriz:
- Oracle Weblogic
- IBM Websphere
Örnek Program:
İText uygulamasını işleyebileceği programı düşünün.
/****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'da Hizalama
Genel olarak, kullanıcılar rapor belgelerine belirli bir formatta ihtiyaç duyar çünkü raporlar, sonuçları neyi ve nasıl göstermek istediğinizi açıkça temsil etmelidir. IText size bu konuda yardımcı olur.
Örnek Program
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”); }}}
İText, yeni bir tane oluşturmak veya mevcut olanı güncellemek için mi kullanılıyor?
İText'in yalnızca yeni bir PDF oluşturmak için kullanılıp kullanılmadığı sorusu ortaya çıkabilir. Cevap hayırdır, yeni PDF raporları oluşturmanın yanı sıra iText, mevcut bir pdf'i güncelleme ve güncellenmiş değişikliği içeren konsolide çıktı sağlama gibi bazı özellikler de sağlar.
Basit kod:
// 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(); }
İText Pdf'deki yığın:
Chunk, pdf'deki mevcut alana uyan ve eşlik edecek hiçbir şey gerektirmeyen yeni tekniktir.
Örnek Program:
doc.open(): doc.add(new chunk (“1st order”)); doc.add(new chunk(“2nd order”)); doc.add(new chunk(“3rd order”)); doc.close();
İText'i Kimler Kullanabilir?
Profil | Geliştirme | Erişimi Görüntüle |
---|---|---|
Geliştirme | Mümkün | Kullanıcı dostu |
Test cihazı | Kısmen Mümkün | Kullanıcı dostu |
İş analisti | Mümkün değil | Kullanıcı dostu |
Müşteri | Mümkün değil | Kullanıcı dostu |
Sonuç
iTextpdf genellikle Java kullanarak uygulama sonucuna yönelik rapor katkısını detaylandırır
'İText Java'dır, ancak kullanıcı dostu olarak uyan ve kristal netliğinde raporlar oluşturabilen pdf oluşturur'
İText'in avantajları:
- Yüksek ve düşük seviyeli Uygulama İşleme Arayüzü (API)
- Uçtan Uca Hizmetler Sağlamada Uyumluluk (PEE)
- Mobil kullanıcılar için Metin Akışı Yeniden Kontrol Edilebilirliği (TFRAM)
- Uyarlanabilirlik.
- Çapraz platform kullanılabilirliği.
İText'in dezavantajları:
- Spesifik tasarımlar elde edemez.
- OOP kavramları hakkında kapsamlı bilgi gereklidir.
Önerilen Kaynaklar
- Örneklerle Java Yansıtma Eğitimi
- Java SWING Eğitimi: Konteyner, Bileşenler ve Olay İşleme
- Yeni Başlayanlar İçin JAVA Eğitimi: 100+ Uygulamalı Java Video Eğitimi
- Java'da Erişim Değiştiriciler - Örneklerle Eğitim
- String Buffer ve String Builder Eğitimi ile Java String
- Data Mart Eğitimi - Data Mart Türleri, Örnekleri ve Uygulaması
- Java Dizesi () Örneklerle Yöntem Eğitimi içerir
- Java Dize Eğitimi | Örneklerle Java Dize Yöntemleri