最近遇到了一个很头疼的问题,我们的项目移动端需要一个读pdf的功能,但是手机端开发人员说移动端是用jquerymobile做的,不能直接甩pdf文件过去(原因是pdf文件太大),于是乎我们想到了2个解决方案。

第一个:把pdf转成html丢过去,大家都方便,但是前期我们项目经理用的是pdfbox,死活都把pdf文件中的图片和表格转换不了,只能转文本文字,所以最后决定弃用掉。
第二个:那就是把pdf转换成图片文件,每页转成一张图片,可以生成2套图片传递过去,一套大图,一套小图,列表的时候显示小图,单击某个小图的时候显示对应大图,这样就ok了。不过想法倒是正确的,但是实现的时候出现问题了。用pdfbox转换图片倒是能够转换出来,windows上测试也没有任何问题,但是当项目发布到服务器(linux)上的时候,出现严重的问题了,那就是中文图片乱码了。。。这下悲剧了,百度google了一天,还是无解。最后实在用pdfbox处理不了中文的问题,决定换一个工具,那就是icepdf,icepdf是一款既有开源又要收费版的工具(我目前用的是开源的,没去除水印),换了icepdf之后,一切问题都引刃而解了,再也无中文乱码问题啦,icepdf对中文支持非常强大,并且能够轻松生成缩略图和大图。

这里有源码下载:http://download.csdn.net/detail/whiteshirt/6428293

下面是核心代码:

public static void main(String[] args) {

new ICEPdf().converPdfToImg("D:\\2.pdf", "D:\\myxiao\\image_", "jpg",1.0f);

}
/**
* 转换指定pdf文件为图片到指定的文件夹目录下
* @param pdfFilePath需要转换的pdf文件路径
* @param imgPushPath需要存放转换后的图片文件目录路径
* @param toFormat需要转换的图片格式(如:jpg/png等)
* @param imgScaling图片缩放的比例
* @return 转换后图片的文件名集合
*/
public List<String> converPdfToImg(String pdfFilePath,String imgPushPath,String toFormat,float imgScaling){
//定义Document,用于转换图片
        Document document = new Document();
        List<String> filePathList = new ArrayList<String>();
        try {
            document.setFile(pdfFilePath);
        } catch (Exception ex) {
        ex.printStackTrace();
        }
        // save page caputres to file.
        float rotation = 0f;
        // 循环把每页的数据转换成对应的图片
        for (int i = 0; i < document.getNumberOfPages(); i++) {
            BufferedImage image = (BufferedImage)
            document.getPageImage(i,GraphicsRenderingHints.SCREEN,Page.BOUNDARY_CROPBOX, rotation, imgScaling);
            RenderedImage rendImage = image;
            try {
                System.out.println("/t capturing page " + i);
                File file = new File(imgPushPath + i + "." + toFormat);
                ImageIO.write(rendImage, toFormat , file);
                filePathList.add(i + "." + toFormat);
            } catch (IOException e) {
                e.printStackTrace();
            }
            image.flush();
        }
        // 清理document资源
        document.dispose();
        
        return filePathList;
}

java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码相关推荐

  1. java中pdfbox处理pdf常用方法(读取、写入、合并、拆分、写文字、写图片)

    本篇文档将介绍pdfbox处理pdf常用方法(读取.写入.合并.拆分.写文字.写图片). 图中为pdfbox用到的包 1.读取pdf 方法代码: /*** 读取pdf中文字信息(全部)* @param ...

  2. Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题

    Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题 使用pdfbox-2.0.3和fontbox-2.0.3,实现pdf转图片功能. 官方手册链接: http://pdfbox.ap ...

  3. Java 添加、提取PDF中的图片

    Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage().提取PDF中的图片extractImages(),具体操作步骤和Jav ...

  4. Java使用PDFBox为PDF填加水印亲测

    Java使用PDFBox为PDF填加水印亲测 1.maven依赖 java代码部分 效果图片 中文 微软雅黑TTF 1.maven依赖 <dependency><groupId> ...

  5. Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪_实现在线预览Office文档

    Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪 前置条件 安装LibreOffice 安装OpenOffice 安装Unoconv 安装ImageMagick.x86_64 安装G ...

  6. txt doc rtf html,JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例.docx

    JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例 JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例??2012-06-2 ...

  7. 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案

    问题 使用pdfbox将pdf转换成图片的时候,STSong-Light字体的文字全为空格问题解决. 告警信息:Using fallback MT-Extra for CID-keyed font S ...

  8. python pdf删除图片_使用PyMuPdf提取、删除及替换PDF中的图片文件

    有时候想把PDF中的图片文件提取出来,身为程序员的我当然是自己写段代码来实现,先看看了网上的方法,都是逐行遍历,正则匹配来提取什么的,其实没有那么复杂,PyMuPdf官方文档里自带就有提取图片文件的方 ...

  9. 使用PyMuPdf提取、删除及替换PDF中的图片文件

    有时候想把PDF中的图片文件提取出来,身为程序员的我当然是自己写段代码来实现,先看看了网上的方法,都是逐行遍历,正则匹配来提取什么的,其实没有那么复杂,PyMuPdf官方文档里自带就有提取图片文件的方 ...

最新文章

  1. HTML5 input placeholder 颜色 改动
  2. 远程桌面连接mstsc 超扎心
  3. 一个工具类实现自定义Tablayout的下划线宽度
  4. 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
  5. 算法(0)—— 打造一个C开发库
  6. 【知识碎片】JavaScript篇
  7. Pgsql登录连接失败原因及解决方法
  8. 华为ensp常用操作命令 网络人凭经验含泪总结
  9. AIDA64 5.92.4300 序列号
  10. 一种小封装485芯片
  11. java实现多个小球碰壁变色_原生js实现多个随机大小颜色位置速度小球的碰壁反弹...
  12. 编译MTK系统源码时checking Env失败的解决方法
  13. Python-从txt中获取所有带有书名号的内容,并去除重复内容
  14. poi2011 切题记
  15. pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
  16. MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志
  17. 多选框的全选和全不选
  18. Windows命令行复制文件
  19. matlab 灰度共生矩阵熵,图像的灰度共生矩阵GLCM(matlab 函数帮助).
  20. 产品经理都是这样做产品规划的(下)

热门文章

  1. java.lang.OutOfMemoryError: PermGen space总结
  2. rk3568 适配rk809音频
  3. 第一届华数杯B题思路浅析
  4. 贝塞尔曲线介绍及一阶、二阶推导
  5. 关于虚拟机linux系统eth0无IP地址的解决办法
  6. 6月第4周榜单丨飞瓜数据UP主成长排行榜(哔哩哔哩平台)发布!
  7. 魔众网盘系统 v1.3.0 后台菜单快捷搜索 修复已知问题
  8. ASO优化之关于应用的描述方案
  9. ROS坐标系中base_link和base_footprint的区别
  10. ws协议 服务器,Node.js WebSocket 协议