gpt4 book ai didi

docx4j - 使用 docx4j 解析 Word 文档中的内容

转载 作者:行者123 更新时间:2023-12-04 05:33:07 24 4
gpt4 key购买 nike

感谢 previous answer ,我现在可以阅读受密码保护的 Word 2010 文档。 (我必须将它们从 .doc 一一翻译成 .docx。它们可以追溯到 1994 年,但没关系。)

我编写了一个简单的 Java 类来开始:

package model.docx4j;

import model.JournalEntry;
import model.JournalEntryFactory;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.OpcPackage;
import org.docx4j.openpackaging.parts.Parts;

import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.util.LinkedList;
import java.util.List;

/**
* JournalEntryFactoryImpl using docx4j
* @author Michael
* @link
* @since 9/8/12 12:44 PM
*/
public class JournalEntryFactoryImpl implements JournalEntryFactory {
@Override
public List<JournalEntry> getEntries(InputStream inputStream, String password) throws IOException, GeneralSecurityException {
List<JournalEntry> journalEntries = new LinkedList<JournalEntry>();
if (inputStream != null) {
try {
OpcPackage opcPackage = OpcPackage.load(inputStream, password);
Parts parts = opcPackage.getParts();
} catch (Docx4JException e) {
LOGGER.error("Could not load document into docx4j", e);
throw new IOException(e);
}
}
return journalEntries;
}
}

还有一个 JUnit 测试来驱动它:
package model.docx4j;

import model.JournalEntry;
import model.JournalEntryFactory;
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.OpcPackage;
import org.docx4j.openpackaging.parts.Parts;

import java.io.IOException;
import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.util.LinkedList;
import java.util.List;

/**
* JournalEntryFactoryImpl using docx4j
* @author Michael
* @link
* @since 9/8/12 12:44 PM
*/
public class JournalEntryFactoryImpl implements JournalEntryFactory {
@Override
public List<JournalEntry> getEntries(InputStream inputStream, String password) throws IOException, GeneralSecurityException {
List<JournalEntry> journalEntries = new LinkedList<JournalEntry>();
if (inputStream != null) {
try {
OpcPackage opcPackage = OpcPackage.load(inputStream, password);
Parts parts = opcPackage.getParts();
} catch (Docx4JException e) {
LOGGER.error("Could not load document into docx4j", e);
throw new IOException(e);
}
}
return journalEntries;
}
}

我在测试中设置了一个断点,以查看 docx4j 在读取我的文档后在做什么。我看到了 8 个部分的列表,但是我在树中走了一圈却没有找到内容。

每个文档都包含一个带有日期和内容的页面,但我找不到页面。他们住在哪里?

最佳答案

主要文档内容位于“主要文档部分”中,通常命名为“/word/document.xml”。

使用 docx4j 获取它的常用方法是:

WordprocessingMLPackage wordMLPackage = (WordprocessingMLPackage)opcPackage;
MainDocumentPart documentPart = wordMLPackage.getMainDocumentPart();

但你希望你的方法也能奏效。

关于docx4j - 使用 docx4j 解析 Word 文档中的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12335332/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com