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相关推荐

  1. 【可食用】KeyTool生成KeyStore,证书、公钥、私钥文档JAVA生成,JAVA实现ECC签名验签

    KeyTool生成KeyStore,证书.公钥.私钥文档JAVA生成,JAVA实现ECC签名验签 一.首先我们可以写个工具类生成密钥对.证书.公钥.私钥文本 jksAndCerGenerator.ja ...

  2. java 生成hprof,java – -XX:HeapDumpOnOutOfMemoryError未在OOM中创建hprof文件

    我使用以下参数启动我的java代码(Vista中的1.6.0_16)-XX:HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = .. / logs.我运行代码, ...

  3. java生成读取csv,从csv文件中获取Gatling

    加特林与馈线有很好的联系 . 当您提供错误的文件名或馈送文件的路径时,您将收到以下错误(java.lang.IllegalArgumentException:找不到馈送器文件) . 请注意,测试不会运 ...

  4. java开发页面超链接样式_Web报表中如何设置超链接的样式

    Web报表中如何设置超链接的样式. 超链接是WEB项目中经常会用到的功能,如实现数据钻取,数据详细说明等.在WEB页面中,各种属性的数据是很多的,怎样对有超链接的数据与普通数据进行区别展现,让用户能一 ...

  5. 汇编在嵌入式编程中的作用_如何在嵌入式Power BI报表中以编程方式传递凭据

    汇编在嵌入式编程中的作用 In the article, How to embed a Power BI Report Server report into an ASP.Net web applic ...

  6. java 生成 xml dtd_使用DTD文件中的JAXB生成Java类 – 如何修改DTD?

    在他的回答中,mavrav似乎告诉DTD这是不可能的.我不太清楚如何使用DTD. 但是,如果可以,请在XML模式中翻译您的DTD. 我试着用这个谢玛: xmlns:hr="http://my ...

  7. Java生成pgp密钥对_在Javascript中生成PGP密钥对,并使用加密的PGP私钥对文本进行签名...

    我写的东西是 needs to do electronic signatures. 有些用户会像我这样的极客,并且已经拥有自己的PGP密钥.大多数人不会,也不会想要安装或维护它. 作为一种解决方案,我 ...

  8. java生成验证码SWT_Java SWT Lable框中显示图片验证码

    public static String testcode="";//验证码,保存验证码,取这个值于用户输入的值作比较 public static void image(Label ...

  9. java生成word带多级标题,word2007中多级标题的设置和目录的自动生成 | 学步园

    如果你要写一篇论文,最好是在写之前将多级标题设置好,这样才能事半功倍,并且可自动生成带超链接的目录,下面言归正传将介绍一篇论文格式的标题和目录. 一.多级标题的生成 如果你最多只用到标题的3级,则只需 ...

  10. java生成扑克牌----java基础学习总结

    前言都懒的写了,都凌晨1点半了,直接把代码放上去 代码: 1 package com.day16.list; 2 3 import java.util.LinkedList; 4 import jav ...

最新文章

  1. PyTorch深度学习
  2. html的基本网页界面的画法video src=video/myz.mp4 controls=controls/video
  3. jmeter测试webservice接口
  4. 在Android中使用Handler和Thread线程执行后台操作
  5. git提交输入账号和密码_GitHub-本地项目提交至GitHub
  6. VB.NET 调用外部程序
  7. linux vi快速删除文本内容
  8. ListView原理简单介绍(着重介绍getView被调用的一系列过程)
  9. python大文件排序_Python实现大文件排序的方法
  10. python3安装模块的命令_如何为PythonPython3安装gi模块?
  11. vue基础入门-应用 组件实例
  12. Flutter布局锦囊---简单的应用栏
  13. C++ new 解析重载
  14. 分布式文件系统FastDFS看这一篇就够了(文件上传下载、单机部署及集群部署)
  15. 细粒度图像分类_【完结】16篇图像分类干货文章总结,从理论到实践全流程大盘点!...
  16. 前端实现拖动滑块完成验证
  17. STM32F303VCT6(数据表) ARM Cortex M4,微控制器
  18. HBuiilderX代码美化插件format(即js-beautify)配置文件
  19. 埃尔米特曲线 Hermite Curve
  20. linux命令行开头是sh,shell脚本语言的使用(超全超详细)

热门文章

  1. csps2019格雷码
  2. 普通住宅和商住公寓购房扫盲
  3. 计算机职业规划论文参考文献,职业生涯规划的参考文献
  4. 英文缩写400个速查
  5. 应聘客户端主程需做哪些准备
  6. 如何解决U盘装系统后磁盘总容量变小
  7. 2019我依旧满腔热血,追寻爱与梦想
  8. 第九篇:人生中哪些是对错的选择?
  9. x-code中蓝色文件夹和绿色文件夹的区别
  10. oracle+suspend+参数,oracle数据库的挂起(Suspending)和恢复(Resuming)