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

Ada*_*dam 2 vb.net asp.net-mvc 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))
Run Code Online (Sandbox Code Playgroud)

我试过了

I.Alignment = Image.TEXTWRAP Or Image.ALIGN_LEFT Or Image.ALIGN_MIDDLE
Run Code Online (Sandbox Code Playgroud)

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

任何帮助非常感谢.

亚当

kuu*_*nbo 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);
Run Code Online (Sandbox Code Playgroud)

编辑:在图像之间添加空格的一种方法.将与图像工作; 如果您使用混合文本/图像尝试此操作,它们将重叠:

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);
Run Code Online (Sandbox Code Playgroud)

请参阅Chunk文档.