我需要有关如何保存PDF文件的正确方法的帮助。我使用Java 11中的HttpClient。我在服务器上发送授权请求,然后从服务器获得content-type = [application / pdf]响应。但是,当我将响应另存为PDF时,PDF文件为空。我认为PDF的结构还可以,因为它有4个空白页面。当我打开PDF文件代码时,它充满了问号和随机字符。
它看起来像这样:
%PDF-1.4
%����
3 0 obj
<</ColorSpace/DeviceGray/Subtype/Image/Height 59/Filter/FlateDecode/Type/XObject/Width 250/Length 2527/BitsPerComponent 8>>stream
x��[{XUU���(��Lㄓ9>�F�h|���3Q1�1�tr�ѱ�JEE ˴Q���F��ŗѧ�O4)h|K6 >y�)��眵��{�}�9��K��ǽ�Zk��;���Z�\-�_%����fvaiUMեo��]7����"_s�.�p�pJ���y�t�g�Q�5����k6D���VP����Cl��>o��eӣ�?M�Fh���lrL�n�8��@����F�wΎ�i�s�,��jӢO�Y�(�ٱ6)�&�Vӎ���F���������� ����>�5OM�=��W]M]y�^�$u���E�Nl���z��R� qԇvMA����W�?�]�h���c����R��"��sV��ĐШ)/��MYT2w}�4�����a_oa�qd�n�~UY�ի6
o�������OO���Jw
...
...
...
0001204416 00000 n
0001204779 00000 n
0001205451 00000 n
0001205497 00000 n
trailer
<</Info 33 0 R/ID [<649ae65d919544aa64f7a389364ee40b><e69ed04604543e762e4be5cfb2db490f>]/Root 32 0 R/Size 34>>
startxref
1205620
%%EOF
我的课看起来像这样:
public class Test_pdf {
public static void main(String[] args) throws IOException, InterruptedException {
HttpClient httpClient = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com/client/clientnumber/ident-pdf"))
.GET()
.header("Authorization", "Bearer 123456789")
.build();
HttpResponse<Path> response = httpClient.send(request, HttpResponse.BodyHandlers.ofFile(Paths.get("C:\\test.pdf")));
}
}
我尝试使用以下字节数组:
HttpResponse<byte[]> response = httpClient.send(request, HttpResponse.BodyHandlers.ofByteArray());
File file = new File("C:\\test.pdf");
OutputStream os = new FileOutputStream(file);
os.write(response.body());
System.out.println("Successfully");
os.close();
我尝试使用cURL命令直接下载文件,但是文件存在相同的问题。
curl -v -N https://example.com/client/clientnumber/ident-pdf ^ -H "Authorization: Bearer 123456789" --output test.pdf
这是我第一次处理PDF文档。我会在代码中错过一些编码吗?还是PDF错误的原因是什么?
谢谢。