2009-08-24 8 views
5

PdfSharpライブラリを使用するコードを書いています。作成されたPdfSharp.Pdf.PdfDocumentのインスタンスは、期待どおりにディスクに保存します。正しいコンテンツが表示されますが、間違ったページ設定に表示されます。 PdfSharpためPdfSharp - Acrobatで文書を開くときのPDFのページ設定が間違っています

デフォルトページの設定は次のとおりです。

  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. Iその後、Acrobat Readerが私の 文書が開きます - 私は(これは正常に動作します)
  4. Process.Start(myPdfFilename)をディスクに文書を保存(これは正常に動作します)
  5. 文字列を描画します。私はかなり混乱している肖像画...

から

  • ページの設定はA4です。私はAcrobat Readerの中で、ユーザーがテキストの方向を変えずにページの向きを変更できるオプションを知っています。私がこのオプションをチェックするかどうかに関係なく、間違った設定がそのまま続く。

    誰でもアイデアはありますか?ありがとう!

  • +0

    おかげPJP編集しながら、私はそれをこのように書きましたが、それはbizarly表示され、私はなぜ知らない –

    答えて

    7

    いくつかの奇妙な理由で、PdfSharpは次の両方で同じように動作していないようだ。

    例1 - ページが正しく設定されているにもかかわらずPdfDocumentにPdfPageクラスのインスタンスを関連付けていないようです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

    それ。ページの向きの設定を2回指定する必要があるようですが、それ以外の場合は有効ではありません。 –

    +0

    orientaを設定すると気付きましたサイズの前には、オリエンテーションがリセットされたようなものです。しかし、オリエンテーションの前にサイズを設定すると、よりうまくいくように見えます。このすべてを非常に混乱させる... –

    6

    この問題を調べました。 "ページを設定する必要があるようです。サイズ "を設定する前に" page.Orientation "を設定してください。

    問題がありますが、回避策は簡単です。例1では2行をスワップするだけです(ところで:0まで回転を設定する必要はありません)

    PDFsharpフォーラム:。!
    http://forum.pdfsharp.net/

    +0

    あなたの答えをありがとう! 別のプログラマーが来るまで私たちの回避策が良いことを保証するのは必ずしも明らかではありません。ありがとうございました! –

    +0

    また、PDFSharpのフォーラムURL –

    関連する問題