Оберните текст вокруг изображения в ячейке с помощью iText 7

У меня есть 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.

Любая помощь будет оценена по достоинству.


person mariscal47    schedule 10.10.2016    source источник
comment
Плавающие изображения в настоящее время не поддерживаются в iText7, но это планируется.   -  person Alexey Subach    schedule 24.03.2017


Ответы (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);

Вывод будет выглядеть следующим образом:

введите здесь описание изображения

person Alexey Subach    schedule 28.04.2017