最近遇到一个需求,把用例的截图放到 word 文档里,用 spire 的免费版本解决了,记录一下。spire 可以调格式,段落之类的很方便。这是 spire 的文档地址

依赖如下


<repository>
                <id>com.e-iceblue</id>
                <url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>

<dependency>
            <groupId>e-iceblue</groupId>
            <artifactId>spire.doc.free</artifactId>
            <version>3.9.0</version>
</dependency>

使用方法

// 实例doc对象
       Document document = new Document();
       // 新增一页
       Section section = document.addSection();
       // 新增两个段落
       Paragraph paragraph1 = section.addParagraph();
       paragraph1.setText("段落1");
       Paragraph paragraph2 = section.addParagraph();
       paragraph2.setText("段落2");
       // 设置第一个段落后的间距
       paragraph1.getFormat().setAfterSpacing(10.0f);
       // 第二个段落后插入图片
       DocPicture docPicture2 = paragraph2.appendPicture("img/img1.png");
       docPicture2.setTitle("图片2");

       document.saveToFile("img/demo1.docx");

可以看到图片只是加进去了,但是这张长图太大了,显示的不全

所以按照 A4 纸 (210 * 297) 的比例缩小一下,这里根据宽度来等比缩小长度

// 获取图片宽度,setWidthScale里面的单位是%
float width = docPicture2.getWidth();
float scale = 210f / width * 100;
docPicture2.setWidthScale(scale);
docPicture2.setHeightScale(scale);

document.saveToFile("img/demo1.docx");

按照比例缩小了一些,但是感觉没有按照我想的比例显示出来,这里后面研究出来再补充。

找到原因了,我搞错了,这个 A4 纸单位是 mm。。。

// 获取图片宽度,setWidthScale里面的单位是%
float width = docPicture2.getWidth();
float scale1 = 450f / width * 100;
float scale2 = 900f / docPicture2.getHeight();
flocat scale = Math.min(scale1,scale2);
docPicture2.setWidthScale(scale);
docPicture2.setHeightScale(scale);

document.saveToFile("img/demo1.docx");


↙↙↙阅读原文可查看相关链接,并与作者交流