2012-02-22 9 views
9

私のアプリケーションで編集可能なpdfファイル(Nitro PDF Softwareで作成)を使用しています。これらのpdfファイルには、編集可能なフィールド(テキストボックスなど)とボタン(submitなど)が多数あります。PDFファイルを生成して保存する

ユーザーがそのpdfファイルを開くたびに、テキストを入力して送信ボタンをクリックすると、aspxページにリダイレクトされます。

このページに投稿されたすべての静的および動的値を取得し、入力したデータを含む別のpdfファイルを作成するにはどうすればよいですか?そして、作成したPDFファイルをどうすれば保存できますか?

+2

は、なぜあなたはPDFツールキットの作成者を聞かないのですか? – jgauffin

答えて

2

このページに投稿されたすべての静的および動的値を取得するにはどうすればよいですか?

string MyVal = Request.Form["FieldName"]; 

と入力されたデータを別のPDFファイルを作成します。あなたが例えばHTMLコントロールから他の値を、取得するよう

あなたはそれらを盗んことができますか?

ここではPDFライブラリ(iText.Net、Nitro PDF、Amyuni PDF Creator.Net)を使用し、PDFフォームを読み込み、各フィールドに値を設定し、必要に応じてファイルを平坦化して保存できます。この部分のコードは、使用されているライブラリに依存しますが、よく書かれているので、簡単にサンプルコードを見つけることができます。 asp.netでPDFを生成するためのコードを、次の

4

ユーザー:

完全なコードサンプルは、あなたが始めるために以下あります。ウィキペディアから //コード

using System; 
using System.IO; 
using System.Diagnostics; 

using iTextSharp.text; 
using iTextSharp.text.pdf; 

public class iTextDemo 
{ 
public static void Main() 
{ 
    Console.WriteLine("iText Demo"); 

    // step 1: creation of a document-object 
    Document myDocument = new Document(PageSize.A4.Rotate()); 

    try 
    { 

    // step 2: 
    // Now create a writer that listens to this doucment and writes the document to desired Stream. 

    PdfWriter.GetInstance(myDocument, new FileStream("Salman.pdf", FileMode.Create)); 

    // step 3: Open the document now using 
    myDocument.Open(); 

    // step 4: Now add some contents to the document 
    myDocument.Add(new Paragraph("First Pdf File made by Salman using iText")); 

    } 
    catch(DocumentException de) 
    { 
    Console.Error.WriteLine(de.Message); 
    } 
    catch(IOException ioe) 
    { 
    Console.Error.WriteLine(ioe.Message); 
    } 

    // step 5: Remember to close the documnet 

    myDocument.Close(); 
} 
} 
8

PDF Interactive elementsデータやPDFを統合するための二つの可能性(仕様にリンクもあります)があります。(また、Acrobatフォームとして知られている)

  • AcroFormsは、 PDF 1.2形式仕様で導入され、すべてのPDF仕様に含まれています。
  • PDF 1.5形式仕様で導入されたAdobe XMLフォームアーキテクチャ(XFA)フォーム。 XFA仕様はPDF仕様には含まれていませんが、オプション機能としてのみ参照されています。 Adobe XFAフォームはAcroFormsと互換性がありません。

私はAcroFormsのために行きます。その場合はXFDFを使用します.XFDFはXMLであるため、解析が簡単です。私は決してニトロを使用しませんでしたが、PDFフォームを作成する際には、通常、「保存」ボタンを用意し、「XFDF」のデータフォーマットXMLを使用してこのボタン「フォームをサーバーに送信/ポストする」を選択します。

これは、PDFがブラウザで表示されている場合にのみ機能します。したがって、典型的な使用例は次のとおりです。サーバー上に空のPDFテンプレートを用意して、ユーザーにPDFを返す前にデータをPDFにミックスし、ユーザーがフォームにデータを入力します(PDFはプラグインを介してブラウザーで開くか、 Chrome)を選択すると、ユーザーは保存ボタンを押してサーバー上のxmlを送信します。ユーザーが次にPDFを尋ねると、最近のデータを取り込んでテンプレートと再度ミックスします。

だから、2つだけ質問が開いている:

詳細はこちらhttp://itextpdf.com/book/chapter.php?id=9を参照してください。この例では、実行時にPDFをフォームで動的に更新します。 iTextが使用されているので、JavaとC#の間に違いはありません。

現在のバージョンはAffero General Public Licenseの下で配布されていますが、以前のバージョンのiText(Java 2.1.7まで、C#4.1.6まで)はMozilla Public LicenseまたはLGPLのもとで配布されていました。 Thatsは古いバージョンがまだ使用されている理由を説明します。

名前空間::ボタンクリックで

 Using System.IO; 
    Using.iTextSharp.text; 
    Using.iTextSharp.text.pdf; 

:PDF、使用後のコードを生成するには

1

 private void button1_Click(object sender, EventArgs e) 
    { 
     Document doc = new Document(iTextSharp.text.PageSize.LETTER, 10, 10, 42, 35); 
     PdfWriter writer = PdfWriter.GetInstance(doc, new FileStream(@"C:\Test.pdf", FileMode.Create)); 
     doc.Open(); 
     Paragraph paragraph = new Paragraph("Hi, \n This is xxx from yyy \n This is my pdf file"); 
     doc.Add(paragraph); 
     doc.Close(); 
    }