哎呀,这两天《黑神话:悟空》太火爆啦,不知道这样的国产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
2、分页图片已生成。
3、合成长图在此。
整个需求的代码实现还是非常简单丝滑的,希望各位天命人早日解锁大结局啊!C完代码记得点个小心心哟❤~