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

news/2024/11/30 3:24:53/

最近遇到了一个很头疼的问题,我们的项目移动端需要一个读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;
}


http://www.ppmy.cn/news/363319.html

相关文章

基于51单片机的全自动智能洗衣机控制系统Proteus仿真(仿真+源码+全套资料)

资料编号&#xff1a;108 设计功能&#xff1a; 1、对水温实时显示 2、显示滚筒转速 3、显示运行倒计时 4、能通过按钮分别设置洗涤时间和脱水时间 5、运行过程为&#xff1a;加热——洗涤——脱水 具体功能请看下方演示视频 108-基于51单片机的全自动智能洗衣机控制系统Pro…

java生成pdf时汉字乱码,为□-(linux系统)

问题描述&#xff1a;Linux环境中Java生成pdf时&#xff0c;图片中的汉字位置都显示为方框&#xff0c;乱码、方框、问号 原因分析&#xff1a;经排查日志&#xff0c;发现是在生成的时候缺少对应的字体库 1&#xff1a;由于项目由原来的Windows系统换到了Linux系统&#xff0…

用pdfbox进行pdf转图片中文乱码,缺失字体

PDDocument pdDocument PDDocument.load(inputStreamByUrl); PDFRenderer pdfRenderer new PDFRenderer(pdDocument); BufferedImage bufferedImage pdfRenderer.renderImageWithDPI(i, 144F, ImageType.RGB); 使用pdfbox读取pdf转图片的时候&#xff0c;如果缺失字体&…

浏览器打开pdf乱码

前几天在测试项目的时候&#xff0c;无意间发现个bug——在下载pdf时如果选择打开则会出现乱码&#xff0c;然而保存pdf文件时却不会乱码。一开始&#xff0c;我以为是浏览器的设置问题&#xff0c;问了问度娘&#xff0c;说是没有ADOBE的缘故&#xff0c;于是乎&#xff0c;安…

pdf阅读器或知云文献阅读选中pdf文字乱码

pdf阅读器或知云文献阅读选中pdf文字乱码 使用知云翻译pdf的时候选中文字全是问号和乱码&#xff0c;其他的阅读器选中复制的文字也是乱码 原因分析&#xff1a; 文章是不可复制的&#xff0c;需要重新扫描和orc 解决方案&#xff1a; 使用的软件&#xff1a;Adobe acrobat pro…

ES7、ES8、ES9、ES10、ES11、ES12都增加了那些新特性?

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 ES7 ES2016&#xff08;ES7&#xff09;中新增了如下特性&#x1f447; Array.prototype…

LabVIEW开发呼吸分析系统

LabVIEW开发呼吸分析系统 在日常生活中&#xff0c;许多人都在练习调息法&#xff0c;但大多数人都不知道如何以完美的方式做。不当的做法不会带来适当的结果。一种使用LabVIEW分析呼吸信号的方法&#xff0c;以使人们以完美的方式练习调息。这有助于从业者按照系统指定的说明…

RHEL7 / 8 / 9中禁用Ctrl-Alt-Del

为什么服务器在 /var/log/messages 中使用“systemd: Received SIGINT”重启&#xff1f; 系统重新启动并在日志中显示以下消息。 Raw Feb 5 09:50:01 server01 systemd: Starting Session 1399 of user root. Feb 5 09:59:51 server01 systemd: Received SIGINT. <<-…