java调用pdfbox转pdf文件为图片文件,有中文时在windows上正常,部署到linux下乱码
最近遇到了一个很头疼的问题,我们的项目移动端需要一个读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下乱码相关推荐
- java中pdfbox处理pdf常用方法(读取、写入、合并、拆分、写文字、写图片)
本篇文档将介绍pdfbox处理pdf常用方法(读取.写入.合并.拆分.写文字.写图片). 图中为pdfbox用到的包 1.读取pdf 方法代码: /*** 读取pdf中文字信息(全部)* @param ...
- Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题
Ubuntu下Java使用pdfbox将pdf转换为图片的方法及问题 使用pdfbox-2.0.3和fontbox-2.0.3,实现pdf转图片功能. 官方手册链接: http://pdfbox.ap ...
- Java 添加、提取PDF中的图片
Spire.Cloud.SDK for Java提供了PdfImagesApi接口可用于添加图片到PDF文档addImage().提取PDF中的图片extractImages(),具体操作步骤和Jav ...
- Java使用PDFBox为PDF填加水印亲测
Java使用PDFBox为PDF填加水印亲测 1.maven依赖 java代码部分 效果图片 中文 微软雅黑TTF 1.maven依赖 <dependency><groupId> ...
- Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪_实现在线预览Office文档
Office文档上传后实时转换为PDF格式_图片文件上传后实时裁剪 前置条件 安装LibreOffice 安装OpenOffice 安装Unoconv 安装ImageMagick.x86_64 安装G ...
- 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 ...
- 使用pdfbox将pdf转换成图片的时候,STSong-Light字体不存在解决方案
问题 使用pdfbox将pdf转换成图片的时候,STSong-Light字体的文字全为空格问题解决. 告警信息:Using fallback MT-Extra for CID-keyed font S ...
- python pdf删除图片_使用PyMuPdf提取、删除及替换PDF中的图片文件
有时候想把PDF中的图片文件提取出来,身为程序员的我当然是自己写段代码来实现,先看看了网上的方法,都是逐行遍历,正则匹配来提取什么的,其实没有那么复杂,PyMuPdf官方文档里自带就有提取图片文件的方 ...
- 使用PyMuPdf提取、删除及替换PDF中的图片文件
有时候想把PDF中的图片文件提取出来,身为程序员的我当然是自己写段代码来实现,先看看了网上的方法,都是逐行遍历,正则匹配来提取什么的,其实没有那么复杂,PyMuPdf官方文档里自带就有提取图片文件的方 ...
最新文章
- HTML5 input placeholder 颜色 改动
- 远程桌面连接mstsc 超扎心
- 一个工具类实现自定义Tablayout的下划线宽度
- 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
- 算法(0)—— 打造一个C开发库
- 【知识碎片】JavaScript篇
- Pgsql登录连接失败原因及解决方法
- 华为ensp常用操作命令 网络人凭经验含泪总结
- AIDA64 5.92.4300 序列号
- 一种小封装485芯片
- java实现多个小球碰壁变色_原生js实现多个随机大小颜色位置速度小球的碰壁反弹...
- 编译MTK系统源码时checking Env失败的解决方法
- Python-从txt中获取所有带有书名号的内容,并去除重复内容
- poi2011 切题记
- pb11.5调用系统打印机 Function ulong ShellExecute(ulong hwnd,ref string lpOperation,ref string lpFile,ref st
- MySQL 事件跟踪器 , MySQL 无须重启服务 跟踪 SQL , 也无须配置日志
- 多选框的全选和全不选
- Windows命令行复制文件
- matlab 灰度共生矩阵熵,图像的灰度共生矩阵GLCM(matlab 函数帮助).
- 产品经理都是这样做产品规划的(下)
热门文章
- java.lang.OutOfMemoryError: PermGen space总结
- rk3568 适配rk809音频
- 第一届华数杯B题思路浅析
- 贝塞尔曲线介绍及一阶、二阶推导
- 关于虚拟机linux系统eth0无IP地址的解决办法
- 6月第4周榜单丨飞瓜数据UP主成长排行榜(哔哩哔哩平台)发布!
- 魔众网盘系统 v1.3.0 后台菜单快捷搜索 修复已知问题
- ASO优化之关于应用的描述方案
- ROS坐标系中base_link和base_footprint的区别
- ws协议 服务器,Node.js WebSocket 协议