如何设置 MigraDoc 的页面大小?

How can set the page size of MigraDoc?

抱歉,我只是 PDFsharp 的初学者。

如何为文档设置 PageSize?比方说A4。如何设置?这是我的代码。谢谢

    Document document = new Document();

    // Add a section to the document
    Section section = document.AddSection();
    section.AddParagraph("dddddd");


    // Add a section to the document
    var table = section.AddTable();
    table.AddColumn("8cm");
    table.AddColumn("8cm");

    var row = table.AddRow();
    var paragraph = row.Cells[0].AddParagraph("Left text");
    paragraph.AddTab();
    paragraph.AddText("Right text");
    paragraph.Format.ClearAll();
    // TabStop at column width minus inner margins and borders:
    paragraph.Format.AddTabStop("27.7cm", TabAlignment.Right);
    row.Cells[1].AddParagraph("Second column");
    table.Borders.Width = 1;

A4 为默认尺寸。

每个部分都有一个 PageSetup 属性,您可以在其中设置页面大小、页边距等。

var section = document.LastSection;
section.PageSetup.PageFormat = PageFormat.A4;
section.PageSetup.TopMargin = "3cm";

您永远不应该修改 DefaultPageSetup,而是使用 Clone()PageFormat 不适用于 Clone(),因为 PageWidthPageHeight 设置为默认尺寸 A4。
要获取 Letter 格式,您可以使用此代码覆盖 PageWidthPageHeight:

var section = document.LastSection;
section.PageSetup = Document.DefaultPageSetup.Clone();
section.PageSetup.PageFormat = PageFormat.Letter; // Has no effect after Clone(), just for documentation purposes.
section.PageSetup.PageWidth = Unit.FromPoint(612);
section.PageSetup.PageHeight = Unit.FromPoint(792);
section.PageSetup.TopMargin = "3cm";

要获取 Letter 格式,您可以使用此代码重置 PageWidthPageHeight 以使 PageFormat 再次工作:

var section = document.LastSection;
section.PageSetup = Document.DefaultPageSetup.Clone();
section.PageSetup.PageWidth = Unit.Empty;
section.PageSetup.PageHeight = Unit.Empty;
section.PageSetup.PageFormat = PageFormat.Letter;
section.PageSetup.TopMargin = "3cm";

创建 Clone() 如果您的代码使用例如用于计算 table 宽度等的左右边距。如果您明确设置所有边距或不使用边距进行计算,则无需创建克隆。
如果您需要 Clone(),您可以使用此处显示的方法设置页面大小。