2009-08-24 41 views
5

我寫了一段使用PdfSharp庫的代碼。按預期方式創建的PdfSharp.Pdf.PdfDocument實例保存到磁盤。顯示正確的內容,但顯示錯誤的頁面設置。PdfSharp - 在Acrobat中打開文檔時出現錯誤的PDF頁面設置

爲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中有一個選項,它允許用戶在不改變文本方向的情況下更改頁面方向。不管我是否檢查這個選項,仍然錯誤的設置繼續。

任何人有想法?謝謝!

+0

謝謝PJP我之所以如此,同時編輯,但它bizarly顯示,我不知道爲什麼 – 2009-08-24 17:49:37

回答

7

一些奇怪的原因,PdfSharp似乎沒有表現與同以下兩個:

例1 - 它似乎並沒有PdfPage類的實例,即使頁面設置是正確關聯到PdfDocument同時調用並調用了PdfDocument.Save()方法之後。

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); 

集大小第一。

感謝您的任何意見和/或答案!

+0

它。似乎我必須指定兩次頁面方向設置,否則它是無效的... – 2009-08-24 19:17:28

+0

我注意到,如果我設置東方大小之前,它就像方向被重置。但是,當我在定位之前設置尺寸時,看起來效果更好。非常困惑這一切...... – 2009-08-24 19:23:06

6

我檢查了這個問題。 看來你必須設置「頁面。尺碼page.Orientation‘景觀」的設置之前’ 這是一個錯誤,因爲該命令不應該在這裏不管

秩序問題 - 但解決方法很簡單:互換兩行例1中,即可大功告成(順便說一句:無需旋轉設置爲0)

PDFsharp論壇:!
http://forum.pdfsharp.net/

+0

非常感謝你的回答! 它並不總是顯而易見的,以確保我們的解決方法是很好的,直到另一個程序員進來,這對我很有幫助。謝謝! – 2009-08-25 12:33:03

+0

並且也感謝PDFSharp的論壇URL – 2009-08-25 12:39:41

相關問題