科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle XML Publisher与JDeveloper 10g集成

Oracle XML Publisher与JDeveloper 10g集成

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

2006 年 11 月发布 Oracle XML Publisher 是基于 XSL-FO 的 Oracle 报表工具,它包含一个 GUI 和一组核心 API 组件。

作者:中国IT实验室 来源:中国IT实验室 2007年10月7日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

    我们将使用 XSLT 文件 (catalog.xsl) 为输入 XML 文件生成 XSL-FO 文件,然后合并这些 XSL-FO 文件以生成单个 XSL-FO 文件。

为要通过输入 XML 和 XSLT 文件生成的 XSL-FO 文件创建 InputStream 对象数组:

InputStream[] input = new InputStream[2]; 

    通过 XSL-FO Utility 的主要类 FOUtility,根据输入 XML 和 XSLT 文件创建 XSL-FO 文件。使用静态方法 createFO(java.lang.String xmlFile,java.lang.String xslFile) 创建 XSL-FO 文件:

InputStream firstFOStream =  FOUtility.createFO("catalog2.xml", 
"catalog.xsl");InputStream secondFOStream = 
FOUtility.createFO("catalog3.xml",  "catalog.xsl"); 

在 InputStream 数组中设置 XSL-FO InputStream 对象:

Array.set(input, 0, firstFOStream);
Array.set(input, 1, secondFOStream);

使用静态方法 mergeFOs() 合并 XSL-FO InputStream 对象:

InputStream mergedFOStream = FOUtility.mergeFOs(input, null);

创建 FOProcessor 对象,以便通过合并的 XSL-FO 文件生成 PDF 报表:

FOProcessor processor = new FOProcessor();

在 FOProcessor 对象上设置合并的 XSL-FO InputStream:

processor.setData(mergedFOStream); 

如果将 XSL-FO 文件指定为 FOProcessor 的数据源,则不需要设置 XSLT 文档。将 XSLT 模板设置为 null:

processor.setTemplate((String)null); 

设置输出 PDF 文件和输出格式,并生成 PDF 报表:

processor.setOutput("catalog2.pdf");
processor.setOutputFormat(FOProcessor.FORMAT_PDF);
processor.generate();

您将在示例代码中找到 PDF 报表 (catalog2.pdf),该报表是通过合并的 XSL-FO InputStream 生成的。

PDF Document Merger

     有时,您必须合并 PDF 文档。PDF Document Merger 用于合并 PDF 文档,还可以为合并的文档添加页码。在本部分中,我们将合并在前面部分中生成的 catalog.pdf 和 catalog2.pdf。

首先,根据 catalog.pdf 和 catalog2.pdf 创建一个 InputStream 数组:

FileInputStream[] inputStreams = new FileInputStream[2];
inputStreams[0] = new FileInputStream("catalog.pdf");
inputStreams[1] = new FileInputStream("catalog2.pdf");

为合并的 PDF 文档创建 FileOutputStream:

FileOutputStream outputStream = new FileOutputStream("catalog3.pdf");

合并 PDF 文档与 PDFDocMerger 类:

PDFDocMerger pdfMerger = new PDFDocMerger(inputStreams, outputStream); 

要添加页码,应指定页码坐标和页码字体:

pdfMerger.setPageNumberCoordinates(300, 20);
pdfMerger.setPageNumberFontInfo("Courier", 10); 

    使用 setPageNumberValue(int initialValue, int startPageIndex) 方法设置页码值。initialValue 指定页码的初始值。startPageIndex 指定从哪个页码开始编号:

pdfMerger.setPageNumberValue(1, 1); 

运行 PDF Document Merger:

pdfMerger.process(); 

您将在示例代码中找到合并后的 PDF 文档 (catalog3.pdf)。

Data Engine

    Data Engine API 可以使用数据库数据创建 XML 文档。DataProcessor 类用于从数据模板生成 XML 文档。该模板是一个 XML 文件,可以指定输入参数、从数据库检索数据的 SQL 查询以及要生成的 XML 文档的数据结构。与 XML SQL Utility(也是从数据库生成 XML 文档)相比,Data Engine API 的一个优势是可让您在 XML 文档中生成元素的层次结构。表 3 列出了一些在数据模板中常用的元素。

表 3. 数据模板元素

元素 说明 属性

dataTemplate(必需)

根元素

name(必需)
version(必需)

parameters

指定 SQL 查询的输入参数,由 <parameter> 元素组成。参数值可以在运行时设置。

name(必需)
dataType ― 值可以是“character”、“date”或“number”。默认值是“character”。

dataQuery(必需)

指定从数据库检索数据的 SQL 查询,由 <sqlstatement> 元素组成。

-

sqlstatement(必需)

指定 SQL 语句。

name(必需)

dataStructure(对于多个查询是必需的)

定义输出 XML 的结构,由 <group> 和 <element> 元素组成。如果没有为单个查询指定,则输出 XML 由与 SQL 查询中的列相对应的元素组成。

-

group

指定一组元素和子组。元素的层次结构可以通过子组元素指定。

name(必需)
source(必需)― 指定从中派生组元素的相应 SQL 语句的查询标识符。

element(必需)

指定输出 XML 文档中的元素。

name(必需)
value(必需)― 指定 SQL 语句的列名。

 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章