首页 文章

如何在MigraDoc库中设置文档方向(适用于所有页面)?

提问于
浏览
6

我正在使用MigraDoc以编程方式生成包含文本,图像和表格的PDF文件 .

我需要将文档对象中的 Document Orientation (对于所有页面)设置为 Landscape .

所以我尝试了以下内容 .

document.DefaultPageSetup.Orientation = Orientation.Landscape;

但是我得到以下调试断言错误 .

---------------------------
Assertion Failed: Abort=Quit, Retry=Debug, Ignore=Continue
---------------------------

DefaultPageSetup must not be modified

如果我单击 Ignore ,它会通过, Orientation 确实是 Landscape .

但是,我想确保我以正确的方式这样做 .

所以问题是,如何使用MigraDoc库为 Document 中的所有页面设置文档方向?

这是代码的其余部分(因此它可以帮助您获取上下文)

using System.Runtime.Remoting.Messaging;
using MigraDoc.DocumentObjectModel;

namespace MyNamespace.PdfReports
{
    class Documents
    {
        public static Document CreateDocument()
        {
            // Create a new MigraDoc document
            Document document = new Document();
            document.Info.Title = "The Title";
            document.Info.Subject = "The Subject";
            document.Info.Author = "Shiva";
            document.DefaultPageSetup.Orientation = Orientation.Landscape;

非常感谢!
-Shiva

更新:

SOLUTION: 这是工作代码,基于下面的Thomas'答案(为了其他可能正在寻找此解决方案的人的利益) .

// Create a new MigraDoc document
Document document = new Document();
//...
//......
PageSetup pageSetup = document.DefaultPageSetup.Clone();
// set orientation
pageSetup.Orientation = Orientation.Landscape;
// ... set other page setting you want here...

1 回答

  • 3

    DefaultPageSetup.Clone() 分配给您所在部分的 PageFormat 并进行修改 .

    然后,您修改默认设置的副本,并且没有断言将失败 .

    使用您的方法,所有文档都将默认为横向 - 而不仅仅是您为其设置的文档 .

    这个答案仅适用于MigraDoc,因为只有MigraDoc使用 DefaultPageSetup .

    请参阅this post in the PDFsharp forum,其中 Clone() 用于创建 DefaultPageSetup 的副本:

相关问题