【问题标题】:JACOB : cannot get Information property from MS WordJACOB:无法从 MS Word 获取信息属性
【发布时间】:2013-01-02 16:56:54
【问题描述】:

我目前正在使用 Jacob 这个很棒的工具,但我得到了一些非常奇怪的东西。阅读一个 MS Word 文件,我对文档进行标记,并且对于我得到的每个标记,我还想拥有页码和行号。 奇怪的是,它只有在我自己启动 MSWord 并从 Jacob 那里获得实例时才有效。如果 Java 启动一个新实例,我无法获得这些信息。另一点是我从文件中获得了很多信息,效果很好,所以似乎唯一的问题是处理 Information 属性。

我的部分代码是:

ActiveXComponent myApplication = ActiveXComponent.connectToActiveInstance("Word.Application");
if (myApplication == null) {
  myApplication = new ActiveXComponent("Word.Application");
}
Dispatch myDocuments = myApplication.getProperty("Documents").toDispatch();
Dispatch myDocument = getOpenedDocument(myDocuments, pFilePath);

....

Dispatch myParagraphs = Dispatch.call(myDocument, "Paragraphs");
Dispatch myParagraph = Dispatch.call(myParagraphs, "Item", new Variant(1)).toDispatch();
Dispatch myParagraphRange = Dispatch.get(myParagraph, "Range").toDispatch();

然后以我尝试为例:

myText = Dispatch.get(myParagraphRange, "Text").toString();

我得到了段落内容。但是有:

int myPageNumber = Dispatch.call(myParagraphRange, "Information", 3).getInt();

如果且仅当 MSWord 不是由我自己启动时,我会得到:

com.jacob.com.ComFailException: A COM exception has been encountered:
At Invoke of: Information
Description: Le serveur a généré une exception.

“信息”属性似乎与 Word 有问题???

【问题讨论】:

    标签: java com ms-word jacob


    【解决方案1】:

    终于找到我的代码有什么问题了。 对于未知的准备,对于要获取的属性信息,不应强制使文档不可见。 当您使用

    打开文档时
    Dispatch.call(lObjDocuments, "Open", myPath, new Variant(false)....");
    

    我的最后一个参数涉及 Word 进程的可见性。刚刚删除它,它可以工作(感谢微软)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多