我收到来自包含PDF的服务器的回复。如下所示(仅在下面显示简短的编辑版本):
%PDF-1.4
%????
9 0 obj
%%EOF
使用此字符串或字节数组,如何创建pdf文件?
我已尝试使用以下内容,但它在pdf中显示空白页
OutputStream oos = new FileOutputStream("test.pdf");
oos.write(b);
我可以在控制台中看到整个字符串,它是一个以%PDF-1.4开头并以%% EOF结尾的长字符串。我也尝试读取8192字节并写入。结果仍然相同:
byte[] buf = wholeString.getBytes(Charset.forName("UTF-8"));
OutputStream oos = new FileOutputStream(tpath);
InputStream is = new ByteArrayInputStream(buf);
int c = 0;
while ((c = is.read(buf, 0, buf.length)) > 0) {
System.out.println();
oos.write(buf, 0, c);
oos.flush();
}
oos.close();
is.close();
我正在使用EntityUtils来获取流:
String responseBody = EntityUtils.toString(httpResponse.getEntity(), Charset.forName("UTF-8"));
然后将转换后的字符串发送到另一个方法,我尝试将其写入文件。
答案 0 :(得分:2)
在评论中讨论后,这应该可以解决您的直接问题:
byte[] entityBytes = EntityUtils.toByteArray(httpResponse.getEntity());
Files.write(Paths.get("test.pdf"), entityBytes);
任何进入你程序的东西总是以字节形式出现。
如果您没有从程序外部获取字节,这意味着某些框架或库已经完成了解码,可能是错误的。
请注意,作为一般规则,除非:
,否则应始终避免转换为字符串