9

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

PdfSharp の既定のページ設定は次のとおりです。

  1. PdfSharp.PageSizes.A4
  2. PdfSharp.PageOrientation.Portrait

私の問題は、これらの設定が必要な設定を上書きしているように見えることです。

クラスのインスタンスを作成し、クラスの新しいインスタンスをその Pages コレクション プロパティにPdfDocument追加します。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 のオプションを知っています。このオプションをオンにするかどうかに関係なく、間違った設定が続きます。

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

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 に答える