Изображение внутри ячейки, перекрывающее другие ячейки в MigraDoc

Я хочу поместить изображение в ячейку таблицы в MigraDoc, но в итоге изображение растягивается на всю строку. Часть упрощенного кода выглядит так:

table = sec.AddTable();
table.Borders.Width = 0.1; //only for visualization

column = table.AddColumn("6cm");
column = table.AddColumn("7.5cm");
column = table.AddColumn("2.5cm");

row = table.AddRow();
row[0].AddParagraph("title");
row[1].AddImage("C:\\sample.jpg").Width = "3cm";
row = table.AddRow();
row[0].AddParagraph("   - some text");
row = table.AddRow();
row[0].AddParagraph("   - some text");
row = table.AddRow();
row[0].AddParagraph("   - some text");
row = table.AddRow();
row[2].AddParagraph("0.00$");

На первом изображении ниже показан результат, а на втором — желаемый эффект.введите здесь описание изображения


person user2638817    schedule 13.04.2018    source источник


Ответы (1)


Когда вы устанавливаете .WrapFormat.Style = WrapStyle.Through для изображения, то изображение будет игнорироваться компоновщиком, и высота строки не будет адаптирована к изображению.

Если у таблицы есть границы, возможно, вам придется добавить изображение после таблицы, чтобы оно отображалось поверх таблицы.

Простой альтернативой может быть использование .MergeDown для ячейки таблицы с изображением. Это похоже на RowSpan в HTML. В этом случае таблица будет увеличиваться, чтобы соответствовать изображению, поэтому вы не сможете получить эффект второго изображения (изображение простирается ниже таблицы).
Это позволяет избежать сложностей, связанных с WrapStyle.Through, если вам приходится иметь дело со многими изображений разного размера и должны давать четкие разрывы страниц, если таблица не помещается на одной странице.

Образец Invoice не использует изображения в таблицах, но использует MergeDown:
http://pdfsharp.net/wiki/Invoice-sample.ashx

person I liked the old Stack Overflow    schedule 13.04.2018