靈活使用ASP生成PDF文件
發表時間:2023-08-13 來源:明輝站整理相關軟件相關文章人氣:
[摘要]Adobe PDF格式已經變成很多機構和公司進行跨平臺制表的通用媒體格式。盡管我不是這個產品的狂熱癡迷者,卻不得不接受這樣一個事實:用這個格式產生一個協定可能會比用Word還要好。由于在一家雇用公司...
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開發人員,也在網絡數據庫開發和生產過程自動化上花費了大部分時間