Adobe PDF格式已經變成很多機構和公司進行跨平台製表的通用媒體格式。儘管我不是這個產品的狂熱癡迷者,卻不得不接受這樣一個事實:用這個格式產生一個協定可能會比用Word還要好。
由於在一家僱用公司工作,我已經把我們所有早期的軟體寫成能在Internet上運行,這樣我們就能和小的子公司共用公用資料庫了。然而我們遇到的最大的問題就是製表。當一個申請人坐在資訊站裡線上填寫他們的就業申請時,我們如何取得當前的文檔(或申請等)?由於我們做了大量工作來擷取資料,我們還需要申請人手工填寫一份申請。
我試了各種辦法,但是看來都有一個很大的限制:
如果我能快速產生它,它就只能是一個HTML形式的衍生物,在列印時就會變得面目全非。如果設計的看起來美觀一些,它就會變得很慢。這是由於我選擇用RTF格式作為我的喜好設定,然後使用檔案系統對象來完成基於模板的RTF檔案,最後加入了我的資訊。這個磁碟讀寫的過程會耗費很長時間。記住:我們這裡不是在討論列表資料或者一個Excel試算表。我們是想讓程式用我們自己的標誌進行處理。
最後,我選擇了Adobe(很像一句廣告詞?——譯者)。我討厭它的瀏覽器所以希望自己不會和它糾纏上,然而它的格式看起來很不錯而且檔案也不大。大部分使用者都在系統裡裝上它,我們的客戶也不例外。
因此我一直在尋找把資料從HTML表單傳遞到PDF檔案的方法。我試過使用Adobe表單,但是它不能真正有效運行,然後還要統計如何合并資料庫請求。這根本不是我想要的東西,我想直接把資料從我的HTML表單傳遞到資料庫,然後產生資料資訊到PDF檔案裡作為瀏覽或列印。
最終我在UseNet發現了線索。一個叫Jeremy Hunter的提交的一個連結包含了我準備在這裡講的很多東西——http://partners.adobe.com/asn/developer/acrosdk/forms.html。
首先必須在定義欄位的工作站(不是伺服器)上安裝有Adobe完全版。這個是一個指向Adobe Forms Acrobat Toolkit的連結,由此開始一切就容易了。
第一、下載這個套裝工具並把它解壓縮到指定目錄。
當你進行這一步操作時,你會發現所有原始碼都在VB或VC++中。我們這裡不打算關注它,但是如果你需要代碼就在這裡。
第二、註冊你的DLL。
有兩個DLL需要被複製到你的伺服器上。一個在Visual Basic檔案夾中叫fdfacx.dll,另一個在Visual C++檔案夾中叫fdftk.dll。用regsvr32註冊fdfacx.dll檔案。我把這兩個檔案都放到c:winntsystem32下,並在當前路徑下輸入“regsvr32 fdftk.dll”。如果你遇到錯誤提示資訊,請檢查確認這兩個檔案確實在目前的目錄下,沒有問題則進入下一步。
第三、建立表單。
我們將使用每個人對這個示範都很熟悉的表單。這在“http://www.irs.gov”隨意可得並為我們提供足夠的領域來展示我們能作的東西。
第四、定義Adobe表單欄位。
在Adobe Acrobat中開啟文檔後選擇表單工具,描述你的第一個表單欄位(First Name)。
在你定義後它將讓你命名,我這裡命名為“FirstName”。注意這裡有幾個標準的附加格式選項,除了字型大小,我選擇進行合法性檢查和格式化我的ASP文檔。由於這是一個快速示範,我選擇跳過任何檢查,但是我將在用戶端的表單進行處理,並在傳遞變數前在服務端格式化ASP頁面。
繼續其他欄位,每一個都要注意命名並可能格式化字型大小或屬性。
在伺服器上儲存你的修改。
第五、編寫ASP頁面。
在開始這一步之前你要注意到FDF套裝工具闡述的一個主要對象——“FDFApp.FDFApp”。它開放了許多方法,手冊上概述了其他的可能方法。我們主要關心兩個方法——fdfSetValue和fdfSetFile。接下來切入正題。
第六、沒有必要成為PDF專家,這是我目前的建議。套裝工具的使用者指導概述了所有方法,看上去在這個入門介紹之外還有很多可能的方法。就像你所看到的一樣,你可以很容易添加資料庫命令來收集資料或向資料庫記錄資料。
原作者簡介:
Ty Button就職於俄勒岡的一個名叫Cardinal Services的僱用公司。Cardinal Services公司曾被俄勒岡商業雜誌評為1997和1998年度俄勒岡南部第一號僱用公司,同時被南海岸商業開發中心和美國銀行評為俄勒岡發展最快的公司。Button是MIS開發人員,也在網路資料庫開發和生產過程自動化上花費了大部分時間