MigraDoc 中与其他单元格重叠的单元格内的图像

Image inside a cell overlapping other cells in 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$");

下面的第一张图片显示了结果,第二张图片显示了所需的效果。

当您为图像设置 .WrapFormat.Style = WrapStyle.Through 时,布局器将忽略图像,并且行的高度将不会适应图像。

如果 table 有边框,那么您可能需要在 table 之后添加图像,以将其绘制在 table 之上。

一个简单的替代方法是将 .MergeDown 用于带有图像的 table 单元格。这就像 HTML 中的 RowSpan。在这种情况下,table 将增长以适应图像,因此您无法获得第二张图像的效果(图像延伸到 table 下方)。
如果您必须处理许多不同的图像大小,这可以避免 WrapStyle.Through 带来的复杂性,并且如果 table 不适合单个页面,应该给您干净的分页符。

发票示例在 table 秒内未使用图像,但使用了 MergeDown:
http://pdfsharp.net/wiki/Invoice-sample.ashx