使用 PdfSharp 在右侧截断页面以实现横向并带有修剪边距

2023-11-25

我说的是 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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PdfSharp 在右侧截断页面以实现横向并带有修剪边距 的相关文章

随机推荐