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

关于c# - 使用 PdfSharp 在右侧截断页面以使用修剪边距进行横向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10948731/

10-13 08:20