`

xml + xslt => html => pdf

阅读更多

    继上一篇:使用java将xml格式化,本blog主要描述如何通过xslt将xml渲染为html(包含CSS),然后再

将html转为pdf.

    如果你想了解更多xslt信息,请点击链接xslt。本程序直接使用javax.xml.transform.Transformer将howto.xsl通过数据源howto.xml渲染并保存为howto.html,然后通过第三方开源软件http://code.google.com/p/flying-saucer/将生成的XHTML转换为pdf.(注意:任何标签都必须闭合,否则flying-Saucer做XML解析会报错)

     主要代码如下(程序已经上传):

    howto.xml:

<?xml version="1.0"?>
<products>
   <product href="http://www.playfield.com/text">
      <name>Playfield Text</name>
      <price currency="usd">299</price>
      <description>Faster than the competition.</description>
      <version>1.0</version>
   </product>
   <product href="http://www.playfield.com/virus">
      <name>Playfield Virus</name>
      <price currency="eur">199</price>
      <description>
         Protect yourself against malicious code.
      </description>
      <version>5.0</version>
   </product>
   <product href="http://www.playfield.com/calc">
      <name>Playfield Calc</name>
      <price currency="usd">299</price>
      <description>Clear picture on your data.</description>
      <version>1.5</version>
   </product>
   <product href="http://www.playfield.com/db">
      <name>Playfield DB</name>
      <price currency="cad">599</price>
      <description>Organize your data.</description>
   </product>
</products>

    howto.xsl:

    

<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:htm="http://www.w3.org/1999/xhtml" 
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes"/>   
<xsl:template match="/products">  
	<html ang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
      <head>
         <title>Cascading Style Sheet</title>
         <link rel="stylesheet" type="text/css" href="table.css" title="Style"/>
      </head>
      <body>
        <table>
          <tr class="header">
             <td>Name</td>
             <td>Price</td>
             <td>Description</td>
          </tr>
          <xsl:apply-templates/>
        </table>
      </body>
   </html>
</xsl:template>

<xsl:template match="product[position() mod 2 = 1]">
   <tr class="odd">
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="price"/></td>
      <td><xsl:value-of select="description"/></td>
   </tr>
</xsl:template>

<xsl:template match="product">
   <tr class="even">
      <td><xsl:value-of select="name"/></td>
      <td><xsl:value-of select="price"/></td>
      <td><xsl:value-of select="description"/></td>
   </tr>
</xsl:template>

</xsl:stylesheet>

    table.css:

    

.header { background-color: #999999; font-weight: bold; }
.odd { background-color: normal; }
.even { background-color: #dfdfdf; }

 

 

  

package sunflowerbbs.com;

import javax.xml.transform.*;

import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;

import java.io.*;

public class HowToXSLT {
	public static void main(String[] args) throws Exception{
		try {

			TransformerFactory tFactory = TransformerFactory.newInstance();

			Transformer transformer = tFactory
					.newTransformer(new javax.xml.transform.stream.StreamSource(
							"howto.xsl"));

			transformer.transform(new javax.xml.transform.stream.StreamSource(
					"howto.xml"), new javax.xml.transform.stream.StreamResult(
					new FileOutputStream("howto.html")));
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		convertHtmlToPdf("howto.html","product.pdf");
		
	}

	public static boolean convertHtmlToPdf(String inputFile, String outputFile)
			throws Exception {

		OutputStream os = new FileOutputStream(outputFile);
		ITextRenderer renderer = new ITextRenderer();
		String url = new File(inputFile).toURI().toURL().toString();

		renderer.setDocument(url);

		// 解决中文支持问题
		// ITextFontResolver fontResolver = renderer.getFontResolver();
		// fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC",
		// BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
		// 解决图片的相对路径问题
		// renderer.getSharedContext().setBaseURL("file:/D:/");
		renderer.layout();
		renderer.createPDF(os);

		os.flush();
		os.close();
		return true;
	}

}

 

0
0
分享到:
评论

相关推荐

    Xml+Xslt测试工具

    XML是一种标记语言,它允许数据以结构化的方式进行组织,而XSLT则是一种专门用于转换XML文档的语言,可以将XML数据转化为不同的格式,如HTML、PDF或纯文本,以适应不同的展示需求。 XML的核心概念包括元素、属性、...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 ...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    1.4 xml与html的比较 4 1.4.1 xml将数据与显示分开 5 1.4.2 xml对文档的格式要求更加严格 6 1.4.3 xml有且只能有一个根元素 6 1.5 xml的编辑工具 7 1.6 xml文档 8 1.6.1 xml声明 9 1.6.2 文档类型声明 10 ...

    xml+xslt + js表格排序

    2. **XSLT的使用**:XSLT是一种强大的样式表语言,用于将XML文档转换成其他格式,如HTML、PDF或纯文本。在本案例中,XSLT模板被用来把XML数据转换成一个HTML表格,使得数据可视化。 3. **HTML表格**:HTML表格是...

    XML+XSLT+CSS+JQuery+WebService组建Asp.Net网优点

    通过XSLT,开发者可以在客户端或服务器端将XML文档转换为其他格式的文档,如HTML或PDF等。这极大地增强了Web页面的灵活性,可以根据用户需求动态调整页面布局和样式,提高用户体验。 #### 四、CSS:美化界面设计 *...

    XML笔记+XSLT中文入门

    XSLT能够将XML文档转换成其他格式,如HTML、PDF或纯文本,甚至可以转换为其他XML文档。它通过XPath(XML Path Language)来定位XML文档中的节点,并使用模板来定义转换规则。XSLT的核心概念包括模板、模式匹配和变量...

    xslt,xpath的例子和语法。非常全面。对于学习xml+xslt技术的人一定有帮助

    XSLT是一种强大的工具,用于将XML文档转换成不同的格式,如HTML、PDF或者其他的XML文档。XSLT基于XML语法,通过使用模板和模式匹配来定义转换规则。 1. **模板(Templates)**:模板是XSLT的核心,它定义了如何处理...

    Javascript+Xslt解析Xml为Html的方法[参照].pdf

    在软件开发中,JavaScript和XSLT(可扩展样式表语言转换)是一种常见的组合,用于将XML数据转换为HTML,以便在网页上呈现。本文将详细解释如何利用这两种技术实现XML到HTML的解析。 首先,XML(可扩展标记语言)是...

    Javascript+Xslt解析Xml为Html的方法.pdf

    在Web开发中,JavaScript和XSLT(eXtensible Stylesheet Language Transformations)是两种强大的技术,它们可以用来处理XML数据并将其转化为HTML格式,以便在浏览器中显示。本文将详细探讨如何使用JavaScript与XSLT...

    xml入门经典(xslt部分)

    XSLT(eXtensible Stylesheet Language Transformations)则是处理XML文档的一种强大的样式表语言,主要用于将XML文档转换成其他形式,如HTML、PDF或者不同的XML结构。在本教程中,我们将深入探讨XSLT的基础知识及其...

    xml+xsl+css+dtd书写的个人网页

    XSLT(XSL Transformations)是XSL的一部分,专门用于将XML文档转换成其他格式,如HTML、PDF或文本。在这个个人网页项目中,XSLT可能被用来根据XML数据生成不同的页面视图,使页面布局和设计符合预期。 CSS...

    XML$XSLT$HTML$JAVASCRIPT转换实例

    XSLT(XSL Transformations)是用于转换XML文档的语言,它可以将XML数据转换成其他格式,如HTML、PDF或纯文本。XSLT使用模板匹配和模式规则来定义如何转换源XML文档。通过这种方式,XML数据可以根据需求转换成适合...

    XML XML Schema XSLT 2.0和XQuery开发详解源代码.rar

    通过XSLT,可以将XML数据转换成其他格式,如HTML、PDF或CSV,以适应不同的展示需求。 XQuery是一种查询XML数据的语言,类似于SQL用于关系数据库。XQuery 2.0也是其第二个版本,增加了更多功能,如更好的类型系统、...

    xslt控制xml样式并被html、c#后台调用

    此时,XSLT(可扩展样式表语言转换)应运而生,它是一种用于转换XML文档的样式表语言,使得XML数据能够以更友好的形式呈现,如HTML或PDF。本文将深入探讨如何利用XSLT控制XML的样式,并详述XML与XSLT如何在HTML界面...

    Delphi下最好用的XML/XSLT组件DIXML最新版本无需密码效率超高

    2. **XSLT转换**:XSLT用于将XML文档转换为其他格式,如HTML、PDF或新的XML结构。DIXML组件集成了XSLT引擎,使得在Delphi中进行复杂的XML到XML或XML到HTML的转换变得轻松简单。 3. **易于使用**:DIXML组件的API...

    XML+XSL/FO生成PDF文件Demo

    在提供的压缩包文件“Fop2Pdf”中,可能包含了XML数据文件、XSLT转换样式表、FOP的配置文件或者示例代码,帮助用户了解并实践XML到PDF的转换过程。通过研究这些文件,你可以学习如何设置XML结构,编写XSLT转换规则,...

    精通ASP.NET+XML+CSS网络开发混合编程

    通过XPath、XSLT和LINQ to XML等技术,开发者可以方便地操作和处理XML文档。 CSS(Cascading Style Sheets)则是用于描述HTML或XML(包括SVG、MathML等各种XML方言)文档样式的语言。CSS使开发者能独立于内容来定义...

    javascript xml xsl xslt

    XSLT是用于转换XML文档到其他XML文档或非XML格式(如HTML或PDF)的语言,它通过匹配模板来定义转换规则。XPath则是用于在XML文档中查找信息的语言,它提供了路径表达式来选取节点或者节点集。 XSLT是XSL的一部分,...

    xml教程<<无废话xml>>

    - XSLT用于转换XML文档,可以将一个XML文档转换为另一个XML文档或任何其他格式(如HTML、PDF等)。 #### 4. XPath - XPath是一种在XML文档中查找信息的语言,用于定位和提取特定节点。 ### Unicode编码 - **定义*...

Global site tag (gtag.js) - Google Analytics