如何设置MigraDoc的页面大小?

7

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

如何将文档的页面大小设置为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;

2
文档 = 文件,章节 = 页面组,等等 - Sinatr
1
MigraDoc很像Word:您有一个包含段落的部分文档。 - I liked the old Stack Overflow
是的,这就是我一直在寻找的。谢谢。 - Joe.wang
1个回答

17

A4是默认大小。

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

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

您不应该修改DefaultPageSetup,而应该使用Clone()。对于Clone()PageFormat无法正常工作,因为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";

要获取信件格式,您可以使用此代码重置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()非常有用。如果您明确设置了所有边距或不使用边距进行计算,则无需创建Clone。
如果需要Clone(),则可以使用此处展示的方法来设置页面大小。


谢谢。你的意思是 section.PageSetup.PageWidth = "21cm"; section.PageSetup.PageHeight = "29.7cm"; 吗?我可以吗? - Joe.wang
请问一个问题。我发现在表格和段落中,AddTab的行为不同。在表格中,AddTab会使内容向右对齐,就像CSS中的float:right一样。但是在段落中,它不会这样做,只是像普通的添加制表符一样。这是真的吗?请帮忙澄清一下。 - Joe.wang
AddTab() 就像在 Word 中按 Tab 键一样。其效果取决于您为段落设置的制表位。制表位可以是左对齐、右对齐、居中或十进制。评论不是提出新问题的正确位置。还请参阅此帖子:https://dev59.com/v3LYa4cB1Zd3GeqPZpcn#16775815。 - I liked the old Stack Overflow

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接