第12章 XSL-FO格式化輸出PDF 12-1 XSL-FO的基礎 12-2 XSL-FO的文件架構 12-3 XSL-FO的頁面範本

Slides:



Advertisements
Similar presentations
教师队伍建设 组员:王英利 赵香媖 侯娟. 主讲内容 2. 中小学教师队伍建设 1. 职业教育师资队伍建设国际比较 3. 高校教师队伍建设与管理.
Advertisements

政治全球化 促進國際間的了解, 抑或加劇了種族、宗教、文化和政 治實體之間的衝突 ?. 政治全球化 指一個國家或國際的政治事務,由一國或少數國家決定的模 式,逐漸過渡至複雜的跨國以至全球決策模式 政治活動和政治決策跨越國家界限.
应用地球物理卓越人才培养体系构建与实践 吉林大学地球探测科学与技术学院 刘 财 经验交流.
全国青少年科技创新大赛 科技辅导员项目组织与实施
提 纲 三次考察与改革的回顾 1 学院三周来的新面貌 及下一步工作思路 2 凝心聚力、团结协作、狠抓落实 3.
——以通渭县图书馆青树小项目“携老上网游”为例
第六章 网页设计与制作基础.
广州市档案专业技术资格 申报评审有关事项 姓名:付建华 联系电话: 联系地址:广州市番禺区大学城档案馆路33号A403科教处
102學年度 多元入學 大 學.
第八章 收益分配决策补:案例,习题 本章结构、主要内容、重点难点: 收益分配的原则;程序 收益分配的政策: 影响股利的因素 股利政策的种类
湖南省科学技术奖励 推荐工作要求.
牛津大学出版社产品介绍 培训师:周晨 2013年5月29日.
智学网账号登录 1、打开网页,在地址栏里输入 2、点击登录,输入用户名和密码,即可登录:
2013浙江省行测专题 密卷解析及备考冲刺 罗 姮.
Word高级应用——制作毕业论文 Word高级应用——制作毕业论文 6..
第 4 章 社會中的文化 一、文化的意義與特徵 二、文化的內涵 三、次文化 四、文化的傳承與創新 課後複習 歷屆基測試題.
第5章 HTML 標籤介紹.
通訊科技教育改進計畫 「網路應用與服務組」 行動電子商務課程 XML之簡介.
情緒行為障礙之教學與輔導 新竹縣情緒障礙巡迴教師 陳弘念.
在系統完成資料填報後 系統產生所有表件請全數印出 如下載的表件為「空白」文件,請安裝PDF中文字型 ★系統參考畫面:
DREAMWEVAER MX 2004入门 楼斌 BBS ID:lou 生命科学学院
第8章 CSS基础知识 【学习目标】 对于一个网页设计者来说,对HTML语言一定不感到陌生,因为它是网页制作的基础,但是如果希望网页能够美观、大方,并且升级维护方便,那么仅仅知道HTML还是不够的,还需要了解CSS。了解CSS基础知识,可以为后面的学习打下基础。 本章主要内容包括: 为什么在网页中加入CSS。
五年級上學期 體育課教學方案 設計者:吳文芳.
2 HTML5與CSS3 2-1 HTML5的頁面結構 2-2 HTML5的文字編排標籤 2-3 HTML5的圖片與超連結標籤
广东省高新技术企业培育库入库企业认定(第二批)工作介绍
文学名作与影视改编 郁达夫文学作品及相关影视赏析 授课教师 胡芳.
XML 第05讲 使用CSS显示XML.
第三章 心理安全 广西师范大学 罗蕾.
第五单元课1-3 层叠样式表.
CSS – 進階 IDIC.
时间管理 -----高一团体辅导.
财务报表无纸化网上报送培训.
使用HTML製作個人網頁 柴惠敏 台灣大學 物理治療學系.
組長:呂淑君 組員:邱采王亭 吳仁傑 池姿霖 楊佩慈
关注空巢老人的心理健康 525宿舍.
纳税人学校课件天地第201413期 外贸企业出口退税培训(201408新办) 授课老师:外聘 上海市嘉定区国家税务局
网页编程基础 曾宪文,Rex Zeng 纸飞机网络技术部部长 Leader of ACE.
第二章 網際網路網頁的設計.
第四章 样式表CSS CSS技术是一种格式化网页的标准方式,它通过设置CSS属性债周页元素获得各种不同效果。本章共分9个实例,主要内容包括的基础知识、CSS创建与导入、CSS的语法结构、常用CSS的分类、CSS的使用原则等内容。
第8章 样式表.
HTML5全栈开发序列课程 《前端入门》之HTML入门 余鹏作品.
标准规范 2.自己偏好习惯 3.讨论/建议 永远遵循同一套编码规范 -- 不管多少人同时参与编码,所有代码都应该看上去像是一个人编写的一样。
第 3 章 XML文件的轉換 –XSLT與XPath
HTML網頁設計 Chapter 建置網站的流程 16-2 從事網頁設計相關的程式語言 16-3 認識HTML語法
HTML 钟晖云 QQ:
Ch.13 HTML網頁實作.
8 网页制作基础知识 赵国庆 博士 北京师范大学教育技术学院
XSL: Extensible Stylesheet Language
Web前端开发技术与实践 第10章:盒子模型 阮晓龙 /
人生哲理 每一句話都充滿著智慧,值得和朋友們分享、共勉~ <每隔 6 秒,自動換頁 !!>
主讲:陶建平 华中科技大学网络与计算中心
第六章 安全衛生工作守則 6-1 前 言  6-2 訂定依據相關法令規定  6-3 工作守則製作程序及製作前應注意事項  6-4 如何訂定適合需要之安全衛生工作守則  6-5 結 論.
2007年6月號 e-Care newsletter 電子通訊
W3C标准网页制作 主讲教师:张 涛.
现代教育技术部 张建威
程式語言與邏輯 高慧君 台北市立南港高中 2006年12月22日.
蓝色图示 — 无动画版.
爱心志愿者服务系统 操作指引 设计:东莞市爱心志愿者协会 网络中心 胡连甲 技术支持电话与微信:
第 1 章 簡介XML.
全文检索 墨香简介 平台功能 产品优势 产品对比
C# 基本語法、變數.
108新課綱教學目標與特色 (一)強化務實致用 (二)落實課程連貫 (三)深化基本職能 (四)符應產業需求 考招連動配套 部定實習科目
102學年度大學個人申請入學 招生審查資料上傳作業說明
蓝色PPT图示 1 2.
Format of Posters in English
项目一 了解网站的概念 项目二 创建个人网站“鸿渐工作室” 项目三 制作“鸿渐工作室”的主页 项目四 HTML语言 项目五 制作“家乡特产”网页 项目六 制作“给我留言”网页 项目七 制作“应用技巧”网页 项目八 模板制作及应用.
西南科技大学网络教育系列课程 动态网页设计(JSP) 补充 JSP操作XML文件.
第17章 PHP應用實例探討 17-1 PHP應用實例探討 17-2 圖片版的訪客計數 17-3 訪客留言簿 17-4 聊天室
教师:李金双 网页制作 教师:李金双
Presentation transcript:

第12章 XSL-FO格式化輸出PDF 12-1 XSL-FO的基礎 12-2 XSL-FO的文件架構 12-3 XSL-FO的頁面範本 12-8 應用實例:XSL-FO與XSLT

12-1 XSL-FO的基礎 什麼是XSL-FO 如何從XML文件產生PDF文件 XSL-FO工具與引擎

什麼是XSL-FO XSL-FO(Extensible Stylesheet Language Formatting Objects)是一種XML語法的語言來格式化XML資料,在2001年10月15日成為W3C的建議規格。 XSL-FO語言可以視為XML預設的樣式語言XSL(Extensible Stylesheet Language),標準的樣式語言包含轉換和格式化資料的功能,簡單的說,XSL包含轉換和格式化XML文件的語法。在2000年11月W3C工作小組將XSL分成三種建議規格,如下所示: XSLT:轉換XML文件的語言。 XPath:查詢XML文件中的部分資料。 XSL-FO:格式化XML文件的語言。

如何從XML文件產生PDF文件-1 在實作上,我們並不會直接建立XSL-FO文件,而是透過XSLT Script將XML文件轉換成XSL-FO,然後格式輸出成PDF檔案,如下圖所示:

如何從XML文件產生PDF文件-2 將XML文件轉換成PDF的步驟,如下所示: 步驟一:XML+XSLT轉換成XSL-FO 第一步是將XML文件內容轉換成XSL-FO文件,我們可以使用XSLT Script將XML文件透過XSLT處理器轉換成XSL-FO文件。 步驟二:XSL-FO格式化成PDF 當轉換成XSL-FO文件後,可以使用XSL-FO引擎(Formatting Engine)格式化輸出成PDF檔案格式。

XSL-FO工具與引擎 XSL-FO Debugger是Altsoft公司的免費XSL除錯工具,屬於.NET Framework平台的應用程式,它是使用Altsoft的Xml2PDF格式化引擎來將XSL-FO文件或是XML和XSLT Script轉換輸出成PDF檔案。

12-2 XSL-FO的文件架構 第一份XSL-FO文件 XSL-FO格式模型

第一份XSL-FO文件-1 XSL-FO文件的副檔名為.fo或.fob,或是和XML文件相同的.xml,在本章是使用.fo副檔名。XSL-FO文件的根標籤是<fo:root>,在根標籤宣告名稱空間字首fo,XSL-FO預設的URI,如下所示: http://www.w3.org/1999/XSL/Format

第一份XSL-FO文件-2 <?xml version="1.0" encoding="UTF-8"?> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="page1"…>………… </fo:simple-page-master> <fo:simple-page-master master-name="page2"…>……… <fo:page-sequence-master> ……… </fo:page-sequence-master> </fo:layout-master-set>

第一份XSL-FO文件-3 <fo:page-sequence master-reference="page1"> <fo:title>………</fo:title> <fo:static-content…>…</fo:static-content> <fo:flow…>………</fo:flow> </fo:page-sequence> <fo:page-sequence master-reference="page2"> </fo:root>

第一份XSL-FO文件-4 fo:layout-master-set元素:定義頁面範本的版型,每一個fo:simple-page-master子元素可以定義一個頁面的尺寸和邊界等版面配置資訊,以此例是名為page1和page2兩頁頁面範本。對於多頁面範本,我們需要使用fo:page-sequence-master子元素定義各頁面範本出現的順序和次數。 fo:page-sequence元素:使用master-reference屬性對應指定的頁面範本名稱,其內容就是此頁顯示的內容,內含fo:title、fo:static-content和fo:flow子元素,分別顯示標題、固定內容和頁面內容。

第一份XSL-FO文件-5 XSL-FO的格式物件 在XSL-FO文件的元素就是XSL-FO的「格式物件」(Formatting Objects),其樹狀結構如下圖所示:

XSL-FO格式模型-1 XSL-FO格式模型(XSL Formatting Model)是由長方形的地區(Areas)組成,XSL-FO引擎將輸出內容的文字、空白字元、圖形和其它格式物件格式編排進入這些地區,如下圖所示:

XSL-FO格式模型-2 區域地區(Region Area):在每一個XSL-FO頁面包含5個區域,相當於Word文件的頁首、本文和頁尾部分。XSL-FO定義區域的格式物件為fo:region-body、fo:region-before、fo:region-after、fo:region-start和fo:region-end。 區塊地區(Block Area):在XSL-FO的區域包含區塊,在區塊之中可以擁有其它區塊,每一個區塊是使用斷行符號來分割,我們可以將區塊視為是一個段落、表格或清單。XSL-FO定義區塊的格式物件有fo:block、fo:table和fo:list-block。

XSL-FO格式模型-3 行地區(Line Area):行代表區塊中的一行,例如:清單中的每一個項目就是行地區,XSL-FO並沒有對應的格式物件,其目的主要是讓XSL-FO引擎能夠計算區塊中行地區的大小,以便在區塊中正確的換行。 行內地區(Inline Area):行內地區是位在行地區之內,例如:一個字、片語和公式等。在XSL-FO可以定義行內地區的格式物件有fo:inline、fo:external-graphic、fo:leader和fo:page-number等。

12-3 XSL-FO的頁面範本 簡單頁面範本 頁面區域範本

簡單頁面範本-1 XSL-FO的簡單頁面範本是fo:simple-page-master格式物件,這是fo:layout-master-set的子元素,可以使用fo:simple-page-master定義頁面範本。 在XSL-FO 1.0版只定義一種簡單頁面範本,也就是一頁長方形的頁面,如下所示: <fo:simple-page-master master-name="myPage" page-width="8.5in" page-height="11in" margin-top="20pt" margin-bottom="20pt" margin-left="50pt" margin-right="50pt"> <fo:region-body region-name="region-body" margin-bottom="25pt" margin-top="250pt"/> </fo:simple-page-master>

簡單頁面範本-2 以此例,我們定義一頁8.5in X 11in大小的頁面,上下邊界20pt,左右邊界50pt的長方形地區,如下圖所示:

簡單頁面範本-3 fo:simple-page-master元素常用的屬性說明,如下表所示:

頁面區域範本-1 在XSL-FO的頁面共分為上、下、左、右和中間五個區域,如下圖所示:

頁面區域範本-2 5個區域的格式物件名稱都是fo:simple-page-master的子元素,如下所示: <fo:region-before region-name="region-before" extent="25pt"/> <fo:region-after region-name="region-after" extent="25pt"/> <fo:region-body region-name="region-body" margin-bottom="25pt" margin-top="250pt"/> <fo:region-start region-name="region-start" extent="25pt"/> <fo:region-end region-name="region-end" extent="25pt"/>

頁面區域範本-3 格式物件相關屬性如下表所示:

12-4 XSL-FO的頁面內容 XSL-FO的頁面內容 頁面內容fo:title和fo:flow 靜態內容fo:static-content 頁碼fo:page-number

XSL-FO的頁面內容 接下來,我們就可以針對指定範本定義頁面的實際內容,也就是一至多個fo:page-sequence格式物件,如下所示: <fo:page-sequence master-reference="myPage"> ……… </fo:page-sequence> 在fo:page-sqeuence元素之下依序擁有3個子元素,如下所示: fo:title:這是可有可無的元素,用來指定文件標題,其功能類似HTML/XHTML語言的title標籤。 fo:static-content:可以有0到多個fo:static-content元素,這是每一頁都擁有的固定內容。 fo:flow:可以擁有1個且只有1個fo:flow元素,用來定義每一個頁面範本顯示的內容。

頁面內容fo:title和fo:flow XSL-FO的fo:title元素可以指定文件標題,如下所示: <fo:title>Ch12-4-1.fo</fo:title> XSL-FO的fo:flow元素內容是頁面的實際內容,它是fo:page-sqeuence元素的子元素,而且只能有一個,如下所示: <fo:flow flow-name="region-body" font-family="SimHei"> <fo:block font-size="36pt" line-height="40pt"> ………… </fo:block> …………… </fo:flow>

靜態內容fo:static-content-1 在fo:flow元素的內容只會出現在文件的某一頁,fo:static-content元素的內容則可以出現在每一頁。換句話說,fo:static-content通常是用來顯示頁首和頁尾資訊,也就是置於region-before和region-after區域。

靜態內容fo:static-content-2 XSL-FO的fo:static-content元素是fo:page-sequence元素的子元素,其順序是在fo:title元素之後,fo:flow元素之前,同一個fo:page-sequence元素可以擁有0到多個fo:static-content子元素,如下所示: <fo:static-content flow-name="region-before"> <fo:block font-family="SimHei" font-size="44pt" line-height="50pt"> 陳會安的圖書清單 </fo:block> </fo:static-content>

頁碼fo:page-number-1 XSL-FO的fo:page-sequence元素可以指定頁碼的起始值和頁數,如下所示: <fo:page-sequence master-reference="myPage" initial-page-number="2"> …………… </fo:page-sequence> 上述fo:page-sequence元素除了master-reference屬性外,可以使用initial-page-number和force-page-count屬性來定義頁碼。

頁碼fo:page-number-2 在fo:page-sequence元素定義好頁碼後,就可以在行內區域使用fo:page-number元素插入頁碼,通常是顯示在fo:static-content元素的固定內容,如下所示: <fo:static-content flow-name="region-after"> <fo:block font-family="SimHei" font-size="30pt" line-height="36pt"> 第 <fo:page-number/> 頁 </fo:block> </fo:static-content>

12-5 XSL-FO的多頁面範本 XSL-FO的多頁面範本 依序使用多頁面範本 重複使用多頁面範本 交互使用多頁面範本

XSL-FO的多頁面範本-1 <fo:simple-page-master master-name="leftPage" page-width="8.5in" page-height="5in" margin-top="20pt" margin-bottom="20pt" margin-left="25pt" margin-right="50pt"> ……… </fo:simple-page-master> <fo:simple-page-master master-name="rightPage" margin-left="50pt" margin-right="25pt">

XSL-FO的多頁面範本-2 當在fo:layout-master-set元素定義多個fo:simple-page-master元素時,我們需要定義各頁面範本的出現順序,如下所示: <fo:layout-master-set> <fo:simple-page-master master-name="leftPage"… <fo:simple-page-master master-name="rightPage"… <fo:page-sequence-master master-name="myPage"> ………… </fo:page-sequence-master> </fo:layout-master-set>

XSL-FO的多頁面範本-3 在fo:page-sequence-master元素擁有三種子元素來定義各頁面範本的出現順序,如下所示: fo:single-page-master-reference fo:repeatable-page-master-reference fo:repeatable-page-master-alternatives

依序使用多頁面範本 XSL-FO的fo:single-page-master-reference元素可以在fo:page-sequence-master元素定義頁面範本依序出現的順序,如下所示: <fo:page-sequence-master master-name="myPage"> <fo:single-page-master-reference master-reference="leftPage"/> <fo:single-page-master-reference master-reference="rightPage"/> </fo:page-sequence-master>

重複使用多頁面範本 XSL-FO的fo:single-page-master-reference元素適用在已知頁數的文件,對於不確定頁數的情況,fo:repeatable-page-master-reference元素可以定義重複出現指定頁面範本和最大出現次數,如下所示: <fo:page-sequence-master master-name="myPage"> <fo:repeatable-page-master-reference master-reference="leftPage" maximum-repeats="2"/> <fo:single-page-master-reference master-reference="rightPage"/> </fo:page-sequence-master>

交互使用多頁面範本-1 XSL-FO的fo:repeatable-page-master-alternatives元素可以指定頁面範本依位置、交互或內容是否為空白頁來定義出現順序,特別適用在圖書封面、序、左頁和右頁都擁有不同頁面範本的情況。

交互使用多頁面範本-2 在fo:repeatable-page-master-alternatives元素是使用fo:conditional-page-master-reference子元素來指定參考的頁面範本,如下所示: <fo:page-sequence-master master-name="myPage"> <fo:repeatable-page-master-alternatives> <fo:conditional-page-master-reference odd-or-even="odd" master-reference="leftPage"/> odd-or-even="even" master-reference="rightPage"/> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master>

12-6 XSL-FO的段落內容 區塊fo:block 清單fo:list-block 表格fo:table

區塊fo:block XSL-FO的fo:block元素可以輸出一個長方形地區,用來輸出段落或是其它fo:block元素,如下所示: <fo:block font-size="36pt" font-family="SimHei" line-height="40pt" text-align="center" space-before="5pt" space-after="5pt"> 什麼是XSL-FO </fo:block>

清單fo:list-block-1 XSL-FO的清單是由四種格式物件所組成,各種清單格式物件的說明,如下所示: fo:list-block:建立清單,它是多個fo:list-item元素的父元素。 fo:list-item:建立清單的每一個項目,它是fo:list-item-label和fo:list-item-body的父元素。 fo:list-item-label:項目前的符號或編號。 fo:list-item-body:項目內容。

清單fo:list-block-2 <fo:list-block font-size="17pt" space-before="10pt" line-height="20pt"> <fo:list-item> <fo:list-item-label>…</fo:list-item-label> <fo:list-item-body start-indent="10pt"> ……… </fo:list-item-body> </fo:list-item> ………… …………… </fo:list-block>

表格fo:table-1 XSL-FO的表格也是由一組格式物件來組成,常用XSL-FO表格的格式物件對應XHTML表格標籤,如下表所示:

表格fo:table-2 <fo:table space-before="10pt" text-align="center"> <fo:table-column column-width="2in"/> <fo:table-header> <fo:table-row> <fo:table-cell border-style="solid" border-width="1pt"> ……… </fo:table-cell> border-width="1pt"> ……… </fo:table-row> </fo:table-header>

表格fo:table-3 <fo:table-body> <fo:table-row> ………

9-7 XSL-FO的文字內容 文字效果 插入水平線 新增圖片 建立超連結

文字效果 對於段落中的指定文字或片語,可以使用fo:inline格式物件來建立文字效果,如下圖所示: <fo:block font-size="36pt" font-family="SimHei" line-height="40pt" text-align="center" space-before="5pt" space-after="5pt"> 什麼是<fo:inline font-weight="bold" font-family="monospace" font-style="italic"> XSL-FO</fo:inline> </fo:block>

插入水平線 如同HTML/XHTML語言可以使用<hr/>標籤插入水平線,在XSL-FO是使用fo:leader格式物件來插入水平線,如下所示: <fo:block text-align="center"> <fo:leader leader-pattern="dots" leader-length="500pt"/> </fo:block>

新增圖片 XSL-FO的fo:external-graphic格式物件,相當於HTML/XHTML語言的<img/>標籤,可以在文件中新增圖片,如下所示: <fo:block text-align="center"> <fo:external-graphic src="Ch12-7-3.gif"/> </fo:block>

建立超連結 XSL-FO的fo:basic-link格式物件,相當於HTML/XHTML語言的<a>標籤,可以在文件中建立超連結文字,如下所示: <fo:block text-align="center" font-size="15pt" line-height="20pt" font-family="SimHei" space-before="25pt" space-after="25pt"> 中華電信公司: <fo:basic-link external-destination="http://www.hinet.net"> HiNet </fo:basic-link> </fo:block>