经历
前一段时间写项目,要求写一个生成表单显示的功能,刚开始想让前端用页面写,但是前端没时间。经过询问决定用word转成pdf的形势来写。
链接: https://pan.baidu.com/s/1JJoEXf7fuiKwocPSHjRWQw 提取码: 2xqs
上面是所需要的jar包
准备
咱们开始时候肯定是要创建一个模板的。通过模板,填写数据。
上面是我创建的一个word文档,就有一页,样式就是上图看见的。
第一步
首先我们要选中这个文件
Document doc = new Document("<word文件的路径>");
之后我们可以通过创建的Document这个类来选中该文件中含有某一个内容(如:段落、标题、表格等)。
第二步
我们通过上一步创建的Document对象来操作内容。接下来我列一个表格,大家可以先有个映像,不理解无所谓,之后都会讲解到。
对象 | 含义 |
---|---|
Section | 某页的内容 |
TextRange | 文本内容 |
Paragraph | 段落 |
HeaderFooter | 页脚或页眉 |
Table | 表格 |
TableRow | 表格某一行 |
TableCell | 表格某一单元格 |
上面是我用到的,没有全都涉及到。
Section
某一页的内容,获取方法:
Section sec = doc.getSections().get(0);
doc是上面Document的对象,上述方法是获得word文档中第一页的内容。
Paragraph
这里表示我word文档中的某一段落,获取方法:
Paragraph paragraph= sec.getParagraphs().get(1);
这里我选中了word文档中该页中的第二段。
TextRange
TextRange就表示的文本信息。很多对象都可以获得文本信息。就拿上述的Paragraph 对象举例,就可以获得TextRange对象。
Paragraph paragraph=sec.getParagraphs().get(1);
TextRange range=paragraph.appendText("123456789");
这里相当在第二段后面连接了 ‘123456789’,效果:
然后通过TextRange对象可以设置文本的格式。
//设置字体的样式的
range.getCharacterFormat().setFontName("微软雅黑");
//设置字体的大小
range.getCharacterFormat().setFontSize(13f);
//设置文字居中
range.getOwnerParagraph().getFormat().setHorizontalAlignment(HorizontalAlignment.Center);
HeaderFooter
这个表示内容的页脚或页眉:
//获取页脚
HeaderFooter footer= section.getHeadersFooters().getFooter();
//获取页眉
HeaderFooter header = section.getHeadersFooters().getHeader();
Table
这是表示内容的某一个表格的:
//获取第二个表格
Table table = sec.getTables().get(1);
TableRow
这是表示内容的某一个表格的某一行:
//获取表格的第二行
TableRow row = table.getRows().get(1);
TableCell
这是表示内容的某一个表格的某一个单元格:
//获取表格的第二行第二个单元格
TableCell cell = row.getCells().get(1);
//去除单元格前面的回车符
cell.getParagraphs().removeAt(0);
//在该单元格中添加内容'123'
cell.addParagraph().appendText("123");
效果:
最后一步
最后,我们要实现word转pdf的操作。
//doc路径
Document document = new Document("xxx");
//pdf路径
File outputFile = new File("xxx");
//操作文档保存
document.save(outputFile.getAbsolutePath(), com.aspose.words.SaveFormat.PDF);
完成: