生成包含图像和文本的PDF

时间:2013-06-19 18:53:38

标签: asp.net pdf-generation itextsharp

我想使用来自我的ASP.NET Web窗体应用程序的iTextSharp生成一个pdf,该应用程序包含一个包含2列和需要的行数以及图像和文本的表。但是目前,我可以在一个单元格中添加图像或文本。下面是我所需格式的HTML标记示例:

<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();

1 个答案:

答案 0 :(得分: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();