我正在使用带有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位置?
任何帮助都非常感激。
亚当
答案 0 :(得分:5)
要获得正确的并排流,请将图像/文本包装在Paragraph
对象中,使用Chunk
和Phrase
对象逐个添加它们。像这样的东西(对不起,我不做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);