使用contentResolver将docx转换为Base64会在Android上提供不可读的格式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用contentResolver将docx转换为Base64会在Android上提供不可读的格式相关的知识,希望对你有一定的参考价值。

我有一个文件test.docx包含1个单词“Testing”。此文件位于我的Dropbox文件夹中,我使用contentResolver在App中打开它。

enter image description here

码:

            val inputStream = context.contentResolver.openInputStream(uri)
            val allText = inputStream.bufferedReader().use(BufferedReader::readText)
            base64Image = Base64.encodeToString(allText.toByteArray(), Base64.NO_WRAP)

allText会返回一些数据,但是当把它放在文本文件中并将其保存为.docx时我无法查看它,它已经坏了。我想我应该在bufferedReader方法中添加一个Charset。尝试了一对,但没有一个工作。

什么应该是正确的代码?

答案

DOCX不是纯文本。它是二进制格式。使用readBytes()读取字节:

val bytes = context.contentResolver.openInputStream(uri).readBytes()

请记住,您的应用程序将崩溃与OutOfMemoryError大内容。请重新考虑您的计划以阅读整个内容,更不用说将其转换为base64。

以上是关于使用contentResolver将docx转换为Base64会在Android上提供不可读的格式的主要内容,如果未能解决你的问题,请参考以下文章

使用 LibreOffice / OpenOffice 将 docx 转换为 pdf

PHP将docx文件转换为pdf

您可以使用 R 将 .docm 文件转换为 .docx 吗? [关闭]

使用 Unoconv 将 docx 转换为 pdf 时出错

如何使用 Ghostscript 将 DOCX 或 DOC 文件转换为 TIFF 格式?

使用 soffice 将 doc 转换为 docx 不起作用