Vous êtes sur la page 1sur 5

Saving as PDF and XSL-FO

在 PowerBuilder 9 中,新增了可將 DataWindow 轉存成 PDF 檔的功能。而


PDF 檔的最大的目的是提供一種共通的檔案格式,讓各種文件保持原貌重現,讓
不論身在何處,使用何種語系電腦的人,看到的文件都是相同的。以往當我們希
望要呈現的資料可以轉存成 PDF 檔時,必需得有 PDF Writer,然後把資料用 PDF
Writer 的印表機驅動程式印出成一個 pdf 檔。現在,PowerBuilder 利用這樣的原
理,但是您不再需要安裝 PDF Writer,就可以直接將 DataWindow 的資料轉存成
PDF 檔。

PowerBuilder 9 提供了兩種方法可以將 DataWindow Object 或 DataStore 轉存


成可攜式文件格式(PDF),他們分別是使用『GNU GhostScript』及『XSL-FO and
Java printing』兩種方式,我們分別說明如下。

使用 GNU Ghostscript 儲存成 PDF 檔案

PowerBuilder 9 的預設值是使用 distill 的方法將 DataWindow 存成 PDF 檔,


它轉存成 PDF 的運作方式是可分成兩個階段:

1. 利用 PostScript 的印表機驅動程式,先將資料變成 PostScript 檔,在此解釋


PostScript 的意義。PostScript 是早年 Adobe 公司與頻果電腦公司所合作開
發的一種描述式語言,也是業界文件輸出格式的重要標準,早期有許多學術
論文與排版印刷工作的最終輸出都是 Postscript,甚至有許多印表機直接就可
以讀懂 Postscript,故它們可以直接列印 Postscript 的文件,而不需要額外的
驅動程式。
2. 再使用 GNU GhostScript 將這個 PostScript 檔轉成 PDF 格式的文件。
GhostScript 軟體,它是一個可以讀得懂 PostScript 語言的解譯器,更重要的
是它內含許多驅動程式,可以將 PostScript 文件轉換成各種形式輸出。

為了讓能夠達到以上所述之兩階段運作方式,因此在安裝完 PowerBuilder
9.0 的同時,安裝程式也同時會將 GhostScript 安裝到
Sybase\Shared\PowerBuilder\gs7.05 目錄下,以及將 PostScript 印表機驅動程式安
裝在 Sybase\Shared\PowerBuilder\drivers 的目錄下。透過這兩個軟體的協助,
PowerBuilder 就可以將大部分型態的 DataWindow 儲存成 PDF。

如果您安裝完 PowerBuilder 後,您的 DataWindow 無法轉存成 PDF 檔,請


自行至 ftp://mirror.cs.wisc.edu/pub/mirrors/ghost/gnu/gs705 下載 GNU GhostScript
軟體 gs705w32.exe,安裝完後請將安裝目錄下的 bin 子目錄加到環境變數 PATH
下即可。

當你準備完以上的系統環境之後,你就可以將 DataWindow 物件儲存成 PDF 檔


案。而在 PowerBuilder 的開發環境下,你可以先開啟一個欲轉存的 DataWindow
物件,然後在功能表中選擇『File』Î『Save Rows As…』
,這時會開啟一個另存
新檔的對話盒,存檔類型選擇『PDF』,接著輸入您要存的檔名就可以了。

如果您要使用自訂的 PostScript 印表機驅動程式來將 DataWindow 存成 PDF


檔,那麼你必須先在 DataWindow 物件上做一些屬性設定:

1. 在 DataWindow 的屬性裡,選擇 Data Export 頁次。

2. 在下拉式選單的 Format to Configure 屬性中,選擇用『PDF』;Method 選


擇用『Distill!』;Distill Custom PostScript 要打勾。

3. 點選到 Print Specifications 頁次,指定印表機的名稱。

4. 將 DataWindow 物件存成 PDF 檔,選擇『File』Î『Save Rows as…』,


將存檔格式指定為 PDF,輸入檔名再按存檔。

如果要用 PowerScript 程式碼去控制的話,我們可以這樣寫:


dw_1.Object.DataWindow.Export.PDF.Method = Distill!
dw_1.Object.DataWindow.Printer = "Sybase DataWindow PS"
dw_1.Object.DataWindow.Export.PDF.Distill.CustomPostScript="Yes"
dw_1.SaveAs("custom.PDF", PDF!, true)
使用 GNU GhostScript 來儲存成 PDF 檔案這種方式非常的方便,但它唯一的限制
是目前並不支援 OLE、RichText 的 DataWindow 物件。

使用 XSL-FO 儲存成 PDF 檔案


除了藉由 GNU GhostScript 軟體的協助來產生 PDF 檔案以外,PowerBuilder
還可以藉由 XSL-FO 的產生來將 DataWindow 的資料和顯示型態轉存成 PDF 檔。
使用 XSL 轉換成列印文件格式(如 PDF、PostScript 等)時,通常必須分成兩個
步驟。首先先用 XSLT 處理器將文件轉換成 formatting objects,再用 formatter 將
formatting objects 轉換成列印文件。由於這個方法是使用 Java 的處理程序而不是
用 Microsoft GDI 的方式,因此如果要在 UNIX 作業系統平台上,例如透過 UNIX
平台上 EAServer 上的 PowerBuilder 元件程式將 DataWindow 轉存成 PDF 時,利
用 XSL-FO 這種方式特別有用的,它可提供一個跨平台的解決方案。

要藉由 XSL-FO 方式來將 DataWindow 轉存成 PDF 檔,則您的系統需要有 Java


執行環境和 FOP 程式才行。在安裝完 PowerBuilder 後,FOP 程式會被安裝在
Sybase\Shared\PowerBuilder\fop-0.20.4,而 JDK 1.4 會被安裝在
Sybase\Shared\PowerBuilder\jdk14 目錄下。

為了要用 XSL-FO 方式將 DataWindow 存成 PDF 檔,除了系統環境要支援之


外,在存檔前還必須先在 DataWindow 的屬性上做一些設定,它的設定步驟如下:

1. 在 DataWindow 的屬性裡,選擇 Data Export 頁次。

2. 在下拉式選單的 Format to Configure 屬性中,選擇用『PDF』;Method 選


擇用『XSLFOP!』。

3. 如果您想要將資料同步送到印表機列印出來,就勾選『Print Using
XSLFOP』。它會將 PDF 檔送到你系統預設的印表機列印出來。

4. 在功能表中選擇『File』Î『Save Rows as…』,將存檔格式指定為 PDF,


輸入檔名再按存檔,即可將 DataWindow 物件存成 PDF 檔,。
如果要用 PowerScript 程式碼去控制的話,我們可以這樣寫:
dw_1.Modify("Export.PDF.Method = XSLFOP! ")
dw_1.Modify("Export.PDF.xslfop.print='Yes'")
dw_1.SaveAs("printed.pdf", PDF!, true)

如同使用 GNU GhostScript 軟體一樣,使用 XSL-FO 方式來產生 PDF 檔案仍有限


制,那就是它目前不支援 OLE、RichText、Graph 和 Composite 的 DataWindow
物件。

Saving as XSL-FO

剛剛我們提到了,可利用 XSL-FO 將 DataWindow 轉存成 PDF,現在我們來


看看如何將 DataWindow 物件存成 XSL-FO 檔案。

那麼,要將 XSL-FO 檔轉成你想要的格式,就必須要有相關的處理器可以轉


換,像是 Apache XSL Formatting Object Processor(FOP),他可以將 XSL-FO 文件
轉換成不同的輸出格式,包含 PDF、PCL、AWT。FOP 是 Apache 計畫所發展的
一個 formatter,可以把 Formatting Object 格式的文件轉換成可列印文件,如 PDF、
PostScript 等格式。

在 DataWindow 繪圖器上,選擇『File』Î『Save Rows as…』,將檔案型態


選擇 XSL-FO,然後再儲存起來就可以了。現在我們希望把這個 XSL-FO 物件,
轉成 PDF 檔,我們可以用下列的命令語法來產生:
Fop dwemp.fo dwemp.pdf
參數:
-awt 產生預覽列印
-print 將資料送到印表機。
Fop dwemp.fo -awt
Fop dwemp.fo -print

假設您輸入的 FOP 命令語法不能使用時,請檢查系統的環境變數是否有設


好。如果您要將一個有使用到 XSL-FO 或 Java printing 的應用程式部署到其他機
器上面,請確定該台機器上已有安裝 JDK1.4,並有 FOP 被部署在你應用程式執
行環境所需要用到的 DLL 檔存放的資料夾目錄下。比方說:您的應用程式所需
的執行檔放在資料夾名稱為『MyApplication』下,請將原來 FOP 的整個資料夾
的複製到 MyApplication\fop-0.20.4。

註:
XSL (Extensible Stylesheet Language),全名為延伸式樣規語言,早期也曾被稱為
「Extensible Style Language」
;XSL 係用來描述資料該如何被展示在使用者眼前的語言,
W3C 對於 XSL 之定義如後。
XSL 為用來表現樣規(stylesheets)之語言,由兩個部分組成:

XSL Transformations (XSLT):轉換 XML 文件之語言


XSL Formatting Objects (FO):XSL 格式化物件,用來述明格式化語意之 XML 字彙。

XSL Formatting Objects 本身就是以 XML 為基礎的標記語言,其允許使用者對內容頁


數、版面設計、樣式資訊等做詳細的指定,達到精確設定其外觀式樣。XSL FO 的標記十
分複雜且冗長,而要產生 XSL-FO 檔最實際的方法就是用 XSLT 來產生一份來源文件,之後
再將該文件作為輸出的媒介。

Vous aimerez peut-être aussi