我使用MigraDoc以编程方式生成包含文本,图片和表格的PDF文件。
我需要将文档对象中的Document
方向(对于所有页面)设置为Landscape
。
所以我尝试了以下内容。
document.DefaultPageSetup.Orientation = Orientation.Landscape;
但是我得到以下调试断言错误。
---------------------------
Assertion Failed: Abort=Quit, Retry=Debug, Ignore=Continue
---------------------------
DefaultPageSetup must not be modified
如果我点击忽略,则会完成,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
解决方案:这是基于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...
答案 0 :(得分:3)
将DefaultPageSetup.Clone()
分配到您所在部分的PageFormat
并修改该内容。
然后修改默认设置的副本,不会断言。
使用您的方法,所有文档都将默认为横向 - 而不仅仅是您为其设置的文档。
此答案仅适用于 MigraDoc ,因为只有 MigraDoc 使用DefaultPageSetup
。
请参阅this post in the PDFsharp forum其中Clone()
用于创建DefaultPageSetup
的副本: