【问题标题】:PdfSharp - Wrong PDF page settings when document is opened in AcrobatPdfSharp - 在 Acrobat 中打开文档时 PDF 页面设置错误
【发布时间】:2009-08-24 17:39:10
【问题描述】:

我编写了一段使用 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 中的一个选项允许用户在不更改文本方向的情况下更改页面方向。不管我是否勾选这个选项,错误的设置仍然会继续。

有人有想法吗?谢谢!

【问题讨论】:

    标签: c# pdfsharp


    【解决方案1】:

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

    先设置大小。

    感谢任何 cmets 和/或答案!

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2016-08-15
        • 1970-01-01
        • 2012-05-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-18
        • 2023-02-08
        • 2011-05-07
        相关资源
        最近更新 更多