Javascript PDF二进制响应文件

时间:2017-03-06 13:04:13

标签: javascript pdf stream buffer blob

我从我的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();

0 个答案:

没有答案