【问题标题】:Image inside a cell overlapping other cells in MigraDoc单元格内的图像与 MigraDoc 中的其他单元格重叠
【发布时间】:2018-04-13 03:00:09
【问题描述】:

我想在 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$");

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

【问题讨论】:

    标签: c# pdf migradoc


    【解决方案1】:

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

    如果表格有边框,那么您可能需要在表格之后添加图像才能将其绘制在表格顶部。

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多