Open / Libre Office API替换图像

时间:2013-03-17 12:02:31

标签: java api openoffice.org libreoffice uno

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

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

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

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

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

有可能吗?

也许有可能在html img标签中创建一些魔术属性,而LibreOffice会嵌入它吗?

1 个答案:

答案 0 :(得分:1)

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

  1. 将HTML保存到odt。在这个odt图形链接到磁盘上的文件。
  2. 解压缩odt文件。
  3. 在解压缩的目录中创建目录Pictures并移动所有图像。
  4. 修改content.xml并将系统文件的路径替换为Pictures/file-name
  5. 修改META-INF/manifest.xml以及类似<manifest:file-entry manifest:media-type="image/png" manifest:full-path="Pictures/file-name"/>
  6. 之类的内容
  7. Zip文件夹并将扩展名更改为odt。
  8. 通过Libre / Open Office Java Uno API读取odt文件。现在这个文档已经嵌入了图形对象。