2011-05-09 42 views
3

我們正在考慮大量的應用需求,並且我們正在研究一些解決方案。考慮到我們可能沒有以往任何時候都與這些要求提出的唯一的開發商,我們想知道什麼解決方案和技術,其他人可能都選擇了...ASP.NET - 收集來自PDF表單字段的用戶輸入

下面是在總結,對一個特定的應用功能的要求:

- 平臺:ASP.NET

- 收集(通過標準Web表單)用戶輸入

- 填充與收集的用戶輸入PDF表單,也不要壓平的PDF表單

- 立即顯示PDF表單(在瀏覽器中),並允許用戶編輯字段的內容(PDF表單將在iFrame中顯示)。

- 允許用戶「提交」改變的PDF到Web服務器(它最終會被夷爲平地,並存儲到後端數據庫)

最後一點,你可以想像,是讓我們撓頭的那個......如何用用戶更改「保存」PDF文件 - 返回到Web服務器的文件系統......它最終將被平鋪並存儲在數據庫中。

有沒有實用的建議?任何建議?不涉及PDF表單的替代解決方案?

請記住,鑑於目標受衆,涉及Adobe的LiveCycle許可證的解決方案絕對不在圖片中......。

感謝

喬治

+0

自定義表單爲什麼你會往返像這樣的事情,而不是讓用戶有第二次機會創建一個PDF之前編輯他們的數據? – R0MANARMY 2011-05-09 19:38:31

+1

PDF表格_may_有許多可填寫字段,我們不會收集到應用程序前端...這些表格可能是我們客戶設計的「定製」表格,可能包含對我們的客戶相對重要的字段。這些字段可能不一定包含在我們的應用程序前端。例如:這可能是一份工作申請:我們的前端要求提出許多問題,並使用網頁表單收集用戶輸入。用戶輸入被放置在PDF表單上並顯示給用戶。 PDF表格是由客戶提供的......並且可能包含在我們的應用前端找不到的字段... – Giorgio 2011-05-09 20:09:42

+0

夠公平的,您應該在問題中包含這些信息,以便人們更好地瞭解什麼樣的用例你的目標。 – R0MANARMY 2011-05-09 20:23:21

回答

1

我從來沒有使用過它,但有一些成功的iTextSharp我聽說過的人。有一篇關於如何使用it here保存PDF文件的代碼項目文章。您需要檢查iTextSharp的許可證,以確保它與您所做的工作兼容。

+0

這裏的問題不是創建PDF。問題是保存由用戶輸入的字段值...問題是...如何將PDF(顯示在iFrame中)保存在Web服務器文件系統上......以便我可以將PDF存儲在後面末端數據庫...(有沒有需要實際檢索字段值......只要PDF保存!) – Giorgio 2011-05-09 20:02:09

+0

iTextSharp的可以更改現有PDF的字段值,並壓平。 – 2011-05-10 17:26:37

0

您可以在您的PDF文件中使用提交按鈕來提交名稱/值對,這與您對html表單(see this SO question for details)所做的類似方式相同。然後在服務器端,您可以使用PDF處理工具(Amyuni PDF Creator .Net,iText等)在您的PDF表單上重新插入值,並將生成的文件保存到數據庫中。

+0

與上面相同...這裏的問題不是創建PDF。問題是保存由用戶輸入的字段值...問題是...如何將PDF(顯示在iFrame中)保存在Web服務器文件系統上......以便我可以將PDF存儲在後面末端數據庫...(有沒有需要實際檢索字段值......只要PDF保存!) – Giorgio 2011-05-09 20:02:25

+1

<<您可以使用PDF文件中提交按鈕提交的名稱/值對,. .. >>這是一個有趣的想法,並可能探索的可能性。我看到第三方提供的一些PDF文件幾乎沒有障礙 - 但我想這是一個好的開始。謝謝! – Giorgio 2011-05-10 12:47:56

2

給定一個現有的PDF,iTextSharp可以填寫字段值(AcroForm或XFA/LiveCycle表單)。然而,雖然iTextSharp(和iText)可以處理任何舊的AcroForm,但它只能使用FLATTEN static liveCycle表單。

此外,PDF表單可以用多種方式提交自己:

  • FDF:PDF的方言。主要是名稱/值對,附近有一些額外的東西。
  • HTML風格
  • PDF:PDF可以將自己(通過表單數據)提交給URL。您可以打開&展開,無需擔心第二次填寫表單。我相信這僅限於Reader中的「Reader Enabled」形式。

iText的PDFStamper(在追加模式!)可以填寫字段值而不會破壞PDF的Reader-Enabled-ness。

您的工作流程變得:

  1. 請填寫的iText的PdfStamper以附加模式的閱讀器的形式,全心全意該PDF到用戶。
  2. 從用戶
  3. 收到充滿PDF拼合與另一PdfStamper的PDF。只需「打開,setFormFlattening(true),close()」。

不是在PDF填充相反,你能容納FDF與字段值和PDF模板的引用(再次提交完整的PDF其中IIRC需要讀者啓用,從Acrobat)。這比解析PDF並每次提供它明顯更有效。

的FDF看起來是這樣的:

 
%FDF-1.2 
%âãÏÓ 
1 0 obj 
<</F(http://www.mySite.com/myPDF.pdf) 
/Fields[ 
    <</T(Check1)/V/Off>> 
    <</T(Some Field)/V(A value)>> 
    <</T(AnotherFld)/V(1.0)>> 
    <</T(You get)/V(the idea)>> 
] 
>>/Type/Catalog>> 
endobj 
trailer 
<</Root 1 0 R>> 
%%EOF 

< <和包裝>> 「詞典」(名稱值對)。
(和)包裝字符串
[和]包裝數組
/lead「names」。名字用於字典鍵,偶爾用於其他東西。

你要逃避的名字和字符串一些字符:

字符串轉義開始用「\」。 \ r,\ n,\ t,\ b,\ f,(,)和\。您也可以將任何舊字符值IN OCTAL轉義爲:\ ooo,其中'o'是八進制值。

名稱完全不同(grr)。

名稱逃逸開始以「#」,接着是兩位數的十六進制數。 HEX這次,不是八進制。 Grr grr。任何不在a-z A-Z 0-9中的東西。 _; * @應該逃脫。你可以逃避一切,它只是非常低效。

您可能需要擔心的字符串轉義(字段值的特別,也可能爲你的PDF路徑/ URL),但你幾乎可以肯定不會需要擔心的名字逃脫。

有各種庫寫FDF你,但我覺得它更容易剛剛爆炸了簡單的字符串連接FDFS。

請注意,FDF支持的不止一點,但許多FDF庫不支持,所以如果你走出捱打路徑,那麼你自己就可以自己構建它們。

-1

如何創建一個PDF或Web表單:

  • 在Acrobat XI中,選擇工具窗格>表格>創建。
  • 單擊從頭開始或模板以啓動FormsCentral桌面應用程序。
  • 點擊創建一個新的空白表格或以模板開始。
  • 使用直觀的工具
相關問題