9

我写了一段使用 PdfSharp 库的代码。created的实例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 中的一个选项允许用户在不更改文本方向的情况下更改页面方向。无论我是否选中此选项,错误的设置仍然会继续。

有人有想法吗?谢谢!

4

2 回答 2

11

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

先定大小。

感谢您的任何评论和/或答案!

于 2009-08-24T19:02:41.537 回答
7

我检查了这个问题。看来您必须在将“page.Orientation”设置为横向之前设置“page.Size”。这是一个错误,因为这里的顺序不重要。

顺序很重要 - 但解决方法很简单:在示例 1 中交换 2 行就完成了(顺便说一句:无需将 Rotate 设置为 0)。

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

于 2009-08-25T09:03:52.537 回答