页面在右侧截断,以使用 PdfSharp 进行横向处理,并带有边距
本文关键字:横向 处理 PdfSharp | 更新日期: 2023-09-27 18:36:38
我说的是PdfSharp。纵向适用于边距或不带边距。但是在横向的情况下,一旦我使用 TrimMargin 设置任何边距,页面就会在右侧截断。我在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的一个错误
我们可以像波纹管一样设置边距
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;
我也有同样的问题 - 非常令人沮丧。对于任何顶级解决方案不起作用的人:试试这个!
由于 PDFSharp 只能在纵向页面上正确处理图形和转换,因此我在项目中的解决方法是在输入时将横向页面转换为带有.page.Rotate = 0
纵向。请记住,这些文件现在是横向的,因此在应用图形和变换时请记住这一点。然后在保存文件之前,我使用 .page.Rotate = 90
将页面转换回横向。对我来说工作得很好!祝你们好运。