开发者社区> 问答> 正文

java关于EXCEL转图片的问题

做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的结果。

展开
收起
蛮大人123 2016-03-17 14:29:06 7256 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    利用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();  
        }  
       }  
    2019-07-17 19:05:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载