博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java 将PDF转图片上传到FTP上
阅读量:6158 次
发布时间:2019-06-21

本文共 2823 字,大约阅读时间需要 9 分钟。

hot3.png

首先创建一个 Java 工程,把下载好的 pdfbox-2.0.2.jar 作为类库加入工程

   //pdf转图片上传到ftp上

    public String pdfImage(String pdfUrl,String title){
        StringBuffer imageUrls = new StringBuffer();
        try {
            InputStream responseBodyAsStream = null;
            org.apache.commons.httpclient.HttpClient client=new org.apache.commons.httpclient.HttpClient();
            GetMethod getMethod=new GetMethod(pdfUrl);
            int executeMethod = client.executeMethod(getMethod);
            if(executeMethod==200){
                responseBodyAsStream = getMethod.getResponseBodyAsStream();
            }
            PDDocument doc = PDDocument.load(responseBodyAsStream);
            PDFRenderer renderer = new PDFRenderer(doc);
            int pageCount = doc.getNumberOfPages();
            for (int i = 0; i < pageCount; i++) {
                //将PDF生成图片流
                BufferedImage image = renderer.renderImageWithDPI(i, 90);
                ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
                ImageIO.write(image, "PNG", outputStream);
                //将图片流上传到ftp,ftpDir目录
                String dir = ftpDir + "/invoice/img/";
                String filename = title+"_"+i+".jpg";
                InputStream is = new  ByteArrayInputStream(outputStream.toByteArray());
                boolean bln = ftp.upload(is, dir, filename);
                if(bln){

                   //ftpViewUrl 预览/下载地址

                    imageUrls.append(ftpViewUrl + dir + filename).append(";");
                }
            }
            return imageUrls.toString();
        } catch (Exception e) {
            log.debug(e);
            return null;
        }
    }

private static FTPClientConfigure config;

    // 连接池

    final GenericKeyedObjectPool<FTPClientConfigure, FTPClient> pool = new FTPClientPool(new FTPClientFactory(), new FTPPoolConfig());
 

/**

     * 获取. <br/>
     *
     */
    private FTPClient get() {
        try {
            if (null == config)
                config = new FTPClientConfigure(host, port, username, password);
            return pool.borrowObject(config);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

/**

     * 归还. <br/>
     * obj
     */
    private void returnObject(FTPClient obj) {
        pool.returnObject(config, obj);
    }

   //ftp上传

    public boolean upload(InputStream fis, String dir, String fileName) {

        boolean result = false;
        FTPClient client = get();
        if (null == client)
            return result;
        try {
            // 切换至跟目录
            client.changeWorkingDirectory("/");
            // 设置上传目录
            if (StringUtils.isNotBlank(dir)) {
                // 防止中文目录乱码
                dir = new String(dir.getBytes(LOCAL_CHARSET), SERVER_CHARSET);
                // 切换目录
                if (!client.changeWorkingDirectory(dir)) {
                    // 切换失败,创建目录
                    String[] dirs = dir.replaceAll("\\\\", "/").replaceAll("//", "/").split("/");
                    for (String d : dirs) {
                        if (StringUtils.isBlank(d))
                            continue;
                        if (!client.changeWorkingDirectory(d)) {
                            if (client.makeDirectory(d)) {
                                if (!client.changeWorkingDirectory(d)) {
                                    log.error("切换目录失败!");
                                    return result;
                                }
                            } else {
                                log.error("创建目录失败!");
                                return result;
                            }
                        }
                    }
                }
            }
            fileName = new String(fileName.getBytes(LOCAL_CHARSET), SERVER_CHARSET);
            result = client.storeFile(fileName, fis);
        } catch (IOException e) {
            log.error(e);
            throw new RuntimeException("FTP客户端出错!", e);
        } finally {
            IOUtils.closeQuietly(fis);
            returnObject(client);
        }
        return result;
    }

转载于:https://my.oschina.net/lisc2016/blog/1610836

你可能感兴趣的文章
MoSQL
查看>>
Hibernate多对一外键单向关联(Annotation配置)
查看>>
《CLR via C#》读书笔记 之 方法
查看>>
设计模式:组合模式(Composite Pattern)
查看>>
ContentValues 和HashTable区别
查看>>
LogicalDOC 6.6.2 发布,文档管理系统
查看>>
给PowerShell脚本传递参数
查看>>
实战2——Hadoop的日志分析
查看>>
利用FIFO进行文件拷贝一例
查看>>
Ecshop安装过程中的的问题:cls_image::gd_version()和不支持JPEG
查看>>
resmgr:cpu quantum等待事件
查看>>
一个屌丝程序猿的人生(六十六)
查看>>
Java 编码 UTF-8
查看>>
SpringMVC实战(注解)
查看>>
关于静态属性和静态函数
查看>>
进程的基本属性:进程ID、父进程ID、进程组ID、会话和控制终端
查看>>
spring+jotm+ibatis+mysql实现JTA分布式事务
查看>>
MyBatis启动:MapperStatement创建
查看>>
调查问卷相关
查看>>
eclipse启动无响应,老是加载不了revert resources,或停留在Loading workbench状态
查看>>