哎呀,这两天《黑神话:悟空》太火爆啦,不知道这样的国产3A大作,有多少天命人急着下班回去打怪啊?哈哈哈!只可惜好java哥我没买,因为一没时间,二没设备。(内心OS:我也好想玩,呜呜呜T_T~~)

言归正传,上回说到,word转成图片后,怎么将多页word合成一张长图,接下来就来实现吧,话不多说,上代码!

import com.aspose.words.Document;
import com.aspose.words.SaveFormat;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class TestController {
    public static void main(String[] args) throws Exception {
        String dataDir = "D:\\temp\\黑神话悟空.docx";
        Document doc = new Document(dataDir);
        // 设置输出路径
        String outPath = "D:\\temp\\";
        // 创建输出目录
        File outputDirectory = new File(outPath);
        if (!outputDirectory.exists()) {
            outputDirectory.mkdirs();
        }
        // 获取文档页数
        int pageCount = doc.getPageCount();
        // 存储所有页面的图片
        List<BufferedImage> images = new ArrayList<>();
        // 循环遍历每一页并保存为图片
        for (int pageIndex = 0; pageIndex < pageCount; pageIndex++) {
            Document extractedPage = doc.extractPages(pageIndex,1);
            // 设置每一页的保存路径
            String pageOutPath = outPath + "page_" + new Date().getTime() + "_" + (pageIndex+1) + ".png";
            // 保存为图片
            extractedPage.save(pageOutPath, SaveFormat.PNG);
            // 加载图片到内存
            BufferedImage image = ImageIO.read(new File(pageOutPath));
            images.add(image);
        }
        // 上次代码写到这,下面继续
        // 计算最终图片的高度
        int totalHeight = 0;
        for (BufferedImage img : images) {
            totalHeight += img.getHeight();
        }
        // 获取宽度(假设所有页面宽度相同)
        int width = images.get(0).getWidth();
        // 创建一个新图片,用于存放拼接后的图片
        BufferedImage combinedImage = new BufferedImage(width, totalHeight, BufferedImage.TYPE_INT_RGB);
        Graphics2D g = combinedImage.createGraphics();
        // 设置背景颜色为白色
        g.setColor(Color.WHITE);
        g.fillRect(0, 0, width, totalHeight);
        // 合并所有页面图片
        int yOffset = 0;
        for (BufferedImage img : images) {
            g.drawImage(img, 0, yOffset, null);
            yOffset += img.getHeight();
        }
        // 清理资源
        g.dispose();
        // 保存最终的图片
        ImageIO.write(combinedImage, "PNG", new File(outPath + "combined_"+ new Date().getTime() +".png"));
        System.out.println("Word to Image conversion completed.");
    }
}

下面让我们来看看效果吧:

1、打开《黑神话:悟空》相关的这篇word文章,一共有5页,下面我们就把它转成长图吧。文章链接:https://baijiahao.baidu.com/s?id=1807893502032743540&wfr=spider&for=pc

Java使用aspose将多页word转图片(二)_black myth wukong

2、分页图片已生成。

Java使用aspose将多页word转图片(二)_java_02

3、合成长图在此。

Java使用aspose将多页word转图片(二)_image_03

Java使用aspose将多页word转图片(二)_black myth wukong_04

整个需求的代码实现还是非常简单丝滑的,希望各位天命人早日解锁大结局啊!C完代码记得点个小心心哟❤~