【问题标题】:Open/Libre Office API replace imageOpen/Libre Office API 替换图像
【发布时间】:2013-03-05 19:49:43
【问题描述】:

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

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

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

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

现在我想将这些链接的图形对象转换为嵌入的图形对象。
我可以通过 XTextGraphicObjectsSupplier 遍历图像,但我不知道如何嵌入这些对象。

有可能吗?

也许可以在 html 的 img 标签中制作一些神奇的属性,LibreOffice 会嵌入它?

【问题讨论】:

  • 如果您需要帮助,请添加用于插入图像的代码。
  • 你读过我写的吗?请问如何更换图片。这与插入图像没有任何关系。如果您有文档(例如 odt)并且在此文档中是带有链接(未嵌入)的图形对象,那么问题是:如何使此链接对象嵌入?我认为没有必要为插入任何图像放置代码(事实上,这是由 LibreOffice 透明地完成的——我不会从代码中插入图像)。
  • 好的,让我们再试一次。我不知道你是否理解我。我知道如何通过 openoffice/libreoffice java API 插入图像。不是这种情况。在 odt、doc、docx 格式中,您可以通过两种方式存储图片:odt/doc/docx 文件中的嵌入图像或仅类似链接(例如 http 链接、文件链接)。问题是这样的:我有带有链接到真实数据的图片的 odt 文件(未嵌入 odt 文件中)。现在我想做一些操作来嵌入这些图片。我问你是否知道代码。插入图片的代码,我可以贴在这里,这里不需要。
  • 因此,如果您没有解决方案,请停止编写无用的 cmets。我知道这是编程网站,但意外的是:有些问题可能会在不放置代码的情况下添加。

标签: java api openoffice.org libreoffice uno


【解决方案1】:

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

  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. Zip 文件夹并将扩展名更改为 odt。
  7. 通过 Libre/Open Office Java Uno API 读取 odt 文件。现在此文档已嵌入图形对象。

【讨论】:

    猜你喜欢
    • 2021-07-29
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多