【问题标题】:PDFsharp/MigraDoc - why is section.PageSetup.PageWidth = 0?PDFsharp/MigraDoc - 为什么 section.PageSetup.PageWidth = 0?
【发布时间】:2017-01-06 02:52:49
【问题描述】:

在下面的 C# 代码中,我尝试确定页面的宽度,以便我可以将具有 3 列的表格拉伸到页面的整个宽度(减去页边距)。最初,我认为我应该将每个表格列的宽度设置为页面宽度的 1/3。但是,我发现下面代码中的section.PageSetup.PageWidthsection.PageSetup.LeftMarginsection.PageSetup.RightMargin返回的值是0。

    Section section = document.AddSection();
    section.PageSetup.PageFormat = PageFormat.A4;
    section.PageSetup.Orientation = Orientation.Portrait;

    int sectionWidth = (int)Math.Ceiling(section.PageSetup.PageWidth -
                            section.PageSetup.LeftMargin -
                            section.PageSetup.RightMargin);

    int columnWidth = (int)Math.Ceiling(sectionWidth / 3);

我假设将页面格式设置为PageFormat.A4 并将方向设置为Orientation.Portrait 将相应地设置section.PageSetup.PageWidth 的值,并将边距的值设置为一些默认值。有人可以告诉我我做错了什么吗?我昨天才开始使用 MigraDoc。非常感谢。

【问题讨论】:

  • 这可能会对您有所帮助:stackoverflow.com/questions/15966672/…(标记的答案说包含的代码是 migradoc)。
  • 谢谢史蒂夫。是的,它有帮助。我知道我可以使用这个:PdfSharp.Drawing.XSize size = PdfSharp.PageSizeConverter.ToSize(PdfSharp.PageSize.A4) 来获取包括边距在内的整个页面的宽度。现在我必须找到一种方法来减去默认边距以获得页面的“可用宽度”。

标签: c# pdf pdf-generation pdfsharp migradoc


【解决方案1】:

您可以使用document.DefaultPageSetup查询默认边距。

MigraDoc 使用自制的可为空值(在 .NET 1.1 时代实现),未设置的值将返回 0,而不是实际使用的默认值。

另请参阅:
https://stackoverflow.com/a/22679890/1015447

【讨论】:

    【解决方案2】:

    这仍然发生在 PDFShapr.MigraDoc-wpf (1.50.5147) 我与 .Net Core 3.1 一起使用。我通过克隆到文档的默认页面设置部分来解决它:

    var section = this.Document.AddSection();
    section.PageSetup = this.Document.DefaultPageSetup.Clone(); 
    

    然后我使用该部分的页面设置来计算表的列相对于页面的与:

    var tbl = section.Headers.Primary.AddTable();
    var col1 = tbl.AddColumn(Unit.FromCentimeter(PageLineLength(section.PageSetup) * 0.75));    
    var col2 = tbl.AddColumn(Unit.FromCentimeter(PageLineLength(section.PageSetup) - col1.Width.Centimeter));
    

    其中PageLineLength

    PageLineLength(PageSetup pageSetup)
    {
            return pageSetup.PageWidth.Centimeter - pageSetup.LeftMargin.Centimeter - pageSetup.RightMargin.Centimeter;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多