【问题标题】:Convert a pdf to String in android在android中将pdf转换为字符串
【发布时间】:2016-10-26 16:46:49
【问题描述】:

我正在使用以下函数将 pdf 转换为字符串:

        private String GetString(String filepath) throws IOException {
        InputStream inputStream = new FileInputStream(filepath);
        String inputStreamToString = inputStream.toString();
        byte[] byteArray = inputStreamToString.getBytes();
        String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
        return encoded;
    }

我得到的输出为:

amF2YS5pby5GaWxlSW5wdXRTdHJlYW1ANTM1MDhmNTg=

我发现这个输出是错误的。因为当我编码一个 2MB 的 pdf 文件时,它肯定不会那么短。实际上我在 php 服务器中进行了 base64 解码,输出是无效的 pdf。所以我的问题是函数中缺少什么?

好的。问题解决了。以下是执行此操作的正确代码:

private String GetString(String filepath) throws IOException {
            InputStream inputStream = new FileInputStream(filepath);
            byte[] byteArray = IOUtils.toByteArray(inputStream);
            String encoded = Base64.encodeToString(byteArray, Base64.DEFAULT);
            return encoded;
        }

【问题讨论】:

  • 怎么了?你知道正确的结果吗?最后,你想做什么?
  • 也许你必须使用不同的编码? UTF-8?必须与保存的 pdf 文件相同。
  • 你看看你是否将一个 2MB 的 pdf 文件转换为字符串,这能这么短这么小吗?此外,我在 php 服务器中进行了 base64 解码,输出是无效的 pdf ......所以这样我就知道输出是错误的。 @Sergey Glotov
  • 可以在Android Studio 2.3.1中解析符号IOUtils

标签: android


【解决方案1】:

您可以使用第二个代码解决它。 但是“IOUtils”里的函数代码。

【讨论】:

    【解决方案2】:

    错误的部分是:String inputStreamToString = inputStream.toString();。结果你不会得到输入流的内容,你只会得到像“FileInputStream@021849”这样的东西。

    您应该以另一种方式从流中读取,例如:Android FileInputStream read() txt file to String

    顺便说一句,您可以直接将文件读取为字节数组,而不是将文件读取为字符串并将其转换为字节数组。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      相关资源
      最近更新 更多