当前位置: 代码网 > it编程>编程语言>Java > Java中Word与PDF转换为图片的方法详解

Java中Word与PDF转换为图片的方法详解

2024年10月22日 Java 我要评论
word、pdf转换为图片java需求要在小程序端展示文档内容,所以将文档每页转换为图片后显示参考和其他等方案:java实现pdf转图片的三种方法java实现word文档转成图片的示例详解word转换

word、pdf转换为图片java

需求要在小程序端展示文档内容,所以将文档每页转换为图片后显示

参考和其他等方案:

java实现pdf转图片的三种方法

java实现word文档转成图片的示例详解

word转换为图片

<!-- word转图工具 -->
<dependency>
    <groupid>com.deepoove</groupid>
    <artifactid>poi-tl</artifactid>
    <version>1.8.0</version>
</dependency>
<dependency>
    <groupid>com.luhuiguo</groupid>
    <artifactid>aspose-words</artifactid>
    <version>23.1</version>
</dependency>
import com.aspose.words.document;
import com.aspose.words.saveformat;
import lombok.extern.slf4j.slf4j;

import java.io.file;
import java.nio.file.files;
import java.util.arraylist;
import java.util.list;

@slf4j
public class wordtoimageutil {

    public static void main(string[] args) {
        wordtoimage("c:\\users\\administrator\\documents\\录入脚本\\324\\", "xxxx.doc");
    }

    public static list<string> wordtoimage(string filepath, string filename) {
        log.info("开始word转换为图片");
        list<string> resultlist = new arraylist<string>();

        // 获取文件路径分隔符
        string separator = file.separator;

        try {
            // 填充数据完毕的test.docx,在转换成图片
            file file1 = new file(filepath + separator + filename); // 使用系统的路径分隔符
            // 打开生成的 word 文件
            document doc = new document(files.newinputstream(file1.topath()));

            // 逐页将 word 文件保存为图片(png格式)
            for (int i = 0; i < doc.getpagecount(); i++) {
                document extractedpage = doc.extractpages(i, 1);
                // 拼接上文件名
                string path = filepath + separator + "tmpimg" + separator + removefileextension(filename) + separator +
                        "img" + system.currenttimemillis() + "_" + i + ".png"; // 使用系统的路径分隔符

                // 创建目录(如果不存在的话)
                file tmpdir = new file(filepath + separator + "tmpimg" + separator + removefileextension(filename));
                if (!tmpdir.exists()) {
                    tmpdir.mkdirs(); // 创建目录
                }

                // 将 word 文件保存为图片png格式
                extractedpage.save(path, saveformat.png);
                resultlist.add(path);
            }
        } catch (exception e) {
            e.printstacktrace();
            return new arraylist<>();
        }
        log.info("结束word转换为图片");
        return resultlist;
    }


    /**
     * 去掉后缀名
     * @param filename
     * @return
     */
    public static string removefileextension(string filename) {
        int dotindex = filename.lastindexof(".");
        if (dotindex == -1) {
            return filename; // 如果没有找到点,则返回原始文件名
        }
        return filename.substring(0, dotindex); // 返回去掉后缀名的文件名
    }
}

pdf转换为图片

<!--pdf转换为图片-->
<dependency>
    <groupid>org.apache.pdfbox</groupid>
    <artifactid>fontbox</artifactid>
    <version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox -->
<dependency>
    <groupid>org.apache.pdfbox</groupid>
    <artifactid>pdfbox</artifactid>
    <version>2.0.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
<dependency>
    <groupid>commons-logging</groupid>
    <artifactid>commons-logging</artifactid>
    <version>1.2</version>
</dependency>
import org.apache.pdfbox.pdmodel.pddocument;
import org.apache.pdfbox.rendering.pdfrenderer;
import javax.imageio.imageio;
import java.awt.image.bufferedimage;
import java.io.file;
import java.io.ioexception;
public class pdftoimage {
    /**
     * 使用pdfbox将整个pdf转换成图片
     *
     * @param fileaddress 文件地址 如:c:\\users\\user\\desktop\\test
     * @param filename    pdf文件名不带后缀名
     * @param type        图片类型 png 和jpg
     */
    public static void pdf2png(string fileaddress, string filename, string type) {
        long starttime = system.currenttimemillis();
        // 将文件地址和文件名拼接成路径 注意:线上环境不能使用\\拼接
        file file = new file(fileaddress + "\\" + filename + ".pdf");
        try {
            // 写入文件
            pddocument doc = pddocument.load(file);
            pdfrenderer renderer = new pdfrenderer(doc);
            int pagecount = doc.getnumberofpages();
            for (int i = 0; i < pagecount; i++) {
                // dpi为144,越高越清晰,转换越慢
                bufferedimage image = renderer.renderimagewithdpi(i, 144); // windows native dpi
                // 将图片写出到该路径下
                imageio.write(image, type, new file(fileaddress + "\\" + filename + "_" + (i + 1) + "." + type));
            }
            long endtime = system.currenttimemillis();
        	system.out.println("共耗时:" + ((endtime - starttime) / 1000.0) + "秒");  //转化用时
        } catch (ioexception e) {
            e.printstacktrace();
        }
    }
    public static void main(string[] args) {
        pdf2png("c:\\users\\administrator\\documents\\xxx\\pdf", "文件名", "png");
    }
}

乱码问题

如果在linux运行遇到中文乱码,可尝试安装字体然后重启程序运行

参考:

centos系统中安装中文字体

  • windows系统下的simsun.ttc字体文件复制到centos系统中,并修改字体文件名为simsun.ttc,一般字体位置在:/usr/share/fonts下
  • 安装fontconfig软件包,这是处理字体配置和缓存的工具。可以使用yum命令进行安装,例如:yum -y install fontconfig(查看是否已经存在)
  • 刷新字体缓存,使得新安装的字体能够被系统识别。使用fc-cache命令完成这一步骤。
  • 使用 fc-list 命令查看系统中已安装的字体列表
  • 通过grep命令搜索“simsun”来验证simsun.ttc字体是否成功安装

1、从本地找到字体:c:\windows\fonts

2、复制到linux,我这里用的centos,复制字体到 /usr/share/fonts

3、安装fontconfig工具 yum -y install fontconfig

4、刷新字体缓存 fc-cache

5、查看字体列表是否完成安装 fc-list

以上就是java中word与pdf转换为图片的方法详解的详细内容,更多关于java word pdf转图片的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com