编程语言
首页 > 编程语言> > c#-使用PdfSharp在页面的右侧截断页面以横向修剪

c#-使用PdfSharp在页面的右侧截断页面以横向修剪

作者:互联网

我说的是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);

标签:pdfsharp,pdf,asp-net,c
来源: https://codeday.me/bug/20191201/2079250.html