web-dev-qa-db-ja.com

PDFsharp PDFファイルを編集する

環境-PDFsharpライブラリ、Visual Studio 2012および言語としてのC#。

私は。。をしようとしています:

  1. 1ページでTest1.pdf(幅= 17インチ、高さ– 11インチ)を読み取ります
  2. それにテキストを追加します
  3. 別のファイル(Test2.pdf)として保存します。

私は以下のすべてを行うことができます。しかし、ファイルTest2.pdfを開くと、ページのサイズがWidth = 11インチ、Height – 11インチに縮小されています。これらのPDF使用しているファイルは、インターネットからダウンロードした製品仕様書です。これは特定の種類のファイルでのみ発生していると思います。これらのファイルを区別する方法がわかりません。

以下のコード:

//File dimentions - Width = 17 inches, Height - 11 inches (Tabloid Format)
PdfDocument pdfDocument = PdfReader.Open(@"D:\Test1.pdf", PdfDocumentOpenMode.Modify);

PdfPage page = pdfDocument.Pages[0];
XGraphics gfx = XGraphics.FromPdfPage(page);
XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic);
gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);

//When the file is saved dimentions change to - Width = 11 inches, Height - 11 inches
pdfDocument.Save(@"D:\Test2.pdf");

ここにファイルをアップロードしました Test1.pdf

================================================== ================================

PDFsharpチームによって提案されたように、コードは次のようになります。

PdfDocument PDFDoc = PdfReader.Open(@"D:\Test1.pdf", PdfDocumentOpenMode.Import);
PdfDocument PDFNewDoc = new PdfDocument();

for (int Pg = 0; Pg < PDFDoc.Pages.Count; Pg++)
{
    PdfPage pp = PDFNewDoc.AddPage(PDFDoc.Pages[Pg]);

    XGraphics gfx = XGraphics.FromPdfPage(pp);
    XFont font = new XFont("Arial", 10, XFontStyle.Regular);
    gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, pp.Width, pp.Height), XStringFormats.BottomCenter);
}

PDFNewDoc.Save(@"D:\Test2.pdf");
20
Yuvi Dagar

ドキュメントを変更する代わりに、新しいドキュメントを作成し、古いドキュメントから新しいドキュメントにページをコピーしてください。

サンプルコードは、PDFsharpフォーラムのこの投稿にあります。
http://forum.pdfsharp.net/viewtopic.php?p=2637#p2637

12