itext
प्रपत्र: iText 5 बनाम iText 7
खोज…
टिप्पणियों
iText 5 एक पुस्तकालय है जो व्यवस्थित रूप से विकसित हुआ है। कई डेवलपर्स ने कोड का योगदान दिया। उदाहरण के लिए: एक डेवलपर ने TextField
से फ़ील्ड बनाने के लिए कोड का योगदान दिया, जैसे TextField
और PdfFormField
; किसी अन्य डेवलपर ने AcroField
वर्ग और setFieldProperty()
विधियों की एक श्रृंखला का उपयोग करके मौजूदा फॉर्म फ़ील्ड को बदलने के लिए कोड का योगदान दिया।
IText 5 में, फॉर्म फ़ील्ड बनाने के लिए उपयोग की जाने वाली कक्षाएं फॉर्म फ़ील्ड और इसके विपरीत बदलने के लिए उपयोग नहीं की जा सकती हैं। वर्गों के दो सेटों के बीच कोई संबंध नहीं है। यह कई उपयोगकर्ताओं के लिए भ्रामक है। उदाहरण के लिए: कुछ उपयोगकर्ता TextField
वर्ग की खोज करते हैं, और मान लेते हैं कि वे किसी मौजूदा पाठ क्षेत्र के गुणों को बदलने के लिए उस वर्ग का उपयोग कर सकते हैं। यह मामला नहीं है, उन्हें इसके बजाय AcroFields
वर्ग का उपयोग करने की आवश्यकता है।
यह सब iText 7 में तय किया गया है। हमने PdfFormField
और इसके उपवर्ग PdfTextField
जैसी कक्षाओं का एक नया सेट बनाया है जिसका उपयोग एक नया फ़ील्ड बनाने के लिए किया जा सकता है, साथ ही एक मौजूदा फॉर्म फ़ील्ड को अपडेट करने के लिए भी।
आपके कोड को अधिक कॉम्पैक्ट बनाने के लिए iText 7 फॉर्म फ़ील्ड विधियों को जंजीर बनाया जा सकता है, और वे iText 5 में संबंधित विधियों की तुलना में बहुत अधिक सहज हैं। प्रपत्र की कार्यक्षमता को अधिक सुरुचिपूर्ण बनाना iText को खरोंच से फिर से लिखने के प्रमुख कारणों में से एक था।
फॉर्मक्रिएशन.जावा (iText 5)
इस iText 5 उदाहरण में, हम एक पाठ क्षेत्र बनाएँगे और उसे एक पीडीएफ में जोड़ेंगे:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
TextField tf = new TextField(stamper.getWriter(),
new Rectangle(110, 780, 180, 806), "text");
tf.setBorderColor(BaseColor.BLUE);
tf.setBorderWidth(2);
tf.setTextColor(BaseColor.RED);
tf.setFontSize(12);
tf.setText("Text field");
PdfFormField field = tf.getTextField();
stamper.addAnnotation(field, 1);
stamper.close();
reader.close();
}
स्रोत: Developers.itextpdf.com
फॉर्मक्रिएशन.जावा (iText 7)
इस iText 7 उदाहरण में, हम एक पाठ क्षेत्र बनाएँगे और उसे एक पीडीएफ में जोड़ेंगे:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = PdfTextFormField.createText(
pdf, new Rectangle(110, 780, 70, 26), "text", "Text Field")
.setBorderColor(Color.BLUE)
.setBorderWidth(2)
.setColor(Color.RED)
.setFontSize(12);
form.addField(tf);
pdf.close();
}
स्रोत: Developers.itextpdf.com
FormFilling.java (iText 5)
इस iText 5 उदाहरण में, हम गुणों और पाठ फ़ील्ड के मान को बदलेंगे:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields fields = stamper.getAcroFields();
fields.setFieldProperty("text", "textcolor", BaseColor.BLUE, null);
fields.setFieldProperty("text", "bordercolor", BaseColor.RED, null);
fields.setFieldProperty("text", "fontsize", 14, null);
fields.setField("text", "Field Text");
stamper.close();
reader.close();
}
स्रोत: Developers.itextpdf.com
FormFilling.java (iText 7)
इस iText 7 उदाहरण में, हम गुणों और पाठ फ़ील्ड के मान को बदलेंगे:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = form.getFormFields().get("text");
tf.setBorderColor(Color.RED)
.setColor(Color.BLUE)
.setFontSize(14)
.setValue("Field Text");
pdf.close();
}
स्रोत: Developers.itextpdf.com