亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

試試看把XML轉成PDF的有效工具:FOP

2019-11-18 12:49:43
字體:
來源:轉載
供稿:網友

  格式對象處理器 (FOP) 是一個源碼開放的java API,可以把xml數據轉換成PDF格式,同樣的,也可以轉成其他相關的格式,象TXT, SVG, AWT, MIF, 和 PS. 該軟件是在Apache XML項目下開發的,可以免費使用。
  這篇文章展示了如何開始使用FOP。FOP的主要優點是它轉換XML數據到PDF格式報告的性能,使用的了格式化樹結構。我們提供的絕大多數的例子將會集中展示這個非凡的轉換,但也會把XML數據轉成Java AWT格式.
  這篇文章的面向于精通XML和XSLT的開發者的。要獲取更多的關于XML的信息,可以到XML.com。
  
  安裝
  FOP 可以從FOP 發布目錄上面下載。下載文件是一個gzip 文件包,它包括兩個發行包。其中fop-0.20.4-src 發行包包含源代碼,使用它可以自己用Ant 進行編譯。fop-0.20.4-bin 發行包包含了運行部分, 里面沒有源代碼和Java文檔。
  把源碼包解壓到你選擇的一個目錄下。你會得到程序解壓生成的fop-0.20.4主目錄 和一系列子目錄:build, conf, docs, hyph, lib 和 src.
  • build 包含最新的FOP運行文件fop.jar, 這個文件應該被放在應用程序的CLASSPATH 中。
  • conf 包含了確定的配置文件,這個我們將在后面進行討論。
  • docs 包含了各種各樣的例子,文檔,和一些圖形圖片。
  • hyph 包含了不同語言的連字符信息。
  • lib 包含了所有的外部.jar 文件,這些文件對于FOP自己的運行是必需的。他們包括Avalon, Batik, Xalan, 和 Xerces。 由于這篇文章
  • 是著重介紹FOP的, 我們不會深入討論這些API。只需要知道FOP使用這些API就夠了。在配置的時候我們需要把這些庫放到應用程序的CLASSPATH 中。
  • src 包含了所有源代碼。
  
  FOP 簡介
   圖形1. FOP 架構.
  FOP 是一個被3W組織在XSL 說明書 中指定的用于理解格式化對象的工具。說明書的第一部分說明了XSLT的轉化處理。我們感愛好的是第二部分, 里面說明了我們所說的格式化對象(FO)的處理。 說明書中的這一部分定義了獨立輸出的格式化對象, 它由一系列的文檔風格以及布局的詞表組成。舉個例子來說, 其中的一個格式化對象是fo:simple-page-master, 它用來說明一個頁面模板,它包含一些相關的屬性 (邊界,頁頭, 等等)。就這樣,象FOP這樣的工具可以讀吃這些信息并且把這些信息轉化成想要的格式輸出(PDF/TXT)。很重要的一點是相同的風格信息可以產生不同的輸出。
  一篇FO 文檔簡單的說就是一篇XML文檔。 它的命名空間由W3C 站點 定義。它 可以包含任何在這個命名空間中元素。你能夠手工的創建這樣的文檔并且為每一個元素指定確切的值,每一個元素應該被輸出。然而,更為通用的方法是寫一個XSLT的樣式表,來治理你的XML數據文件, 根據你的樣式標的規則來進行轉換, 從而產生最終的FO文檔。動態生成的數據能夠跟一個存在的樣式表綁定來產生FO 文檔。
  
  雖然FOP的主要意圖是處理FO文檔, 但是他也能夠通過一個樣式表完成已存在數據文件(XML)的轉換。我們假定在一XSL文件的表中有你的以XML個是存放的商務數據以及樣式表信息。假如你把這兩者提供給FOP, FOP 將會把這些信息轉換成一篇臨時的FO文檔并且最終生成你期望的輸出。
  
  一個簡單的例子
  例子文件
  下載這篇文章中的例子文件 。這個 .zip 文件包含了下列文件:
  krusty.fo, krusty.pdf, krusty.xml, and krusty.xsl.
  了解了原理以后,讓我們實際運行一下FOP。 打開一個命令窗口并且定位到你的FOP安裝目錄下。FOP 的根目錄下面包含了兩個運行體:一部分是可運行在Unix系統上的shell腳本,另一部分是用于windows環境的一系列文件,通過這些文件FOP能夠通過命令行來運行。根據你的系統情況來運行相關的腳本。FOP將會報沒有輸入參數的提示,從而輸出一系列的運行例子。好的—這意味著你現在可以開始使用FOP了。
  讓我們從創建一個簡單的FO 文件開始。假如你想要看到最終結果, 可以點擊這里krusty.fo.
  就像我前面所講到過的,一個FO文件是一個簡單的類似表的Xml文件。因此開開你的文本編輯器并輸入第一行:
  
  所有的FO文件必須有這個外層元素作為根
  http://www.w3.org/1999/XSL/Format">.
  這個 根 元素的后面跟著元素,它表明了我們文檔的頁面布局。
  
  page-height="29.7cm"
  page-width="21cm"
  margin-top="1cm"
  margin-bottom="2cm"
  margin-left="2.5cm"
  margin-right="2.5cm">
  
  就像你看到的, 主要的布局設置包括不同的簡單的可以放在里面的頁面布局定義。在我們的例子中,已經定義了一個單獨的簡單頁面治理者,在里面,我們可以看到簡單頁面的屬性,我們給它起的名字simple (這個名字以后我們會用到), 這個頁面的高度是29.7 厘米, 寬度是21 厘米, 頂端空白為1 厘米, 等等。我們可以定義許多我們想要的簡單頁面并且賦給他們不同的名字,這些名字我們會在后面飲用這些頁面的時候用到。
  現在我們已經定義了頁面隊列術語和大小與它們將來看上去模樣的對應,進而我們需要定義實際的目錄持有者。下面是我們使用 標記的位置:
  
  注重在定義頁面順序的時候,我們引用到了簡單的頁面治理者, 之所以稱為簡單, 是因為我們在前面已經定義了。這意味著我們的內容將被簡單頁面治理者限定在一個頁面之內。 實際的內容被放在 元素中。在元素中的 元素,開始一個段落并定義這個段落的每個屬性。就此出來說我們設開頭文字"Krusty the Clown,"的字體為sans serif 字體, 背景色為藍色,文字排序方式為居中。簡單的, 對于下一個塊,我們設定字體大小為12 磅。文字排序方式根據具體情況而定。
  
  font-family="sans-serif"
  line-height="24pt"
  space-after.optimum="15pt"
  background-color="blue"
  color="white"
  text-align="center"
  padding-top="3pt">
  Krusty the Clown
  
  font-family="sans-serif"
  line-height="15pt"
  space-after.optimum="3pt"
  text-align="justify">
  這個備忘錄解釋了為什末Krusty the Clown 是我們做好的客戶。我們需要從現在開始關心他的需求,從而確保他的寵物猴子有足夠的香蕉可以吃。
  
  最后, 關閉所有打開的標記并且保存為文件krusty.fo,這個文件存放在FOP根目錄下。
  現在是看FOP運作的時候了。在FOP的根目錄下,敲入如下的命令:
  fop krusty.fo krusty.pdf
  
  FOP 將會運行并且在相同的目錄下將我們的krusty.fo 文件轉化為一個krusty.pdf 文檔。通過雙擊打開文件,檢查最終的輸出是否真的符合我們的要求。 對FO 文件進行一點改變,然后看看在輸出中有什末影響。 從改變內容中的文字開始,繼而試著改變風格,邊界, 顏色, 字體, 等等, 然后看所有的變化是怎樣的。
  XSL + XML
  通過運行簡單的例子, 你將會注重到手工的產生一個FO文檔是很難的。直接的修改和改變FO文件實在是令人討厭的,我們正在失去內容獨立性的優越性。因此通常地, 你將會換用一個XSLT樣式表來把你的XML數據轉化成為一篇XSL-FO 文件。你不需要在外部或者為這個轉換明確地做什末事情來轉換到FOP。你可以為FOP指定樣式表和XML文件,這樣FOP就可以自己進行轉化了。讓我們看看下面的例子,它會告訴我們這些是怎樣實現的。
  我們將從前面的例子中把數據提取出來放到一個XML 文件 中。因此我們的XML 數據文件看書去就會使這個樣子的:
  
  Krusty the Clown
  
  這個備忘錄解釋了為什末Krusty the Clown 是我們做好的客戶。我們需要從現在開始關心他的需求,從而確保他的寵物猴子有足夠的香蕉可以吃。
  
  把這個文件保存在FOP的根目錄下。
  我們現在需要生成一個樣式表,然后用它來轉化這個數據文件為FO文件。要想察看最后的結果,可以下載最后的XSL 文件 (這個文件也在FOP.zip 例子文件中)。
  
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:fo="http://www.w3.org/1999/XSL/Format">
  像期望的那樣, XSL文檔的開頭是XML聲明, 緊跟著是命名空間的聲明。
  
  假如你以前曾經用過XSLT, 你會注重到現在我們試圖做的是對我們的XML中的標記進行匹配,替換并使用它們來轉化為另一個XML文件,也就是我們的FO文件。因此上面的文本行尋找和匹配根 標記并使用它后面的內容來替換它。這個內容, 下面是它的概要, 基本來說,它是我們簡單布局治理者的定義,正如我們上面對FO文件所描述的那樣。
  http://www.w3.org/1999/XSL/Format">
  
  page-height="29.7cm"
  page-width="21cm"
  margin-top="1cm"
  margin-bottom="2cm"
  margin-left="2.5cm"
  margin-right="2.5cm">
  
  用實際的格式化信息替換數據標記從而形成我們的XSL 文件。
  
  font-family="sans-serif"
  line-height="24pt"
  space-after.optimum="15pt"
  background-color="blue"
  color="white"
  text-align="center"
  padding-top="3pt">
  
  font-family="sans-serif"
  line-height="15pt"
  space-after.optimum="3pt"
  text-align="justify">
  
  正如你所看到的, 在FO標記術語中的模板匹配項被相應的格式化信息替換了。樣式表包括樣式表的結束標記。把這個文件保存為krusty.xsl文件,并存放在 FOP根目錄下。
  下面通過運行來看看我們努力的結果, 在FOP的根目錄下輸入下面的命令行:
  fop -xml krusty.xml -xsl krusty.xsl -pdf krusty.pdf
  因而, 你正在指定輸入的XSL 和 XML

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品电影一区| 中文字幕欧美日韩在线| 91成人在线播放| 日韩在线视频免费观看| 日韩久久午夜影院| 欧美片一区二区三区| 欧美黄色片视频| 国产成人自拍视频在线观看| 日韩欧美中文在线| 亚洲色图日韩av| 91最新国产视频| 97精品视频在线播放| 日韩国产欧美精品在线| 91av免费观看91av精品在线| 国产suv精品一区二区| 国产成人拍精品视频午夜网站| 亚洲丁香久久久| 日本高清+成人网在线观看| 久久精品成人动漫| 97视频在线看| 国内免费精品永久在线视频| 日韩精品久久久久久福利| 欧洲成人免费aa| 日本高清视频精品| 精品一区精品二区| 精品日本高清在线播放| 国产精品精品国产| 欧美视频裸体精品| 久久久久国产精品一区| 8090成年在线看片午夜| 91av在线不卡| 日韩av免费网站| 国产精品69精品一区二区三区| 韩国精品久久久999| 精品视频在线播放免| 亚洲激情第一页| 黄网动漫久久久| 精品丝袜一区二区三区| 欧美精品www| 亚洲精品成人久久电影| 国产99视频精品免视看7| 国产精品久久久久久av下载红粉| 精品久久香蕉国产线看观看亚洲| 性亚洲最疯狂xxxx高清| 亚洲国产精品大全| 色婷婷**av毛片一区| 亚洲伊人成综合成人网| 日韩福利伦理影院免费| 在线精品国产成人综合| 日韩有码片在线观看| 久久综合伊人77777蜜臀| www.亚洲天堂| 久久影视电视剧凤归四时歌| 91成人精品网站| 久久久国产影院| 最新国产成人av网站网址麻豆| 国产精品久久久久久影视| 亚洲精品资源美女情侣酒店| 国产精品视频在线观看| 欧美成人午夜影院| 国产一区二区香蕉| 国产精品一区二区三区在线播放| 国产精品中文字幕久久久| 成人国产精品免费视频| 欧美日韩国产精品一区二区不卡中文| 蜜臀久久99精品久久久无需会员| 午夜精品久久久久久久99热浪潮| 国产精品免费一区二区三区都可以| 成人激情春色网| 最近免费中文字幕视频2019| 国产精品久久91| 欧美一级淫片videoshd| 国产偷国产偷亚洲清高网站| 97国产精品视频| 九九热这里只有在线精品视| 亚洲四色影视在线观看| 久久久久久有精品国产| 国产精品国产亚洲伊人久久| 欧美另类xxx| 久久久久亚洲精品成人网小说| 国产亚洲激情在线| 久久久久一本一区二区青青蜜月| 一区二区三区四区视频| 亚洲成avwww人| 日韩av在线最新| 欧美大片免费观看在线观看网站推荐| 欧美日韩国产综合新一区| 欧美中文字幕第一页| 亚洲精品午夜精品| 国模精品视频一区二区三区| 久久91精品国产| 欧美野外wwwxxx| 日韩欧美成人区| 午夜伦理精品一区| 91免费视频国产| 亚洲欧美日韩天堂一区二区| 日本成人免费在线| 亚洲精品美女久久| 成人黄色免费在线观看| 精品亚洲一区二区三区| 精品亚洲男同gayvideo网站| 日韩电影大全免费观看2023年上| 亚洲在线www| 欧美激情视频网址| 亚洲综合中文字幕在线观看| 国产欧美最新羞羞视频在线观看| 色综合天天综合网国产成人网| 国产精品永久免费| 国产精品极品美女在线观看免费| 国外成人免费在线播放| 亚洲综合日韩在线| 国产va免费精品高清在线| 在线精品91av| 国产精品久久久久久久久久99| 欧美日韩国产精品一区二区不卡中文| 亚洲欧美国产精品| 最近更新的2019中文字幕| 国产视频在线一区二区| 亚洲精品国产美女| 国产一区二区成人| 精品国产精品三级精品av网址| 狠狠色狠狠色综合日日小说| 成人黄色av免费在线观看| 91在线免费观看网站| 国产精品久久在线观看| 成人国产在线视频| 中文字幕国产亚洲2019| 欧美激情三级免费| 亚洲大尺度美女在线| 成人性生交大片免费看小说| 黑人巨大精品欧美一区免费视频| 精品美女久久久久久免费| 欧美老女人在线视频| 久久伊人91精品综合网站| 久久免费精品视频| 这里只有精品视频| 亚洲成人av中文字幕| 国产精品久久久久久久久久免费| 不卡在线观看电视剧完整版| 91在线视频精品| 亚洲精品在线91| 国产精品v日韩精品| 成人免费视频xnxx.com| 精品国产自在精品国产浪潮| 亚洲精品视频中文字幕| 午夜伦理精品一区| 国产精品美女久久久免费| 欧美精品电影免费在线观看| 国产精品情侣自拍| 欧美亚洲国产精品| 最近2019中文字幕在线高清| 国产拍精品一二三| 国产精自产拍久久久久久| 国产精品免费视频xxxx| 日本在线精品视频| 中文字幕亚洲欧美日韩高清| 91久久精品久久国产性色也91| 日韩av在线免费观看| 国产亚洲精品久久久久久777| 成人www视频在线观看| 亚洲成人黄色在线| 日韩小视频在线| 午夜精品一区二区三区在线| 成人网页在线免费观看|