【问题标题】:The simplest way to extract obj data in RTF file在 RTF 文件中提取 obj 数据的最简单方法
【发布时间】:2021-03-10 06:14:21
【问题描述】:

我想提取 RTF 文件中嵌入的 OLE 对象。 我更喜欢用 Java 实现它,所以我阅读了 Apache Tika RTFParser (1.25 & 2.0-ALPHA) 的文档和源代码,发现 Tika 只是提取文本用于搜索目的,无法获取 obj 数据。或许基于TextExtractor写一些代码是可行的。

然后我也尝试了 this post in C#,但 PackagedObject.Extract 中的 if (type != 3) // 3 is file, 1 is link 出现错误。

谁能帮我弄清楚在 RTF 文件中提取 obj 数据的最简单方法(更少代码)是什么?首选跨平台和服务器端解决方案(Java 或 .net-core)。但是使用Word。 C# 中的应用程序并不重要,因为它依赖于 Word 客户端,有时会意外终止。

【问题讨论】:

    标签: java asp.net-core rtf apache-tika


    【解决方案1】:

    如果您想使用 Apache Tika 提取原始字节,请尝试使用 Tika 应用程序的 -z 命令行选项或使用 tika-server 的 /unpack endpoint。是的,Tika 专注于文本/元数据提取,但它也可用于提取原始嵌入文件。

    【讨论】:

      【解决方案2】:

      您可能会发现这是一个有用的起点:https://github.com/joniles/mpxj/blob/master/src/main/java/net/sf/mpxj/mpp/RTFEmbeddedObject.java#L149

      这是为了让 MPXJ 的用户提取嵌入在 RTF 注释中的对象。

      【讨论】:

      • 谢谢乔恩。我尝试了上面的代码,但在 RTFEmbeddedObject.RTFEmbeddedObject 中m_data = getData(blocks, length); 处出现错误长度==-1。我意识到,这个问题的核心是根据其格式规范解析嵌入对象,对吗?有没有办法知道嵌入对象的字节长度?
      猜你喜欢
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多