首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > PowerDesigner >

jodconverter纯文本文件转为pdf时中文有关问题解决方案

2012-10-07 
jodconverter纯文本文件转为pdf时中文问题解决方案文章分类:Java编程 jodconverter转换ms文件都没有出现中

jodconverter纯文本文件转为pdf时中文问题解决方案

文章分类:Java编程 jodconverter转换ms文件都没有出现中文问题,但是在转换最简单的纯文本文件时却出现中文问题。我开始时找了cpdetecter来探测纯文本文件的编码格式,但是对一些文件的编码格式还是探测不对,所以想通过它探测到文本文件的编码格式,再将它转为UTF-8的方式来实现文本的统一编码方式(演示代码见下面)是行不通的: Java代码 1.import java.io.FileInputStream;   2.import java.io.FileOutputStream;   3.import java.io.InputStreamReader;   4.import java.io.OutputStreamWriter;   5.  6.  7.public class changeCharacterFormat {   8.  9.    public static void main(String[] args) throws Exception{   10.           11.        InputStreamReader in = new InputStreamReader(   12.                new FileInputStream("D:\\test\\File\\新建 文本文档 (2).txt"),"GB2312");//按原文件的编码方式进行读取文件信息   13.        OutputStreamWriter out = new OutputStreamWriter(   14.                new FileOutputStream("D:\\test\\File\\新建 文本文档 (2)8.txt"),"utf-8");//转换为自己想要的编码格   15.        char[] cbuf = new char[1024];   16.        int n;   17.        while((n=in.read(cbuf))!=-1){   18.            out.write(cbuf, 0, n);   19.        }   20.        in.close();   21.        out.close();   22.    }   23.       24.}  import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStreamReader;import java.io.OutputStreamWriter;public class changeCharacterFormat {public static void main(String[] args) throws Exception{InputStreamReader in = new InputStreamReader(new FileInputStream("D:\\test\\File\\新建 文本文档 (2).txt"),"GB2312");//按原文件的编码方式进行读取文件信息OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream("D:\\test\\File\\新建 文本文档 (2)8.txt"),"utf-8");//转换为自己想要的编码格char[] cbuf = new char[1024];int n;while((n=in.read(cbuf))!=-1){out.write(cbuf, 0, n);}in.close();out.close();}}  如是就试着将纯文本文件(如*.java,*.c,*.log,*.xml,*.mxml,*.jsp,*asp,*.js等等)的后缀改为.txt再打由openoffice打印成pdf,它是可以打印,但是对于有中文的文件,它就会出现乱码。后来我将它们改为*.odt的后缀后就可以正确地打印成pdf,显示出正常的中文。这里其实是这样的,我将它们改为.odt后缀后,那么再用jodconverter来打印时,它就会调用openoffice来打印,那么就相当于它用openoffice打开它的odt格式的文件,再点击打印成pdf;因为它对*.odt文件支持中文,所以它打开它时,中文是正确的,其实它在读这个非odt的纯文本文件时,它就能识别出它的编码格式,所以就不用我们再去找那个原文件的编码格式,再进行转换,我们可以直接打印。所以关键还是理解jodconverter的打印原理,它不过是对openoffice的打印接口的调用,所以我们若将如*.jsp等文本改后缀名为*.txt,因为*.txt不是由openoffice直接产生的文本格式,所以对它的支持力度就没有将这些文件改后缀名为*.odt的好,因此将其它非odt的纯文本文件改名为odt文本文件时,它打印出pdf时能正确显示中文,而改名为txt后缀时,出现乱码的主要原因。

热点排行