使用 iText 7 将文本环绕在单元格中的图像周围

Posted

技术标签:

【中文标题】使用 iText 7 将文本环绕在单元格中的图像周围【英文标题】:Wrap text around image in cell using iText 7 【发布时间】:2017-02-19 00:24:15 【问题描述】:

我有一个带有表格的 PDF 文档。代码如下:

PdfWriter _writer = new PdfWriter(@"C:\output.pdf");
PdfDocument _document = new PdfDocument(_writer);
Document MyDocument = new Document(_document, PageSize.A4);

Table MyTable = new Table(new float[]  1, 4 );
MyTable.SetWidthPercent(100);
MyTable.AddHeaderCell(new Cell().Add(new Paragraph("ID")));
MyTable.AddHeaderCell(new Cell().Add(new Paragraph("Description")));

MyTable.AddCell(new Cell().Add(new Paragraph("1")));
Cell descCell = new Cell();
descCell.Add(IMG); // iText.Layout.Element.Image
descCell.Add(new Paragraph("This is the description."));
MyTable.AddCell(descCell);

MyDocument.Add(MyTable);
MyDocument.Close();

其实输出是这样的:

我想要实现的是:

我已经阅读了 iText 5 的几个示例,并且都指向使用此属性:

image.setAlignment(Image.LEFT | Image.TEXTWRAP);

问题在于它似乎不适用于 iText 7。

任何帮助将不胜感激。

【问题讨论】:

浮动图像目前在 iText7 中不受支持,但在路线图上。 【参考方案1】:

浮动元素功能已在 7.0.3-SNAPSHOT 中实现,并且可能会在 7.0.3 版本中实现。

为了使文本环绕单元格中的图像,您需要指定图像是浮动元素,就像在 html 中一样。为此,请使用

Image img = ...
img.setProperty(Property.FLOAT, FloatPropertyValue.LEFT);

然后,像往常一样通过添加图像和文本来构造一个单元格:

table.addCell(new Cell().add(img).add(textStr);

输出如下所示:

【讨论】:

以上是关于使用 iText 7 将文本环绕在单元格中的图像周围的主要内容,如果未能解决你的问题,请参考以下文章

使用 Parse 将缩略图图像加载到表格单元格中的问题

引导表单元格中的图像不会居中对齐

在iOS中选择单元格时如何以编程方式更改原型单元格中的标签文本颜色和图像

如何垂直对齐表格单元格中的图像和文本?

真的没有办法在 flexbox 中的图像周围环绕文本吗?

图像在表格视图单元格中下载后调整大小