我在我的應用程序中使用可編輯的pdf文件(由Nitro PDF Software創建)。這些pdf文件有很多可編輯字段(如文本框)和一個按鈕(如提交)。生成並保存PDF文件
每當用戶打開該pdf文件,輸入文本並點擊提交按鈕,他們就會被重定向到一個aspx頁面。
如何獲取發佈到此頁面的所有靜態和動態值,並使用輸入的數據創建另一個pdf文件?我該如何保存創建的pdf文件?
我在我的應用程序中使用可編輯的pdf文件(由Nitro PDF Software創建)。這些pdf文件有很多可編輯字段(如文本框)和一個按鈕(如提交)。生成並保存PDF文件
每當用戶打開該pdf文件,輸入文本並點擊提交按鈕,他們就會被重定向到一個aspx頁面。
如何獲取發佈到此頁面的所有靜態和動態值,並使用輸入的數據創建另一個pdf文件?我該如何保存創建的pdf文件?
如何獲取發佈到此頁面的所有靜態和動態值?
當你從一個HTML控件檢索其他任何值,例如您可以retreive他們:
string MyVal = Request.Form["FieldName"];
並創建輸入數據的另一個PDF文件?
在這裏您可以使用您選擇的PDF庫(iText.Net,Nitro PDF,Amyuni PDF Creator.Net),加載您的PDF表格,將值設置到每個字段,根據需要拼合您的文件並保存。這部分的代碼取決於正在使用的庫,但它們通常都有很好的文檔記錄,所以您應該能夠輕鬆找到示例代碼。
爲什麼不按照下面鏈接中提到的方式進行操作。
http://www.gnostice.com/nl_article.asp?id=176&t=Generate_PDF_Forms_In_ASP_NET_Using_PDFOne_NET_v3
它採用其它PDF生成工具。但你應該可以用硝基做同樣的事情。
嘗試開放源代碼庫http://pdfsharp.codeplex.com/,樣本可以在這裏找到http://www.pdfsharp.net/wiki/。
用戶對於之後在asp.net生成PDF代碼:
有下面一個完整的代碼示例,讓您開始。 //代碼
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();
}
}
維基百科,PDF Interactive elements有兩種可能整合數據和PDF文件(也有鏈接到規格):
對於兼容性問題,我會去AcroForms。在那種情況下,我會使用XFDF,因爲它是XML,因此更容易解析。我從來沒有使用過Nitro,但是當你建立一個PDF表單時,你通常會提供一個「保存」按鈕,並選擇操作這個按鈕的「發送/發佈表單到服務器」的數據格式XML,它只是XFDF。
只有在瀏覽器中查看PDF時纔有效。因此,典型的用例是:在將PDF返回給用戶將數據混合到PDF中之前,在服務器上有一個空的PDF模板,用戶在表單中輸入數據(PDF在瀏覽器中通過插件打開或本地Chrome),然後用戶按下在服務器上發佈xml的保存按鈕。用戶下一次請求獲取PDF時,您將最新數據與模板再次混合。
所以只有兩個問題是開放的:
查看完整過程在這裏:http://itextpdf.com/book/chapter.php?id=9。本示例在運行時動態更新PDF。由於使用iText,因此Java和C#沒有區別。
請注意,以前版本的iText(Java高達2.1.7和C#高達4.1.6)是在Mozilla公共許可證或LGPL下分發的,而當前版本是根據Affero通用公共許可證分發的。這就解釋了爲什麼仍舊使用舊版本。
生成PDF,使用下面的代碼:
命名空間:
Using System.IO;
Using.iTextSharp.text;
Using.iTextSharp.text.pdf;
在按鈕點擊:
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();
}
你爲什麼不問PDF工具包的創造者? – jgauffin 2012-02-27 14:41:57