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

Wil*_*ler 8 c# pdfsharp

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

PdfSharp的默认页面设置为:

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

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

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

  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中有一个选项,允许用户在不改变文本方向的情况下更改页面方向.无论我是否选中此选项,仍然会出现错误的设置.

有人有想法吗?谢谢!

Wil*_*ler 9

出于某些奇怪的原因,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);
Run Code Online (Sandbox Code Playgroud)

例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);
Run Code Online (Sandbox Code Playgroud)

例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);
Run Code Online (Sandbox Code Playgroud)

任何人都知道我在这里失踪了什么?就我而言,我似乎在这两个例子中也是这样做的.

解决方案是:

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);
Run Code Online (Sandbox Code Playgroud)

首先设置尺寸.

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


Je *_*not 7

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

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

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