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

时间:2009-08-24 17:39:10

标签: c# pdfsharp

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

PdfSharp的默认页面设置为:

  1. PdfSharp.PageSizes.A4
  2. PdfSharp.PageOrientation.Portrait
  3. 我的问题是这些设置似乎覆盖了所需的设置。

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

      有人有想法吗?谢谢!

2 个答案:

答案 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/