我正在使用以下函数将 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;
}
最佳答案
错误的部分是:String inputStreamToString = inputStream.toString();
。结果,您不会获得输入流的内容,您只会获得类似“FileInputStream@021849”的内容。
您应该以另一种方式从流中读取,例如:Android FileInputStream read() txt file to String
顺便说一句,您可以直接将文件读取为字节数组,而不是将文件读取为字符串并将其转换为字节数组。
关于android - 在android中将pdf转换为String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38007059/