在MigraDoc中重叠其他细胞的细胞内的图像

时间:2018-04-13 03:00:09

标签: c# pdf 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$");

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

1 个答案:

答案 0 :(得分:1)

当您为图像设置.WrapFormat.Style = WrapStyle.Through时,图像将被图层忽略,行的高度将不会适应图像。

如果表格有边框,那么您可能需要在表格后面添加图片,以便在桌面上绘制图片。

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

“发票”示例不使用表格中的图像,但使用了MergeDown
http://pdfsharp.net/wiki/Invoice-sample.ashx