2010-11-04 7 views
23

मैं यह समझने की कोशिश कर रहा हूं कि मध्य में दिखाने के लिए पीडीएफपीसेल के अंदर अपना टेक्स्ट कैसे प्राप्त करें। मैंने कई अलग-अलग विकल्पों की कोशिश की है, जैसे:iTextsharp, PdfPCell.VerticalAlignment और PdfPCell.HorizontalAlignment

 
myCell.VerticalAlignment = Element.ALIGN_MIDDLE; 
myCell.VerticalAlignment = PdfPCell.ALIGN_MIDDLE; 
myCell.VerticalAlignment = Rectangle.ALIGN_MIDDLE; 

इनमें से कोई भी मेरे लिए काम नहीं करता है। VerticalAlignment किसी पूर्णांक लेता है, तो मैं एक पाश बनाने के लिए, अगर मैं सही संख्या मिल सकता है देखने के लिए कोशिश की, लेकिन सब कुछ नीचे बाएं संरेखित हो ..

Document myDocument = new Document(PageSize.A4); 

    PdfWriter myPdfWriter = PdfWriter.GetInstance(myDocument, new FileStream(strPDFFilePath, FileMode.Create)); 
    myDocument.Open(); 

    myDocument.NewPage(); 

    PdfContentByte myPdfContentByte = myPdfWriter.DirectContent; 

    PdfPCell myCell; 
    Paragraph myParagraph; 

    PdfPTable myTable = new PdfPTable(4); 
    myTable.WidthPercentage = 100; 
    myTable.SetWidths(new int[4] { 25, 25, 25, 25 }); 

    myTable.DefaultCell.BorderWidth = 1; 
    myTable.DefaultCell.BorderColor = BaseColor.RED;     

    for (int i = -100; i < 100; i++) 
    { 
     myParagraph = new Paragraph(String.Format("Alignment: {0}", i)); 
     myParagraph.Font.SetFamily("Verdana"); 
     myParagraph.Font.SetColor(72, 72, 72); 
     myParagraph.Font.Size = 11; 

     myCell = new PdfPCell(); 
     myCell.AddElement(myParagraph); 
     myCell.HorizontalAlignment = i; 
     myCell.VerticalAlignment = i;      
     myTable.AddCell(myCell); 
    } 

    myDocument.Add(myTable); 
    myDocument.Add(new Chunk(String.Empty)); 
    myDocument.Close(); 

उत्तर

32

मुझे लगता है कि बुनियादी समस्या का उसका वह यह है कि आप iTextSharp Paragraph ऑब्जेक्ट्स में टेक्स्ट जोड़ रहे हैं और फिर PdfPCell ऑब्जेक्ट का उपयोग करके इस टेक्स्ट के संरेखण को सेट करने का प्रयास कर रहे हैं। मुझे यकीन नहीं है कि PdfPCell.VerticalAlignment संपत्ति केवल PdfPCell के टेक्स्ट के लिए है, या के अंदर Paragraph ऑब्जेक्ट को संरेखित करने पर आपके परीक्षण में कोई प्रभाव नहीं पड़ता है।

आप myCell.HorizontalAlignment और myCell.VerticalAlignment को अपने for लूप में इंडेक्स मान पर भी सेट कर रहे हैं। मुझे लगता है कि आप i के 1 इंस्ट्रेड का उपयोग करना चाहते थे।

वैसे भी, एक पीडीएफपीसेल की HorizontalAlignment और VerticalAlignment गुणों को स्थापित करने के बावजूद काम करते हैं। नीचे एक छोटी सी विधि है जो इसे प्रदर्शित करती है। मैंने जो कुछ करने की कोशिश कर रहे थे उसके आधार पर मैंने इसे बहुत कम लिखा है; यदि आप जो कुछ करने की कोशिश कर रहे हैं उसके लिए पर्याप्त है, तो आप इसे अपने प्रोजेक्ट में शुरुआती बिंदु के रूप में उपयोग कर सकते हैं।

private void TestTableCreation() { 
    using (FileStream fs = new FileStream("TableTest.pdf", FileMode.Create)) { 
     Document doc = new Document(PageSize.A4); 
     PdfWriter.GetInstance(doc, fs); 
     doc.Open(); 

     PdfPTable table = new PdfPTable(4); 

     for (int i = -100; i < 100; i++) { 
      PdfPCell cell = new PdfPCell(new Phrase(String.Format("Alignment: {0}", i))); 
      // Give our rows some height so we can see test vertical alignment. 
      cell.FixedHeight = 30.0f; 

      // ** Try it ** 
      //cell.HorizontalAlignment = Element.ALIGN_LEFT; 
      //cell.HorizontalAlignment = Element.ALIGN_CENTER; 
      cell.HorizontalAlignment = Element.ALIGN_RIGHT; 

      cell.VerticalAlignment = Element.ALIGN_TOP; 
      //cell.VerticalAlignment = Element.ALIGN_MIDDLE; 
      //cell.VerticalAlignment = Element.ALIGN_BOTTOM; 

      table.AddCell(cell); 
     } 

     doc.Add(table); 
     doc.Close(); 
    } 
} 
+2

धन्यवाद, यह बेहतर काम किया जब मैं अनुच्छेद के बजाय वाक्यांश का उपयोग करने के लिए शुरू कर दिया – Jimmy

0

दिया कोड का उपयोग करें, मैं आशा है कि मैं जो लोग मध्य और शीर्ष संरेखण संरक्षित शून्य Page_Load (वस्तु प्रेषक, EventArgs ई) { प्राप्य में एक सेल में एक पाठ प्रिंट करना चाहते हैं के लिए सबसे अधिक उपयोगी होगा(); }

void gettable() 
    { 
     using (FileStream fs = new FileStream(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), "Vedic-Chart-Life-Report.pdf"), FileMode.Create, FileAccess.Write, FileShare.Read)) 
     { 

      Document doc = new Document(PageSize.LETTER); 
      PdfWriter writer = PdfWriter.GetInstance(doc, fs); 
      doc.Open(); 
      doc.NewPage(); 

      BaseFont bf = BaseFont.CreateFont("C:/WINDOWS/Fonts/krdv010.TTF", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); 
      Font f = new Font(bf, 16, Font.BOLD); 

      PdfContentByte cb = writer.DirectContent; 

      cb.MoveTo(0, doc.PageSize.Height - 20); 
      cb.LineTo(doc.PageSize.Width, doc.PageSize.Height - 20); 
      cb.Stroke(); 
      cb.ClosePathStroke(); 

      PdfPTable table = new PdfPTable(1); 
      PdfPCell cell = new PdfPCell(new Phrase("eaxynks'k foospu", f)); 

      // Give our rows some height so we can see test vertical alignment. 
      cell.FixedHeight = 15f; 
      cell.HorizontalAlignment = 1; 
      cell.VerticalAlignment = Element.ALIGN_TOP; 

      table.AddCell(cell); 
      doc.Add(table); 

      //cb.RoundRectangle(10f, 550f, 592f, 200f, 20f); 
      //cb.Stroke(); 

      //doc.Add(new Phrase("eaxynks'k foospu", f)); 

      doc.Close(); 
     } 

    }