我说的是PdfSharp.纵向方向在有边距或没有边距的情况下都能很好地工作.但是,如果是横向放置,一旦使用TrimMargins设置了任何边距,页面就会在右侧截断.我已经在pdfSharp的示例代码上尝试过同样的事情,并且遇到了同样的问题!
看起来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);
有什么主意吗
谢谢
解决方法:
可能是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);