我从我的API获得PDF二进制响应,响应如下:
%PDF-1.3
%ÿÿÿÿ
5 0 obj
<<
/Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.28 841.89]
/Contents 3 0 R
/Resources 4 0 R
>>
endobj
4 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/Font <<
/F1 6 0 R
>>
>>
endobj
7 0 obj
<<
/Producer (PDFKit)
/Creator (PDFKit)
/CreationDate (D:20170306125445Z)
>>
endobj
6 0 obj
<<
/Type /Font
/BaseFont /Helvetica
/Subtype /Type1
/Encoding /WinAnsiEncoding
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 1 0 R
>>
endobj
1 0 obj
<<
/Type /Pages
/Count 1
/Kids [5 0 R]
>>
endobj
3 0 obj
<<
/Length 129
/Filter /FlateDecode
>>
stream
x½
Aû<E^À5Éfó °Øxbwï߸Å)ÎÀ#nxL(HxÿÂûþæ5Jx®ÒÐ#J²b_`{ÁþËÔHUMo®Bc«Ðéýç?dV{[ɽqIoWK»;ÙlíCòç;/'
endstream
endobj
xref
0 8
0000000000 65535 f
0000000452 00000 n
0000000403 00000 n
0000000509 00000 n
0000000125 00000 n
0000000015 00000 n
0000000306 00000 n
0000000214 00000 n
trailer
<<
/Size 8
/Root 2 0 R
/Info 7 0 R
>>
startxref
710
%%EOF
我正在尝试将此二进制响应转换为PDF文件。我搜索了如何将其转换为Blob,这就是我尝试过的:
var blob = new Blob([this.props.pdfDownloadData], { type: 'application/pdf' });
var URL = window.URL || window.webkitURL;
var downloadUrl = URL.createObjectURL(blob);
console.log(downloadUrl);
我的输出为:blob:http://localhost:3000/9fc4a05e-733b-4d34-94ac-ac76bacfb8e5
。每次都给我空白页。
在节点服务器上我使用PDFKit来创建PDF并发送流。这是在反应应用程序中,我在ajax中得到响应。
let doc = new PDFDocument( {
size: 'A4',
margin: 50
} );
doc.pipe(res);
doc.compress = false;
doc.fontSize( 32 );
doc.text( 'PDFKit is simple', 10, 30, {
align: 'center',
width: 200
} );
doc.end();