我正在使用LibreOffice 4和Java Uno API来管理文档。

我遇到这样的情况,我正在通过Java Uno API将带有img标记的HTML文档导入LibreOffice,并以其他格式(例如odt,docx,doc,rtf)保存文档。

问题在于LibreOffice将img标签转换为带有链接的图形对象(未嵌入文档中)。

我试图使用html base64,但是LibreOffice似乎不支持该功能。

现在,我想将这些链接的图形对象转换为嵌入式图形对象。
我可以通过XTextGraphicObjectsSupplier遍历图像,但无法弄清楚如何嵌入这些对象。

可能吗?

也许可以在html img标签中添加一些魔术属性,LibreOffice会嵌入它吗?

最佳答案

似乎libre / open office不支持此选项。唯一的方法是删除并再次插入嵌入的图像,但是您必须了解格式(例如大小等)。我通过执行以下步骤实现了我的目标(警告这是hack ...):


将HTML保存到odt。在此odt中,图形链接到磁盘上的文件。
解压缩odt文件。
在解压缩的目录中创建目录Pictures,然后将所有图像移至该目录。
编辑content.xml并将系统文件的路径替换为Pictures/file-name
编辑META-INF/manifest.xml以及类似的<manifest:file-entry manifest:media-type="image/png" manifest:full-path="Pictures/file-name"/>
压缩文件夹并将扩展名更改为odt。
通过Libre / Open Office Java Uno API读取odt文件。现在,该文档已嵌入图形对象。

08-15 19:19