2012-06-08 21 views
3

我正在談論PdfSharp。縱向方向適用於邊距或無邊距。但是在橫向的情況下,一旦使用TrimMargins設置了任何邊距,頁面將在右側截斷。我對pdfSharp的示例代碼嘗試過同樣的事情,並且遇到同樣的問題!使用PdfSharp在頁面截取右側的橫向方向與trimmargins

看PDF渲染以及對下面的代碼

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); 

但對於下面的代碼的PDF渲染不很好,截斷在右側

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); 

有什麼想法? 感謝

回答

1

是的,這是PdfSharp

的錯誤

我們可以設置與方向邊距像波紋管

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; 
2

可能是PDFsharp的錯誤。

作爲一種變通方法,方向不設置爲橫向,而不是創建頁面時交換的寬度和高度。

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; 

邊距的默認單位是點數。 爲了得到例如而不是毫米,你可以寫:

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