PdfSharp – 在Acrobat中打开文档时,PDF页面设置错误

我编写了一段使用PdfSharp库的代码。 PdfSharp.Pdf.PdfDocument的实例已按预期保存到磁盘。 显示正确的内容,但显示错误的页面设置。

PdfSharp的默认页面设置为:

  1. PdfSharp.PageSizes.A4
  2. PdfSharp.PageOrientation.Portrait

我的问题是这些设置似乎覆盖了所需的设置。

我创建了PdfDocument类的实例,并在其Pages集合属性中添加了一个新的PdfPage类实例。 然后,我像这样设置页面:

  1. PdfDocument.Pages [0] .Size = PdfSharp.PageSizes.Letter
  2. PdfDocument.Pages [0] .Orientation = PdfSharp.PageOrientation.Landscape
  3. 我绘制字符串(这很好)
  4. 我将文档保存到磁盘(这很好)
  5. Process.Start(myPdfFilename) – 然后用我的文档打开Acrobat Reader。
  6. 页面设置为A4 – 纵向…

我很困惑。 我知道Acrobat Reader中有一个选项,允许用户在不改变文本方向的情况下更改页面方向。 无论我是否选中此选项,仍然会出现错误的设置。

有人有想法吗? 谢谢!

出于某些奇怪的原因,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); 

首先设置尺寸。

感谢您的任何意见和/或答案!

我检查了这个问题。 在将“page.Orientation”设置为landscape之前,您似乎必须设置“page.Size”。 这是一个错误,因为这里的顺序无关紧要。

订单很重要 – 但解决方法很简单:在示例1中交换2行并完成(BTW:无需将Rotate设置为0)。

PDFsharp论坛:
http://forum.pdfsharp.net/