2013-06-19 3 views
0

Я хочу сгенерировать pdf-файл с помощью iTextSharp из моего приложения ASP.NET Web Forms, содержащего таблицу с двумя столбцами и столько строк, сколько требуется, и изображение и текст в них. Но в настоящее время я могу добавить изображение или текст не в одной ячейке. Ниже приведен пример разметки HTML моего желаемого формата:Сгенерировать PDF-файл, содержащий изображения и текст

<table align="center" style="border-spacing:20px;"> 
    <tr> 
     <td> 
      <label style="display:block;text-align:center;">Corvette</label> 
      <br /> 
      <img src="QrCodes/Ibrahim.jpg" /> 
     </td> 
     <td> 
      <label style="display:block;text-align:center;">Mercedes</label> 
      <br /> 
      <img src="QrCodes/Amazon.jpg" /> 
     </td> 
    </tr> 
</table> 

Как я могу создать этот формат из моего кода? Это может быть строка HTML или объект iTextSharp. Какой бы он ни работал. Любое предложение приветствуется.

Текущий код:

PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Create)); 
doc.Open(); 
PdfPTable table = new PdfPTable(2); 
System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(@item.ItemQrCode)); 
iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(image, ImageFormat.Jpeg); 
pdfImage.Alignment = iTextSharp.text.Image.UNDERLYING; 

Phrase phrase = new Phrase(item.ItemName); 
PdfPCell cellText = new PdfPCell(phrase); 
cellText.HorizontalAlignment = Element.ALIGN_CENTER; 
cellText.VerticalAlignment = Element.ALIGN_MIDDLE; 

PdfPCell cellImage = new PdfPCell(pdfImage); 
cellImage.HorizontalAlignment = Element.ALIGN_CENTER; 
cellImage.VerticalAlignment = Element.ALIGN_MIDDLE; 

table.AddCell(cellImage); 

doc.Add(table); 
doc.Close(); 

ответ

0

Поскольку были 2 колонки в главной таблице, когда я добавил клетки добавил он их бок о бок. Но мое решение состояло в том, чтобы принимать таблицы с 1 столбцом для каждой ячейки, а затем добавлять их в основную ячейку таблицы, чтобы получить текст, сопровождаемый изображением под ним. Код:

PdfWriter.GetInstance(doc, new FileStream(filePath, FileMode.Create)); 
doc.Open(); 
PdfPTable table = new PdfPTable(2); 

System.Drawing.Image image = System.Drawing.Image.FromFile(Server.MapPath(@item.ItemQrCode)); 
iTextSharp.text.Image pdfImage = iTextSharp.text.Image.GetInstance(image, ImageFormat.Jpeg); 

PdfPTable cellTable = new PdfPTable(1); //Table for each cell 

Phrase phrase = new Phrase(item.ItemName); 
PdfPCell cellText = new PdfPCell(phrase); 
cellText.HorizontalAlignment = Element.ALIGN_CENTER; 
cellText.VerticalAlignment = Element.ALIGN_MIDDLE; 

PdfPCell cellImage = new PdfPCell(pdfImage); 
cellImage.HorizontalAlignment = Element.ALIGN_CENTER; 
cellImage.VerticalAlignment = Element.ALIGN_MIDDLE; 

cellTable.AddCell(cellText); 
table.AddCell(cellImage); 

table.AddCell(cellTable); //Add each cells' table to main table cell 

doc.Add(table); 
doc.Close(); 
Смежные вопросы