使用itextsharp将多个图像彼此相邻放在pdfcell中

时间:2011-12-13 07:14:43

标签: asp.net-mvc vb.net itext

我正在使用带有aspmvc项目的itextsharp来创建某些页面的PDF版本。我有一个非常基本的解析器,它采用简单的html(加上一些单独提供的样式信息)并创建一个pdf。当我的解析器装入一个表时,它会循环遍历行然后是单元格,为每个单元格创建一个PdfPCell。然后它循环遍历单元的子元素,将它们添加到PdfPCell。这是非常基本的,但到目前为止它对我有用。

问题是我现在有一个表,其中一列包含许多图标,表示该行的不同状态。当这些图像被添加后,在pdf中一个在另一个上面,而不是彼此相邻。

我用

创建图像
Dim I As iTextSharp.text.Image = Image.GetInstance(HttpContext.Current.Server.MapPath(El.Attributes("src").InnerText))

我试过了

I.Alignment = Image.TEXTWRAP Or Image.ALIGN_LEFT Or Image.ALIGN_MIDDLE

然后添加一个包含空格的文本块,但它没有帮助。我看到的唯一建议是使用I.SetAbsolutePosition()。我宁愿避免绝对的位置,但我准备尝试 - 除了我无法弄清楚如何找到当前使用的X位置?

任何帮助都非常感激。

亚当

1 个答案:

答案 0 :(得分:5)

要获得正确的并排流,请将图像/文本包装在Paragraph对象中,使用ChunkPhrase对象逐个添加它们。像这样的东西(对不起,我不做VB):

PdfPTable table = new PdfPTable(2);
PdfPCell cell = new PdfPCell();
Paragraph p = new Paragraph();
p.Add(new Phrase("Test "));
p.Add(new Chunk(image, 0, 0));
p.Add(new Phrase(" more text "));
p.Add(new Chunk(image, 0, 0));
p.Add(new Chunk(image, 0, 0));
p.Add(new Phrase(" end."));
cell.AddElement(p);
table.AddCell(cell);
table.AddCell(new PdfPCell(new Phrase("test 2")));
document.Add(table);

编辑:在图片之间添加空格的一种方法。将处理图片;如果您尝试使用混合文本/图像,它们将重叠:

PdfPTable table = new PdfPTable(2);
PdfPCell cell = new PdfPCell();
Paragraph p = new Paragraph();
float offset = 20;
for (int i = 0; i < 4; ++i) {
  p.Add(new Chunk(image, offset * i, 0));
}
cell.AddElement(p);
table.AddCell(cell);
table.AddCell(new PdfPCell(new Phrase("cell 2")));
document.Add(table);

请参阅Chunk documentation