How to Set Document Orientation (for All Pages) in MigraDoc Library?
Assign DefaultPageSetup.Clone()
to the PageFormat
of your section and modify that.
Then you modify a copy of the default settings and no assertion will fail.
With your approach, all documents would default to landscape - not just the document you set it for.
This answer applies to MigraDoc only as only MigraDoc uses DefaultPageSetup
.
See this post in the PDFsharp forum where Clone()
is used to create a copy of the DefaultPageSetup
:
![Shiva](https://i.stack.imgur.com/s8KPo.jpg?s=256&g=1)
Shiva
I'm the founder @ Stack Squad https://www.thestacksquad.com/ If you want to Live, Breath Sitecore, get in touch!
Updated on June 07, 2022Comments
-
Shiva about 2 years
I'm using MigraDoc to programatically generate a PDF file with text, images and tables.
I need to set
Document
Orientation (for all pages) in the document object toLandscape
.So I tried the following.
document.DefaultPageSetup.Orientation = Orientation.Landscape;
But I get the following debug assertion error.
--------------------------- Assertion Failed: Abort=Quit, Retry=Debug, Ignore=Continue --------------------------- DefaultPageSetup must not be modified
If I click Ignore, it goes through and the
Orientation
is indeedLandscape
.However, I want to make sure I am doing this the right way.
So the question is, how do I set the document orientation for all pages in a
Document
using the MigraDoc library?Here's the rest of the code (so it helps you get the context)
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;
Many thanks!
-ShivaUPDATE:
SOLUTION: Here's the working code, based on Thomas' answer below (for the benefit of others who maybe looking for this solution).
// 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...
-
Shiva over 10 yearsThanks Thomas! Based on your answer and the link, I fixed the code to clone the DefaultPageSetup and apply the setting on that. Updated my question with the code also.