C#

2013-04-12 11 views
5

में iTextsharp का उपयोग करके पीडीएफ फ़ाइल में तालिका की स्थिति निर्दिष्ट करने के लिए कैसे करें मैंने एक पीडीएफ फ़ाइल बनाई है जिसमें ग्राफिक्स हैं, अब मैं उन ग्राफिक्स के तहत एक टेबल जोड़ने की कोशिश कर रहा हूं। मेरी समस्या यह है कि तालिका ग्राफिक्स पर है, मैं उस स्थान/स्थिति को कैसे निर्दिष्ट करूं जहां मैं अपनी तालिका को पीडीएफ दस्तावेज़ पर रखना चाहता हूं ??C#

यह मेरा कोड

 docl.Open(); 
     docl.Add(new Paragraph("My first PDF file")); 

     PdfContentByte cb = writer.DirectContent; 
     //employee 
     //    position y,position x,length,height, unknown 
     cb.RoundRectangle( 20f,  745f,  200f, 35f,  10f); 
     //title 
     cb.RoundRectangle(235f, 745f, 35f, 35f, 10f); 
     //identity number 
     cb.RoundRectangle(280f, 745f, 105f, 35f, 10f); 
     //date of birth 
     cb.RoundRectangle(390f, 745f, 105f, 35f, 10f); 
     //employee number 
     cb.RoundRectangle(500f, 745f, 105f, 35f, 10f); 
     //address 
     cb.RoundRectangle(20f, 660f, 200f, 80f, 10f); 
     //pay method 
     cb.RoundRectangle(235f, 700f, 35f, 35f, 10f); 
     //brantch code 
     cb.RoundRectangle(235f, 660f, 35f, 35f, 10f); 
     //bank 
     cb.RoundRectangle(280f, 700f, 215f, 35f, 10f); 
     //account type 
     cb.RoundRectangle(500f, 700f, 105f, 35f, 10f); 
     //account number 
     cb.RoundRectangle(280f, 660f, 160f, 35f, 10f); 
     //pay point 
     cb.RoundRectangle(445f, 660f, 35f, 35f, 10f); 
     //date of payment 
     cb.RoundRectangle(506f, 660f, 90f, 35f, 10f); 
     //marital status 
     cb.RoundRectangle(20f, 600f, 35f, 35f, 10f); 
     //gender 
     cb.RoundRectangle(60f, 600f, 35f, 35f, 10f); 
     //date of appointment 
     cb.RoundRectangle(100f, 600f, 70f, 35f, 10f); 
     //Tax number 
     cb.RoundRectangle(175f, 600f, 70f, 35f, 10f); 
     cb.Stroke(); 

     PdfPTable table = new PdfPTable(2); 
     table.HorizontalAlignment = 0; 
     table.SetTotalWidth(new float[] { 800, 200 }); 
     PdfPCell cell = new PdfPCell(new Phrase("EARNINGS")); 
     cell.Colspan = 2; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Description"); 
     table.AddCell("Amount"); 

मैं दस्तावेज़ पर ग्राफिक्स की स्थिति निर्दिष्ट करने के लिए इस लाइन का इस्तेमाल किया है: // स्थिति y, स्थिति एक्स, लंबाई, ऊंचाई, अज्ञात cb.RoundRectangle (20f , 745 एफ, 200 एफ, 35 एफ, 10 एफ);

This how my document looks:

मैं ग्राफिक्स नीचे दी गई तालिका रखना चाहते हैं।

उत्तर

1

आप पेज सामग्री के लिए उच्च स्तरीय दृष्टिकोण (document.add() का उपयोग करके) निम्न-स्तर दृष्टिकोण (पूर्ण स्थिति में सामग्री जोड़ना) मिश्रण कर रहे हैं।

या तो आप गोल आयतों को बनाने के लिए तालिका का उपयोग करके उच्च स्तरीय दृष्टिकोण तक चिपके रहते हैं। आप उन सीमाओं के साथ तालिकाओं को बना सकते हैं जिनमें सेल और टेबल ईवेंट का उपयोग करके गोलाकार कोनों हैं। जब आप document.add() का उपयोग करते हैं, तो iText सब कुछ पोजिशनिंग का ख्याल रखेगा (तालिका को विभाजित करने सहित, यदि यह पृष्ठ में फिट नहीं है)।

या तालिका को एक पूर्ण स्थिति में जोड़कर, आप निम्न-स्तरीय दृष्टिकोण तक चिपके रहते हैं, लेकिन ध्यान रखें कि यह पृष्ठ तालिका में फिट नहीं होने पर तालिका को विभाजित नहीं करेगा।

इस उदाहरण पर एक नज़र डालें: Java | | PDF

यह दिखाता है कि सेल ईवेंट और/या टेबल ईवेंट का उपयोग कर तालिकाओं के लिए गोलाकार सीमाएं कैसे बनाएं। कम जटिल नमूना कोड के लिए chapter 5 के अन्य उदाहरण देखें।

जैसा कि आप कैलेंडर उदाहरण में देख सकते हैं, तालिका table.WriteSelectedRows(...) विधि का उपयोग कर पूर्ण स्थिति में तालिका को जोड़ा जाता है। जैसा कि आप गोलाकार आयताकारों के निर्देशांक जानते हैं, आप अपनी तालिका को पूर्ण स्थिति में जोड़ने के लिए इस विधि का उपयोग कर सकते हैं।

0
private static void DemoTableSpacing() { 
    using (FileStream fs = new FileStream("SpacingTest.pdf", FileMode.Create)) { 

     Document doc = new Document(); 
     PdfWriter.GetInstance(doc, fs); 
     doc.Open(); 

     Paragraph paragraphTable1 = new Paragraph(); 
     paragraphTable1.SpacingAfter = 15f; 

     PdfPTable table = new PdfPTable(3); 
     PdfPCell cell = new PdfPCell(new Phrase("This is table 1")); 
     cell.Colspan = 3; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Col 1 Row 1"); 
     table.AddCell("Col 2 Row 1"); 
     table.AddCell("Col 3 Row 1"); 
     //table.AddCell("Col 1 Row 2"); 
     //table.AddCell("Col 2 Row 2"); 
     //table.AddCell("Col 3 Row 2"); 
     paragraphTable1.Add(table); 
     doc.Add(paragraphTable1); 

     Paragraph paragraphTable2 = new Paragraph(); 
     paragraphTable2.SpacingAfter = 10f; 

     table = new PdfPTable(3); 
     cell = new PdfPCell(new Phrase("This is table 2")); 
     cell.Colspan = 3; 
     cell.HorizontalAlignment = 1; 
     table.AddCell(cell); 
     table.AddCell("Col 1 Row 1"); 
     table.AddCell("Col 2 Row 1"); 
     table.AddCell("Col 3 Row 1"); 
     table.AddCell("Col 1 Row 2"); 
     table.AddCell("Col 2 Row 2"); 
     table.AddCell("Col 3 Row 2"); 
     paragraphTable2.Add(table); 
     doc.Add(paragraphTable2); 
     doc.Close(); 
    } 
} 

मैं उपयोग iTextSharp कड़ी में मेरी टेबल स्थिति लिए यह एक है: https://www.codeproject.com/Questions/351802/Its-possible-put-a-table-in-absolute-position-with

+0

आप तनाव है कि codeproject जवाब का केन्द्र विचार करने और अपने कोड के साथ एक 'SpacingAfter एक खाली पैरा जोड़ने के लिए है चाहते हो सकता है 'तालिका जोड़ने से पहले छोड़ने के लिए ऊंचाई से मेल खाने वाला मान। – mkl

+0

आपके सुझाव के लिए धन्यवाद, असल में मैं iTextSharp के लिए शुरुआती हूं और एएसपीनेट के बारे में सब कुछ हूं। मैंने इस द्वारा कोशिश की है और मैंने पहली मेज को बिना सीमा और खाली हेडर के किया है। इस तरह से मुझे अपनी परियोजना में मेरी आवश्यकता मिली। टिप्पणी के लिए एक बार धन्यवाद, मैं अगली बार में अपना जवाब सुधारूंगा। –