JodConverter纯文本文件转PDF乱码问题

最近在做公司项目的时候遇到一个JodConverter转txt文件到pdf文件乱码的问题。纠结了很长时间。

后来,项目经理发现了jodconverter提供的一个tomcat版本的web应用,使用它转出的pdf文件并没有出现乱码的情况。

这个web应用的名称是jodconverter-tomcat-2.2.1,而公司项目中使用的jodconverter是3.0.4版本的。于是,果断对其进行反编译,查看源码,终于发现了什么。

 

jodconverter对文件格式有自己的一套定义。在2.2.1版本中,没有封装成一个类,而是需要以配置文件的形式读取,再进行判断。

3.0.4版本中,包含了一个DefaultDocumentFormatRegistry.class,这个类里面定义了jodconverter支持的文件格式,以及在进行文件格式转换时进行设置。

其构造函数内包含了对TEXT文本的定义:

	DocumentFormat txt = new DocumentFormat("Plain Text", "txt", "text/plain");
	txt.setInputFamily(DocumentFamily.TEXT);
	Map<String,Object> txtLoadAndStoreProperties = new LinkedHashMap<String,Object>();
	txtLoadAndStoreProperties.put("FilterName", "Text (encoded)");
	txtLoadAndStoreProperties.put("FilterOptions", "utf8");//关键的就在这了
	txt.setLoadProperties(txtLoadAndStoreProperties);
	txt.setStoreProperties(DocumentFamily.TEXT, txtLoadAndStoreProperties);
	addFormat(txt);

我们可以看到有一行代码里面有FilterOptions,设置为utf8。这里的意思应该是只对UTF-8格式的文本文件进行转换,而非utf-8格式的文本文件直接交给OpenOffice去转,其原理就是调用OpenOffice的打印功能,将txt文件打印成pdf格式。OpenOffice本身不能正确识别非UTF-8格式的txt文件,因此就会出现乱码问题。

于是,我把设置utf8的代码注释掉,并重新将该class文件封装进jar包,测试后发现,乱码问题解决了。

命令行: jar uvf jodconverter-core-3.0-beta-4.jar org/artofsolving/jodconverter/document/DefaultDocumentFormatRegistry.class

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值