PDFsharp & MigraDoc Foundation
https://forum.pdfsharp.net/

Page truncate for landscape orientation with trimmargins
https://forum.pdfsharp.net/viewtopic.php?f=2&t=2047
Page 1 of 1

Author:  shahdat85ict [ Fri Jun 08, 2012 6:21 am ]
Post subject:  Page truncate for landscape orientation with trimmargins

Hi

I am talking about PdfSharp. Portrait orientation works well with margin or without margin. But In case of landscape orientation, page truncate in right side once I set any margin using TrimMargins. I have tried same thing on sample code of pdfSharp and having same problem!!

Look pdf rendered well for following code :)
Code:
page = document.AddPage();
page.Size = PdfSharp.PageSize.A4;
page.Orientation = PageOrientation.Landscape;
gfx = XGraphics.FromPdfPage(page);
gfx.DrawString("A4 (landscape)", font,XBrushes.DarkRed, new XRect(0, 0, page.Width, page.Height),XStringFormats.Center);


But for following code pdf is not rendered well, truncate in right side :(
Code:
page = document.AddPage();
page.TrimMargins.Top = 5;
page.TrimMargins.Right = 5;
page.TrimMargins.Bottom = 5;
page.TrimMargins.Left = 5;
page.Size = PdfSharp.PageSize.A4;
page.Orientation = PageOrientation.Landscape;
gfx = XGraphics.FromPdfPage(page);
gfx.DrawString("A4 (landscape)", font,XBrushes.DarkRed, new XRect(0, 0, page.Width, page.Height),XStringFormats.Center);


Have any idea :?

Advance thanks

Author:  () => true [ Sat Jun 09, 2012 4:32 pm ]
Post subject:  Re: Page truncate for landscape orientation with trimmargins

Hi!

Could be a bug in PDFsharp.

As a workaround, do not set the orientation to Landscape, instead swap width and height when creating the page.
Code:
page = document.AddPage();
//page.Size = PdfSharp.PageSize.A4;
XSize size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);
page.MediaBox = new PdfRectangle(new XPoint(0, 0), new XPoint(size.Height, size.Width)); // Magic: swap width and height
//page.Orientation = PageOrientation.Landscape;

The default unit for margins is Points. To get e.g. millimetres instead, you can write:

Code:
page.TrimMargins.Top = XUnit.FromMillimeter(5);
page.TrimMargins.Right = XUnit.FromMillimeter(5);
page.TrimMargins.Bottom = XUnit.FromMillimeter(5);
page.TrimMargins.Left = XUnit.FromMillimeter(5);


See also:
http://stackoverflow.com/a/10962620/1015447

Author:  shahdat85ict [ Mon Jun 11, 2012 5:44 pm ]
Post subject:  Re: Page truncate for landscape orientation with trimmargins

Yes, this is a bug of PdfSharp

We can set the margins with orientation like bellow

Code:
page = document.AddPage();
//page.Size = PdfSharp.PageSize.A4;
XSize size = PageSizeConverter.ToSize(PdfSharp.PageSize.A4);
if(page.Orientation == PageOrientation.Landscape)
{
   page.Width  = size.Height;
   page.Height = size.Width;
}
else
{
   page.Width  = size.Width;
   page.Height = size.Height;
}

// default unit in points 1 inch = 72 points
page.TrimMargins.Top = 5;
page.TrimMargins.Right = 5;
page.TrimMargins.Bottom = 5;
page.TrimMargins.Left = 5;

Page 1 of 1 All times are UTC
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/