如何从数据库中读取Microsoft Word二进制数据并将其转换为可读文本

时间:2015-04-30 00:38:17

标签: aspose.words

我正在一个名为Mirth的java应用程序中工作,我需要读取一个以Microsoft字二进制数据格式保存在数据库表中的已保存word文档。目前我可以从我的java应用程序中的列中检索数据,但我需要将其转换为可读文本或XML或HTML格式。

在线查看有一个java库调用Aspose.words但我找不到任何可以读取这个二进制数据并将其转换为可读内容的方法。有没有人之前使用Aspose.words来完成这样的任务,或者是否有人有替代解决方案

1 个答案:

答案 0 :(得分:0)

从数据库加载文档

您可以使用ByteArrayInputStream加载Word文档(如果它在数据库表中)。有关解释如何在数据库中保存和读取Word文档的文章,请参阅http://www.aspose.com/docs/display/wordsjava/How+to++Load+and+Save+a+Document+to+Database。我已从那里复制了相关代码。

public static Document readFromDatabase(String fileName) throws Exception
{
    // Create the SQL command.
    String commandString = "SELECT * FROM Documents WHERE FileName='" + fileName + "'";

    // Retrieve the results from the database.
    ResultSet resultSet = executeQuery(commandString);

    // Check there was a matching record found from the database and throw an exception if no record was found.
    if(!resultSet.isBeforeFirst())
        throw new IllegalArgumentException(MessageFormat.format("Could not find any record matching the document \"{0}\" in the database.", fileName));

    // Move to the first record.
    resultSet.next();

    // The document is stored in byte form in the FileContent column.
    // Retrieve these bytes of the first matching record to a new buffer.
    byte[] buffer = resultSet.getBytes("FileContent");

    // Wrap the bytes from the buffer into a new ByteArrayInputStream object.
    ByteArrayInputStream newStream = new ByteArrayInputStream(buffer);

    // Read the document from the input stream.
    Document doc = new Document(newStream);

    // Return the retrieved document.
    return doc;

}

阅读文字

加载文件后,您可以使用DOM阅读它的段落,表格,图像等,请参阅http://www.aspose.com/docs/display/wordsjava/Programming+with+Documents上的相关文档。

但是,如果您只想从文档中获取所有文本,可以通过调用toString()方法轻松完成,如下所示

System.out.println(doc.toString(SaveFormat.TEXT));

我与Aspose一起担任开发者布道者。