itext
टेबल्स: iText 5 बनाम iText 7
खोज…
टिप्पणियों
पंछी 5 वर्ग के नाम PdfPTable
और PdfPCell
चुने गए हैं क्योंकि हम पहले से ही नामित वर्गों था Table
और Cell
उच्चतम प्रोग्रामिंग स्तर पर टेबल और सेल वस्तुओं को बनाने के। आंतरिक रूप से iText द्वारा उपयोग किए जाने वाले PdfTable
नामक एक वर्ग भी था। उन वर्गों खामियों का एक बहुत था और वे के पक्ष में पदावनत किया गया PdfPTable
और PdfPCell
। उन्हें बहुत पहले हटा दिया गया है।
इन वर्षों में, PdfPTable
और PdfPCell
भी उपयोगकर्ताओं से कुछ आलोचना का स्वागत किया। उदाहरण के लिए: उपयोगकर्ता पाठ मोड और समग्र मोड के बीच अंतर को नहीं समझते थे।
पाठ मोड का उपयोग तब किया जाता है जब आप एक PdfPCell
बनाते हैं:
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
इस स्थिति में, आप PdfPCell
के स्तर पर क्षैतिज संरेखण की तरह गुणों को परिभाषित करते हैं।
समग्र मोड आपके द्वारा addElement()
विधि का उपयोग करने के क्षण में किक करता है:
cell = new PdfPCell();
cell.addElement(new Phrase("Cell 1.2"));
इस स्थिति में, PdfPCell
(जैसे कि क्षैतिज संरेखण) के स्तर पर परिभाषित कुछ गुणों को अनदेखा किया जाता है। क्षैतिज संरेखण को सेल में जोड़े गए तत्वों के स्तर पर परिभाषित किया जाना है। उदाहरण के लिए: यदि आप एक सेल बनाना चाहते हैं जिसमें विभिन्न पैराग्राफ के लिए एक अलग क्षैतिज संरेखण की आवश्यकता है, तो आप समग्र मोड पर स्विच करेंगे।
यदि आप iText 5 उदाहरण के साथ बनाई गई तालिका के स्क्रीन शॉट को देखते हैं, तो आप देखेंगे कि सामग्री सेल 1.1 (पाठ मोड में जोड़ा गया) और सेल 1.2 (समग्र मोड में जोड़ा गया) वाले सेल काफी अलग तरीके से संरेखित हैं।
विषम संरेखण पर आलोचना के जवाब में, हमने आरोही और अवरोही जानकारी का उपयोग करने के तरीके पेश किए। हम इन विधियों का उपयोग सामग्री सेल 2.1 (पाठ मोड में जोड़ा गया) और सेल 2.2 (समग्र मोड में जोड़ा गया) के साथ कोशिकाओं के लिए करते हैं। हमने इन कोशिकाओं के लिए 5 का एक पैडिंग भी पेश किया।
अब परिणाम काफी बेहतर है।
हमने iText 7 में क्या तय किया है:
चूंकि हमने स्क्रैच से iText 7 बनाया है, हमारे पास उन नामों के साथ कोई विरासत कक्षाएं नहीं थीं जिनका हम पुन: उपयोग नहीं कर सकते थे। हमने एक नई Table
और एक नया Cell
वर्ग पेश किया।
कोई और पाठ मोड नहीं है और कोई अधिक समग्र मोड नहीं है। एक Cell
या तो मापदंडों के बिना बनाया जाता है, या उन मापदंडों के साथ जो रोस्पैन और कोल्प्सन को परिभाषित करते हैं। सभी सामग्री को उसी तरह जोड़ा जाता है: add()
विधि का उपयोग करना।
हमारे ग्राहक मार्जिन और पैडिंग में अंतर करने के लिए साधन उपलब्ध कराने के लिए भी कह रहे थे। IText 7 उदाहरण में, हमने अंतर दिखाने के लिए एक ग्रे बैकग्राउंड जोड़ा। सामग्री सेल 2.1 के साथ सेल में , हम 5 उपयोगकर्ता इकाइयों के मार्जिन को परिभाषित करते हैं। डिफ़ॉल्ट पैडिंग 2 है। सामग्री सेल 2.2 के साथ सेल में , हम 5 उपयोगकर्ता इकाइयों की पैडिंग को परिभाषित करते हैं, 0 में डिफ़ॉल्ट मार्जिन।
जैसा कि आप स्क्रीन शॉट्स से बता सकते हैं, कोशिकाओं को काफी अच्छी तरह से गाया जाता है। हमें आरोही या अवरोही सेट करने के तरीकों का उपयोग नहीं करना था। डिफ़ॉल्ट व्यवहार उस व्यवहार के बहुत करीब होता है जो एक डेवलपर अपेक्षा करता है।
IText 7 में तालिकाओं और कोशिकाओं के बारे में अधिक जानना चाहते हैं?
एब्सट्रैक्ट ऑब्जेक्ट्स (भाग 2) को जोड़ना जो iText 7 में अध्याय 5 है : बिल्डिंग ब्लॉक्स ट्यूटोरियल। मुफ्त ebook जाओ!
HelloWorldTable.java (iText 5)
इस उदाहरण में, हम iText 5 का उपयोग करके निम्नलिखित तालिका बनाएंगे:
हम की जरूरत है PdfPTable
और PdfPCell
इस लक्ष्य को हासिल करने के लिए वर्ग:
public void createPdf(String dest) throws IOException, DocumentException {
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream(dest));
document.open();
PdfPTable table = new PdfPTable(3);
PdfPCell cell = new PdfPCell(new Phrase("Cell with colspan 3"));
cell.setColspan(3);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Phrase("Cell with rowspan 2"));
cell.setRowspan(2);
cell.setVerticalAlignment(Element.ALIGN_MIDDLE);
table.addCell(cell);
table.addCell("Cell 1.1");
cell = new PdfPCell();
cell.addElement(new Phrase("Cell 1.2"));
table.addCell(cell);
cell = new PdfPCell(new Phrase("Cell 2.1"));
cell.setPadding(5);
cell.setUseAscender(true);
cell.setUseDescender(true);
cell.setHorizontalAlignment(Element.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell();
cell.setPadding(5);
cell.setUseAscender(true);
cell.setUseDescender(true);
Paragraph p = new Paragraph("Cell 2.2");
p.setAlignment(Element.ALIGN_CENTER);
cell.addElement(p);
table.addCell(cell);
document.add(table);
document.close();
}
स्रोत: Developers.itextpdf.com
HelloWorldTable.java (iText 7)
इस उदाहरण में, हम iText 7 का उपयोग करके निम्नलिखित तालिका बनाएंगे:
इसे प्राप्त करने के लिए हमें Table
और Cell
वर्ग की आवश्यकता होगी:
public void createPdf(String dest) throws IOException {
PdfDocument pdf = new PdfDocument(new PdfWriter(dest));
try (Document document = new Document(pdf)) {
Table table = new Table(3);
Cell cell = new Cell(1, 3)
.setTextAlignment(TextAlignment.CENTER)
.add("Cell with colspan 3");
table.addCell(cell);
cell = new Cell(2, 1)
.add("Cell with rowspan 2")
.setVerticalAlignment(VerticalAlignment.MIDDLE);
table.addCell(cell);
table.addCell("Cell 1.1");
table.addCell(new Cell().add("Cell 1.2"));
table.addCell(new Cell()
.add("Cell 2.1")
.setBackgroundColor(Color.LIGHT_GRAY)
.setMargin(5));
table.addCell(new Cell()
.add("Cell 1.2")
.setBackgroundColor(Color.LIGHT_GRAY)
.setPadding(5));
document.add(table);
}
}
स्रोत: Developers.itextpdf.com और iText 7: बिल्डिंग ब्लॉक्स ट्यूटोरियल।