java 生成 rtf,JAVA实现BI报表中RTF模版转PDF
JAVA实现BI报表中RTF模版转PDF
功能背景,某监测实验室要求在信息系统中输出固定格式的PDF,让我想到BI Publisher中自定义rtf模版,通过BI的引擎生成PDF的功能。然后,我想到了java是不是可以实现这个功能。
rtftemplate【官网】
rtftemplate是rtf2rtf的引擎,若使用该引擎还需要将rtf转为pdf
RTF模版的定义规则与BI Publisher不一致。
BI Publisher API
该API由oracle随BI Pulisher for desktop的安装提供。
有完整的rtf2pdf功能,且有pdf数字签名等其他一些功能,功能丰富。
RTF模版的创建是高度自定义的
参与过BI rtf报表模版设计的人可以设计RTF模版(与 BI Publisher rtf模版设计一致)
package com.bip;
/*
* java version: 1.8_231
* lib route: BI_PUSBLISHER_ROOT\BI Publisher Desktop\Template Builder for Word\jlib
*/
import oracle.xdo.XDOException;
import oracle.xdo.template.FOProcessor;
import oracle.xdo.template.RTFProcessor;
import org.omg.CosNaming.BindingIterator;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
//rtf模版路径
String rtfPath = "C:\\EmpDataTemplate\\CS_accntpro.rtf";
//xsl样式表路径
String xslPath = "C:\\EmpDataTemplate\\CS_accntpro.xsl";
//xliff文件路径
String xliffPath = "C:\\EmpDataTemplate\\CS_accntpro.xliff";
//pdf文件路径
String pdfPath = "C:\\EmpDataTemplate\\CS_accntpro.pdf";
//数据路径
String xmlPath = "C:\\EmpDataTemplate\\test.xml";
//根据rtf模版生成xsl和xliff
initXSL(rtfPath,xslPath,xliffPath);
//根据xsl、xliff、xml数据生成pdf
processPdf(xslPath,xliffPath,xmlPath,pdfPath);
System.exit(0);
}catch (Exception e){
e.printStackTrace();
System.exit(1);
}
}
private static void processPdf(String xslPath, String xliffPath, String xmlPath, String pdfPath) throws XDOException {
//生成pdf
FOProcessor p1 = new FOProcessor();
p1.setXLIFF(xliffPath);// set xliff file, which is generated from RTFProcessor
p1.setData(xmlPath); // set data file
p1.setTemplate(xslPath); // set xsl file
p1.setOutput(pdfPath);
p1.generate();
}
private static void initXSL(String rtfPath,String xslPath,String xliffPath) throws IOException, XDOException {
//根据rtf生成xsl、xliff
RTFProcessor rp = new RTFProcessor(rtfPath);
rp.setOutput(xslPath);
rp.setXLIFFOutput(xliffPath);
rp.process();
}
}
遇到的问题
Q: 在编辑RTF模版时,使用了非英文字符时,根据RTF模版生成的PDF文件中非英文字符(中文、韩文等)显示成“?“
A: 原因为jre运行时缺少了RTF模版中所能使用的各种字体。将目录BI_PUSBLISHER_ROOT\BI Publisher Desktop\Template Builder for Word\fonts下的字体,拷贝到JRE_ROOT\lib\fonts中。 运行打包好的JAR包,问题解决。注意: 在开发工具中运行,仍不能正确转换
如需索要相关示例文件,请联系邮箱 535912841@qq.com
java 生成 rtf,JAVA实现BI报表中RTF模版转PDF相关推荐
- 【可食用】KeyTool生成KeyStore,证书、公钥、私钥文档JAVA生成,JAVA实现ECC签名验签
KeyTool生成KeyStore,证书.公钥.私钥文档JAVA生成,JAVA实现ECC签名验签 一.首先我们可以写个工具类生成密钥对.证书.公钥.私钥文本 jksAndCerGenerator.ja ...
- java 生成hprof,java – -XX:HeapDumpOnOutOfMemoryError未在OOM中创建hprof文件
我使用以下参数启动我的java代码(Vista中的1.6.0_16)-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = .. / logs.我运行代码, ...
- java生成读取csv,从csv文件中获取Gatling
加特林与馈线有很好的联系 . 当您提供错误的文件名或馈送文件的路径时,您将收到以下错误(java.lang.IllegalArgumentException:找不到馈送器文件) . 请注意,测试不会运 ...
- java开发页面超链接样式_Web报表中如何设置超链接的样式
Web报表中如何设置超链接的样式. 超链接是WEB项目中经常会用到的功能,如实现数据钻取,数据详细说明等.在WEB页面中,各种属性的数据是很多的,怎样对有超链接的数据与普通数据进行区别展现,让用户能一 ...
- 汇编在嵌入式编程中的作用_如何在嵌入式Power BI报表中以编程方式传递凭据
汇编在嵌入式编程中的作用 In the article, How to embed a Power BI Report Server report into an ASP.Net web applic ...
- java 生成 xml dtd_使用DTD文件中的JAXB生成Java类 – 如何修改DTD?
在他的回答中,mavrav似乎告诉DTD这是不可能的.我不太清楚如何使用DTD. 但是,如果可以,请在XML模式中翻译您的DTD. 我试着用这个谢玛: xmlns:hr="http://my ...
- Java生成pgp密钥对_在Javascript中生成PGP密钥对,并使用加密的PGP私钥对文本进行签名...
我写的东西是 needs to do electronic signatures. 有些用户会像我这样的极客,并且已经拥有自己的PGP密钥.大多数人不会,也不会想要安装或维护它. 作为一种解决方案,我 ...
- java生成验证码SWT_Java SWT Lable框中显示图片验证码
public static String testcode="";//验证码,保存验证码,取这个值于用户输入的值作比较 public static void image(Label ...
- java生成word带多级标题,word2007中多级标题的设置和目录的自动生成 | 学步园
如果你要写一篇论文,最好是在写之前将多级标题设置好,这样才能事半功倍,并且可自动生成带超链接的目录,下面言归正传将介绍一篇论文格式的标题和目录. 一.多级标题的生成 如果你最多只用到标题的3级,则只需 ...
- java生成扑克牌----java基础学习总结
前言都懒的写了,都凌晨1点半了,直接把代码放上去 代码: 1 package com.day16.list; 2 3 import java.util.LinkedList; 4 import jav ...
最新文章
- PyTorch深度学习
- html的基本网页界面的画法video src=video/myz.mp4 controls=controls/video
- jmeter测试webservice接口
- 在Android中使用Handler和Thread线程执行后台操作
- git提交输入账号和密码_GitHub-本地项目提交至GitHub
- VB.NET 调用外部程序
- linux vi快速删除文本内容
- ListView原理简单介绍(着重介绍getView被调用的一系列过程)
- python大文件排序_Python实现大文件排序的方法
- python3安装模块的命令_如何为PythonPython3安装gi模块?
- vue基础入门-应用 组件实例
- Flutter布局锦囊---简单的应用栏
- C++ new 解析重载
- 分布式文件系统FastDFS看这一篇就够了(文件上传下载、单机部署及集群部署)
- 细粒度图像分类_【完结】16篇图像分类干货文章总结,从理论到实践全流程大盘点!...
- 前端实现拖动滑块完成验证
- STM32F303VCT6(数据表) ARM Cortex M4,微控制器
- HBuiilderX代码美化插件format(即js-beautify)配置文件
- 埃尔米特曲线 Hermite Curve
- linux命令行开头是sh,shell脚本语言的使用(超全超详细)