做EXCEL转图片时出现了一点小问题,在网上没有找到解决的拌饭,各位如果又碰到类似的,麻烦给我提示
实现的功能:使用openoffice4将excel转为PDF,然后通过PDFReaderer将PDF转为图片。
实现的思路:tomcat启动时调用openoffice,启动office服务(因为Linux下重复启动OfficeManager会报错)。然后每次在调用的时候直接对excel进行转换。
目前碰到的问题:
1、openoffice总是会出现“reached limit of 200 maxTasksPerProcess: restarting”,然后自动重启,实际上我的并发量并没有那么大,我现在还不知道如何释放它的任务进程。
2、并发生成图片的时候,使用openoffice将excle转为PDF后正常,生成了PDF_A和PDF_B然后,使用PDFRenderer将PDF转为图片的过程,流读取混乱了,导致的结果个PDF_A未生成图片,PDF_B生成的图片变成了PDF_A的结果。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
利用openoffice将各种类型的文档转换成pdf,然后再利用imagsio将pdf转成图片。
示例代码如下:
public static void doc2Pdf(String docPath, String pdfPath) throws ConnectException {
File inputFile = new File(docPath);//预转文件
File outputFile = new File(pdfPath);//pdf文件
OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);
connection.connect();//建立连接
DocumentConverter converter = new OpenOfficeDocumentConverter(connection);
DefaultDocumentFormatRegistry formatReg = new DefaultDocumentFormatRegistry();
DocumentFormat txt = formatReg.getFormatByFileExtension("odt") ;//设定文件格式
DocumentFormat pdf = formatReg.getFormatByFileExtension("pdf") ;//设定文件格式
converter.convert(inputFile, txt, outputFile, pdf);//文件转换
connection.disconnect();//关闭连接
}
将任意类型文件转成图片类型:
public static void doc2Imags(String docPath, String imgDirPath){
String pdfPath =String.format("%s%s.pdf", FilenameUtils.getFullPath(docPath), FilenameUtils.getBaseName(docPath));
try {
doc2Pdf(docPath, pdfPath);
pdf2Imgs(pdfPath, imgDirPath);
File pdf = new File(pdfPath);
if(pdf.isFile()){
pdf.delete();
}
} catch (ConnectException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}