如何显示或读取docx文件

时间:2012-05-04 11:24:23

标签: java android ms-word docx

我不熟悉在android中渲染文件,我想在我的应用程序中渲染或显示docx文件。

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

我已经找到了几种用纯Java显示图像的方法,但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
                }
            }
        }
    }

3 个答案:

答案 0 :(得分:8)

查看AndroidDocxToHtml,我在Android上使用docx4j进行演示。

有几点需要注意。

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

其次,docx4j需要JAXB - 请参阅this blog post re JAXB on Android - 应用启动时JAXB上下文初始化需要一段时间,具体取决于设备。有办法解决这个问题,但要付出额外的努力。

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

答案 1 :(得分:6)

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

答案 2 :(得分:5)

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

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

获得Bitmap对象后,您可以使用setImageBitmap方法在布局中的ImageView上设置该对象。