我编写了一段使用PdfSharp库的代码。 PdfSharp.Pdf.PdfDocument的实例已按预期保存到磁盘。显示正确的内容,但显示在错误的页面设置上。
PdfSharp的默认页面设置为:
我的问题是这些设置似乎覆盖了所需的设置。
我创建了PdfDocument类的实例,并在其Pages集合属性中添加了一个新的PdfPage类实例。然后,我像这样设置页面:
我很困惑。我知道Acrobat Reader中有一个选项,允许用户在不改变文本方向的情况下更改页面方向。无论我是否选中此选项,仍然会出现错误的设置。
有人有想法吗?谢谢!
答案 0 :(得分:8)
出于某种奇怪的原因,PdfSharp似乎与以下两种情况不同:
示例1 - 即使在调用和调用PdfDocument.Save()方法之后页面设置正确,它似乎也没有将PdfPage类的实例与PdfDocument相关联。
var pdfDoc = new PdfDocument();
var pdfPage = pdfDoc.AddPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
pdfDoc.Save(filename);
示例2 - 这里也一样......
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add();
pdfDoc.Pages[0].Orientation = PdfSharp.PageOrientation.Landscape;
pdfDoc.Pages[0].Size = PdfSharp.PageSize.Letter;
pdfDoc.Pages[0].Rotate = 0;
pdfDoc.Save(filename);
示例3 - 这似乎解决了我的问题
var pdfPage = new PdfPage();
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);
任何人都知道我在这里失踪了什么?就我而言,我似乎在这两个例子中也是这样做的。
解决方案是:
var pdfPage = new PdfPage();
pdfPage.Size = PdfSharp.PageSize.Letter;
pdfPage.Orientation = PdfSharp.PageOrientation.Landscape;
pdfPage.Rotate = 0;
var pdfDoc = new PdfDocument();
pdfDoc.Pages.Add(pdfPage);
pdfDoc.Save(filename);
先设置尺寸。
感谢您提出任何意见和/或答案!
答案 1 :(得分:6)
我检查了这个问题。 在将“page.Orientation”设置为landscape之前,您似乎必须设置“page.Size”。 这是一个错误,因为这里的顺序无关紧要。
订单很重要 - 但解决方法很简单:在示例1中交换2行并完成(BTW:无需将Rotate设置为0)。
PDFsharp论坛:
http://forum.pdfsharp.net/