2015-07-11 21 views
5

I am Generatng Barcode. Ora voglio inserire il codice studente sotto l'etichetta del codice a barre. Come posso fare questo? Il mio codice èCome posso aggiungere due righe in una singola cella pdf?

foreach (GridViewRow row in grdBarcode.Rows) 
{ 
    DataList dl = (DataList)row.FindControl("datalistBarcode"); 
    PdfContentByte cb = new PdfContentByte(writer); 
    PdfPTable BarCodeTable = new PdfPTable(6); 
    BarCodeTable.SetTotalWidth(new float[] { 100,10,100,10,100,10 }); 
    BarCodeTable.DefaultCell.Border = PdfPCell.NO_BORDER; 
    Barcode128 code128 = new Barcode128(); 
    code128.CodeType = Barcode.CODE128_UCC; 
    foreach (DataListItem dli in dl.Items) 
    { 
     String barcodename= ((Label)dli.FindControl("lblBarCode")).Text; 
     string studentcode= ((Label)dli.FindControl("lblStudCode")).Text; 
     code128.Code = "*" + productID1 + "*"; 

     iTextSharp.text.Image image128 = code128.CreateImageWithBarcode(cb, null, null); 
     BarCodeTable.AddCell(image128); 
     BarCodeTable.AddCell("");   
    } 
doc.Add(BarCodeTable); 

la mia uscita è presente enter image description here

voglio portare il codice studente anche sotto il codice a barre. Per favore mostrami un modo per raggiungerlo

Oppure fammi sapere come passare più di un parametro throgh funzione pdftable.Addcell() .. !!

risposta

2

Si sta aggiungendo l'oggetto Image direttamente a a PdfPCell piace questo:

iTextSharp.text.Image image128 = code128.CreateImageWithBarcode(cb, null, null); 
BarCodeTable.AddCell(image128); 

La seconda linea è una scorciatoia per qualcosa che assomiglia a questo:

PdfPCell cell = new PdfPCell(); 
cell.SetImage(image128); 
BarCodeTable.AddCEll(cell); 

Questo cell contiene nulla di più di un'immagine. Non c'è spazio per il testo.

Se si desidera combinare un'immagine e il testo, è necessario qualcosa di simile:

PdfPCell cell = new PdfPCell(); 
cell.AddElement(image128); 
Paragraph p = new Paragraph("Student name"); 
p.Alignment = Element.ALIGN_CENTER; 
cell.AddElement(p); 
BarCodeTable.AddCEll(cell); 
+0

Ancora una volta si è salvato me..Thaaankz un caro looooot :) –

0

provare questo

var p = new Paragraph(); 
p.Add("First line text\n"); 
p.Add(" Second line text\n"); 
p.Add(" Third line text\n"); 
p.Add("Fourth line text\n"); 
myTable.AddCell(p); 

Si potrebbe anche complicarsi e utilizzare un sub-tavolo se avete bisogno di un maggiore controllo:

var subTable = new PdfPTable(new float[] { 10, 100 });       
subTable.AddCell(new PdfPCell(new Phrase("First line text")) { Colspan = 2, Border = 0 }); 
subTable.AddCell(new PdfPCell() { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Second line text")) { Border = 0 }); 
subTable.AddCell(new PdfPCell() { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Third line text")) { Border = 0 }); 
subTable.AddCell(new PdfPCell(new Phrase("Fourth line text")) { Colspan = 2, Border = 0 }); 
myTable.AddCell(subTable); 

http://www.mikesdotnetting.com/article/86/itextsharp-introducing-tables