aspose-words版本:21.1
java:1.8
目标:
前端使用tinymce编辑一段内容,后端使用aspose-words将html转为word,并将html中的附件转换为word中的附件。
形如:
实现方案:
使用正则表达式找出需要替换的附件位置,然后再使用aspose-words替换为附件。
关键代码:
public void insertOleObjectAsIcon() throws Exception
{
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// windows开发环境使用绝对路径,生产环境可以使用文件流进行传输
builder.insertOleObjectAsIcon("D:/source.docx", "Word.Document.12",false,"D:/word.ico" ,"attachmentFile.docx");
doc.save("D:/output.docx");
}
遇到的问题:
- 使用insertOleObject方法会导致只显示图片icon,不显示文件名称。prepsentation参数不能为null,会报空指针.
- java.io.EOFException : End of file reached,源码被加扰,无法明确具体原因,替换为ico后缀的图片文件后,错误消失。
- java.lang.UnsupportedOperationException : Not implemented format is met. 源码被加扰,无法明确具体原因,猜测文件过大(6K)。具体阈值未知。
- java.lang.ArrayIndexOutBoundsException: 456 文件过小(1K)。具体阈值未知。
使用2.3K大小的ico,操作成功并正常显示。
参考:
- Aspose.Words 实现在word文档中插入附件功能 使用InsertOleObject插入流对象 结果文档始终是一张图片 这个问题怎么解决?
- 提取文件原生ico图标