I have written a piece of code which uses the PdfSharp library. The instance of PdfSharp.Pdf.PdfDocument
created saves to disk as expected. The right content is displayed, but onto the wrong page settings.
The default page settings for PdfSharp are:
PdfSharp.PageSizes.A4
PdfSharp.PageOrientation.Portrait
My problem is that these settings seem to override the required settings.
I create the instance of PdfDocument
class and adds a new instance of PdfPage
class to its Pages collection property. Then, I setup the page like this:
PdfDocument.Pages[0].Size = PdfSharp.PageSizes.Letter
PdfDocument.Pages[0].Orientation = PdfSharp.PageOrientation.Landscape
Process.Start(myPdfFilename)
- then Acrobat Reader opens with my
document.I'm quite confused. I know of an option within Acrobat Reader that allows the user to change the page orientation without changing the text direction. No matter whether I check this option or not, still the wrong settings keep going.
Anyone has an idea? Thanks!
For some strange reason, PdfSharp seems not to behave the same with both the following:
Example 1 - It doesn't seem to associate the instance of PdfPage class to the PdfDocument even though the page settings are correct while calling and after having called the PdfDocument.Save() method.
var pdfDoc = new PdfDocument();
var pdfPage = pdfDoc.AddPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
pdfDoc.Save(filename);
Example 2 - The same here...
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add();
pdfDoc.Pages[0].Orientation = PdfSharp.PageOrientation.Landscape;
pdfDoc.Pages[0].Size = PdfSharp.PageSize.Letter;
pdfDoc.Pages[0].Rotate = 0;
pdfDoc.Save(filename);
Example 3 - This seems to have solved my problem
var pdfPage = new PdfPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);
Anyone has any idea of what am I missing here? I seem to do the same in either of these examples, as far as I'm concerned.
Solution is:
var pdfPage = new PdfPage();
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);
Set size first.
Thanks for any comments and/or answers!
I examined this issue. It seems you have to set "page.Size" before setting "page.Orientation" to landscape. This is a bug because the order shouldn't matter here.
Order matters - but the workaround is simple: swap 2 lines in Example 1 and you're done (BTW: no need to set Rotate to 0).
PDFsharp Forum:
http://forum.pdfsharp.net/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With