哎呀,这两天《黑神话:悟空》太火爆啦,不知道这样的国产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.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
  • 49.
  • 50.
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.

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

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

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

2、分页图片已生成。

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

3、合成长图在此。

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

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

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