現在,可以通過xsl-fo和apache fop程式設計實現,總讓我感到興奮。
fop.cmd sample.fo sample.pdf
,ok生成sample.pdf了。
2、將 xml 文件轉換為 pdf 檔案需要兩個基本步驟:
2)用某種顯示引擎將 xsl-fo 元素轉換為 pdf 檔案。
3、xsl-fo 文件定義了製作高質量可列印文件時非常重要的幾件事情:
1)有關頁面的實際大小的資訊(信紙和 a4 等等)
2)有關頁邊距(頂部、左邊、底部和右邊)、頁首和頁尾和頁面其它特性的資訊
3)有關文字的字型、字型大小、顏色和其它特徵的資訊
4)要列印的實際文字,由描述段落、突出顯示、表等類似物的元素來標記
4、xsl-fo文件結構
元素包含 和 。
通常包含關於頁面布局的資訊,而 包含您正在格式化的實際內容。
5、示例講解
sample.fo
說明根元素,fo為命名空間字首,包含乙個 ,然後是乙個或多個 。
指定頁面定義,可以使用 元素來定義所需的每一種頁面布局.
定義某個特定頁面的布局, maste-name是該頁面master的名稱。
margin-top="36pt" margin-bottom="36pt"
頁面頂底邊距
page-width="8.5in" page-height="11in"
頁面實際寬高
margin-left="72pt" margin-right="72pt">
頁面左右邊距
為 region-body 區域定義了長度為 50 點的頂部和底部頁邊距,頁面上還有region-before/region-after/region-start/region-end四區域。
定義文件內使用的頁面布局的序列,此處將main用於所有頁面
定義在指定區域內顯示的內容, 由於顯示引擎(如fop)可以自動或據指定規則計算換行、分欄、分頁符, 故稱之為流。
是最基本的元素,用於格式化乙個文字塊, 它類似於 html 中的 p 元素元素總是會產生乙個換行。此處定義字型大小和行高,有行間距為3,此值一般為3-6。
this is a paragraph of text. notice that as
this meaningless
在現有 內定義一些新的文字特性.
prose drones on and on, the fop
software automatically calculates line breaks for us.
isn't that fascinating?
6、兩個概念
頁面布局(layout)主要設定與紙有關的資訊;頁面則是指用以列印的區域。頁面又分為5個區域(region),如右圖。
7、xsl-fo中關於距離的單位
單位含義
cm 厘公尺
mm 公釐
in 英吋
pt 點(72 點 = 1 英吋)
pc 派卡(12 點 = 1 派卡,6 派卡 = 1 英吋)
px 畫素(有時隨格式化程式或裝置的不同而有所不同,所以要小心使用)
em 乙個大寫 m 的寬度
8、元素
設定粗體用font-weight="bold",斜體字用font-style="italic",字型如等寬字型font-family="monospace".
9、元素
text-align/text-align-last定義文字行/最後一行文字如何對齊,兩者的值集都是start、center、end 和 justify,分別指左、中、右和左右對齊。
space-before 和 space-after用來指定塊前塊後的間距。可以再附以.minimum、.maximum、.optimum 和 .precedence 等字尾,由此可得10個屬性。
keep-with-next、keep-with-previous 和 keep-together用來設定與前塊、與後塊及塊內的顯示控制,可賦之以.within-line、.within-column 和 .within-page 等字尾,可得12種屬性。值集為auto/數值/always,優先順序由低到高。
break-before和break-after分別定義塊前塊後放置分隔符,值有五個,如表
屬性值值的作用
auto
讓顯示引擎自行處理
column
在這個塊的前面放置分欄符
page
在這個塊的前面放置分頁符
odd-page
顯示引擎插入乙個分頁符(或兩個,如有必要的話),以便這一塊在奇數頁上開始。換句話說,如果乙個分頁符會使這個塊在偶數頁上開始的話,fop 會插入第二個分頁符。
even-page
顯示引擎插入乙個分頁符(或兩個,如有必要的話),以便這一塊在偶數頁上開始。
widows 特性定義了當乙個塊在頁面底部開始顯示時,必須一起出現的最小行數;預設值是 2。
orphans 特性定義了當乙個塊在當前頁面顯示不下時其最後幾行在下頁頂部顯示時必須一起出現的最小行數。其預設值也是 2。
10、圖形
外部的gif/jpg/svg檔案,可以用來指定。svg檔案可以嵌入fo檔案本身,用.只有把這些元素單獨放到block中才能有換行的效果。
11、水平線
用來實現,有屬性leader-pattern,可取值space/rule/dots分別表空白/實線/虛線,有屬性leader-length指明長度,預設忹列等寬。
xsl-fo學習筆記(2)
參考文獻:
1、fop主頁
2、xsl 格式化物件(xsl-fo)基礎知識
3、xsl規範
學習XSL FO 區域
xsl fo 使用矩形框 區域 來顯示輸出。xsl 格式化模型定義了一系列的矩形區域 框 來顯示輸出。所有的輸出 文字 等等 都會被格式化到這些框中,然後會被顯示或列印到某個目標媒介。讓我們研究一下下面這些區域 xsl fo 輸出會被格式化到頁面中。列印輸出通常會分為許多分割的頁面。瀏覽器輸出經常會...
學習筆記1
struct test test int x void fun class test1 test1 int x void fun int main void test1 a 行1 a.fun 行2 test1 b 行3 b.fun 行4 test c 行5 c.fun 行6 test d 行7 d....
學習筆記1
1 字串原地逆序 使用臨時變數 void reverse string s 5 求平均值 避免溢位 int f int x,int y 6 楊氏矩陣 bool young int a m n int x return false 7 十進位制轉十六進製制 string decimaltohexade...