12

我是在 android 中渲染文件的新手,我想在我的应用程序中渲染或显示 docx 文件。

我已经从 docx 文件中提取了文本,但现在我也想从 docx 文件中提取图像。

我已经找到了几种在纯 J​​ava 中显示图像的方法,但是对于 Android 有什么好的例子吗?

我试过这段代码来获取图像但没有工作......

public void extractImages(Document xmlDoc)
{
    NodeList binDataList = xmlDoc.getElementsByTagName("w:drawings");
    String fileName = "";
    Node currentNode;
    for(int i = 0; i < binDataList.getLength(); i++)
    {
        currentNode = binDataList.item(i);
        if(currentNode.getNodeType() == Node.ELEMENT_NODE && ((Element)currentNode).hasAttribute("w:name"))
        {               
            File newImageFile = new File(picDirectory, ((Element)currentNode).getAttribute("w:name").replaceFirst("wordml://", ""));
            if(newImageFile.exists())
            {

            }
            else
            {
                if(writeImage(newImageFile, currentNode))
                {
                    //Print some success message
                }
            }
        }
    }
4

3 回答 3

9

看看AndroidDocxToHtml,我用它来演示在 Android 上使用 docx4j。

几个警告。

首先,该项目不包含所有 docx4j 依赖项,仅包含 docx 到 HTML 转换所需的依赖项。因此,如果您想做其他事情,则可能需要其他依赖项。

其次,docx4j 需要 JAXB - 请参阅此博客文章 re JAXB on Android - 应用程序启动时的 JAXB 上下文初始化需要一段时间,具体取决于设备。有一些方法可以解决这个问题,但需要付出额外的努力。

如果您只想提取图像,而不关心它们与文本的关系,您可以只查找图像部分。您可以为此使用OpenXML4J,并避免使用 JAXB。

于 2012-06-12T12:40:45.760 回答
5

在 Android 中创建图像最简单的方法是使用BitmapFactory工厂方法。

该类BitmapFactory具有Bitmap从字节数组、文件或 InputStream 创建的方法。

一旦你有了一个对象,你可以通过使用方法在你的布局中Bitmap设置它来显示它。ImageViewsetImageBitmap

于 2012-06-07T20:46:30.507 回答
5

您可以解压缩文件(重命名为 .zip 并打开它),然后您可以调查文件夹结构、图像所在的位置等。

于 2012-06-11T08:54:29.923 回答