plate.FOProcessor根据xml、xsl(rtf)动态生成pdf

阅读: 评论:0

plate.FOProcessor根据xml、xsl(rtf)动态生成pdf

plate.FOProcessor根据xml、xsl(rtf)动态生成pdf

1.制作模板

使用Oracle_BI_Publisher

Oracle_BI_Publisher中文开发教程(创建RTF模板)

2.用xml,xsl(rtf)动态生成pdf

api文档:

FOProcessor (Oracle Fusion Middleware Java API Reference for Oracle Business Intelligence Publisher)

3.分析模板使用office插件,用32位,64位用不了:

Oracle Analytics Publisher - Downloads | Oracle Technology Network | Oracle

 

打开rtf模板

 

4.根据rtf模板构建xml


Node root = Node.getDefault();
root.addNode("_XDONFSEPARATORS",".");
root.addNode("COMPANY_NAME","公司名称");
root.addNode("ASN_HEADER_QR_CODE","公司名称");
root.addNode("ASN_NUM","公司名称");
root.addNode("SUPPLIER_NAME","公司名称");
root.addNode("SHIP_DATE","公司名称");
root.addNode("ORGANIZATION_NAME","公司名称");
root.addNode("PURCHASECONTACTOR","公司名称");
root.addNode("EXPECTED_ARRIVE_DATE","公司名称");
root.addNode("SHIP_TO_LOCATION_ADDRESS","公司名称");
root.addNode("ATTRIBUTE_VARCHAR37","公司名称");
Node asnLines = root.addNodeGroup("asnLines");
asnLines.addNode("ASN_LINE_NUM","行数据");
asnLines.addNode("DISPLAY_PO_NUM","行数据");
asnLines.addNode("DISPLAY_LINE_NUM","行数据");
asnLines.addNode("ITEM_CODE","行数据");
asnLines.addNode("ITEM_NAME","行数据");
asnLines.addNode("SHIP_QUANTITY","行数据");
asnLines.addNode("UOM_NAME","行数据");
asnLines.addNode("LOT_NUM","行数据");
asnLines.addNode("PACKAGE_QUANTITY","行数据");
asnLines.addNode("PRODUCTION_DATE","行数据");
asnLines.addNode("TANKNUMBER","行数据");
asnLines.addNode("QUANTITYTYPE","行数据");
asnLines.addNode("REMARK","行数据");
Node asnLines2 = root.addNodeGroup("asnLines");
asnLines2.addNode("ASN_LINE_NUM","行数据2");
asnLines2.addNode("DISPLAY_PO_NUM","行数据2");
asnLines2.addNode("DISPLAY_LINE_NUM","行数据");
asnLines2.addNode("ITEM_CODE","行数据");
asnLines2.addNode("ITEM_NAME","行数据");
asnLines2.addNode("SHIP_QUANTITY","行数据");
asnLines2.addNode("UOM_NAME","行数据");
asnLines2.addNode("LOT_NUM","行数据");
asnLines2.addNode("PACKAGE_QUANTITY","行数据");
asnLines2.addNode("PRODUCTION_DATE","行数据");
asnLines2.addNode("TANKNUMBER","行数据");
asnLines2.addNode("QUANTITYTYPE","行数据");
asnLines2.addNode("REMARK","行数据");
System.out.println(root.asXML());

//本地测试
public void localTest(Node node){InputStream xslByteArrayInputStream = null;try {//本地测试用到,后期删除ByteArrayOutputStream xslByteArrayOutputStream = new ByteArrayOutputStream();RTFProcessor rtfProc = new RTFProcessor("D://f");rtfProc.setOutput(xslByteArrayOutputStream);rtfProc.process();xslByteArrayInputStream = new ByteArray());InputStream xmlInputStream = generateXML(node.asXML());FOProcessor processor = new FOProcessor();processor.setData(xmlInputStream);processor.setTemplate(xslByteArrayInputStream);processor.setOutputFormat(FOProcessor.FORMAT_PDF);processor.setOutput("D://test.pdf");processor.setLocale(Locale.CHINA);processor.setConfig(getProperties());ate();} catch (Exception e) {throw new Message());}
}/*** 自定义配置* 本地测试* @return*/
public Properties getProperties() {Properties prop = new Properties();setFontProperties(prop);return prop;
}//设置pdf可以支持的字体,本地测试
public void setFontProperties(Properties prop) {String resourcePath = ClassLoader().getResource("fonts").getPath();prop.put("font.黑体.al", "truetype." +resourcePath + "/f");prop.put("font.仿宋.al", "truetype." +resourcePath + "/f");prop.put("font.楷体.al", "truetype." +resourcePath + "/f");prop.put("font.宋体.al", "truetype." +resourcePath + "/");
}

5.本地调试可能导出都是?乱码,原因:字体文件没找到

prop.put("font.黑体.al", "truetype.D://f");

本文发布于:2024-02-03 04:49:34,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170690697448755.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:动态   template   FOProcessor   oracle   xdo
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23