无法在JavaScript中将PDF返回的响应转换为base64

时间:2019-03-01 13:32:45

标签: javascript angularjs

下面是PDF响应来自API服务器,我试图转换为PDF文件,但不能。

%PDF-1.3
%ÿÿÿÿ
4 0 obj
<<
/Predictor 15
/Colors 1
/BitsPerComponent 8
/Columns 282
>>
endobj
3 0 obj
    <<
/Type /XObject
/Subtype /Image
/BitsPerComponent 8
/Width 282
/Height 479
/Filter /FlateDecode
/DecodeParms 4 0 R
/ColorSpace /DeviceGray
/Length 39904
>>
stream
ÄÁ‡¿–óãøñ×}ŸÙé´÷Þi (+³m•ŒHv(‰¨(³ˆ e dF’(YE!TH%-
R Çë÷¾®ë¾ïsŸœ’ßãÑçû|âÿ ¿§žsÊÛºýùáýnüÄÈ7 ß5òûj ¿¼ÿöOþ Áÿ;M †œ‘"Òzž~W Sô·c ù uS ‚:3ü? ÿg†SY ‘Õ    n|¼œ ÖcóG “¸Ûÿ ø¿¶oLûF ¿ÐÅ ±Ô<õ§Å³ž™óé¯þÏàÿÈ®¿ ½XF¤ÿëõ9¤vçÔ&ÑzÄ5… µÊȨ~åjÿ7ð `Í Í jÝ/ }y+þ©Å OŒiH¤ùE- kÔ^ 5ßTïä © ýŸÀ£nk_ªvéGïö Ú ¹ xDmAcƒßSÐt§ÁSüÃ0ÿ ðh›[B%u‡ô/!r•Á$xÞØñœn0… Œ´¢ÆF#£ ¢>S ¯Zóù+ÃˉÍõ ² STr®ºïJ‚¯ ôa‰±ç˜f°„ \À4cM) û—Y7 iíÿ eµ¨¤‹± jÀ F¾g‘±ïxÏà7Œ]Wfì š®6ϵD>ðèÃ£ë … L Ñ Î5c}c¾2ÖiŠ±•¼hð'Æ. l¬Eí­æ[Kä
><ºN'vù^ƒ VXWtƒ±+Û û€± Øn¤ãd#oð¹úëäÞ
NúÃÈf"õ=úðèêDd²y~üÆÈC…›ŒÜÆMF&ÒÐ o ,gž‘ †ªo¦ .6ò81 ><ºÎ&èb%Cš.7¨ÓÙÈÕð¢A oÀ9 ÝXn°‘_ÔêÔ¼ä†c» ©Oì7 :<ºÆ Übe Ê6« 2Èà$(Ú¬¦¡µº –èjXapg#õÎÒG
ö t#±Ø£ ®Ù ™õx ²‘êI ÊxX- .Ñ'€2õ>è£ À ƒ ôïš+ÌXÓåüI R ×{Ôáѵ‚à #»\ׇë[r¢îkx©z3…¿ú*A5=†@×—@‰Ž‡ÛÕA°ÀÞ·š8p[Áãê{D&x´áѵ•`¢ÁÔ ‚OwÕa¸Îaº~ ÿÙ€ ±»ˆ,t0ÐX—Bé‚ { ”ðž‘ £Kà€As" z”áQFp«‘m 3 wi‹âßü Ö%(šéÞ×¾úý€‘ý¿mW'”‘ó‚Á’r‚é § iíQ†GY Ðyÿ“§~¡ö€qÚ †~Þœ&Oõ%èzÃË¿X•-ïÜؒع × )Y­žOì .<Ê +øD¿,ƒez Y ¯{×ÃÚþÂ…% zË`ö 3/MSo›>Nìn .<ÊN Òîk]V ÃÕë‰5 ûƒGâÅ“à•Æ~lN µ ‘ =ºð(»‘ £Á'7ÜøªÁ ࢥ ±ÍW pÊ“› 
endstream
endobj
11 0 obj
<<
/Type /ExtGState
/ca 1
/CA 1
>>
endobj
14 0 obj
<<
/Type /ExtGState
/CA 1
>>
endobj
10 0 obj
<<
/Type /Page
/Parent 1 0 R
/MediaBox [0 0 595.28 841.89]
/Contents 8 0 R
/Resources 9 0 R
>>
endobj
9 0 obj
<<
/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]
/ExtGState <<
/Gs1 11 0 R
/Gs2 14 0 R
>>
/XObject <<
/I1 3 0 R
/I2 5 0 R
/I3 7 0 R
>>
/Font <<
/F2 12 0 R
/F1 13 0 R
>>
>>
endobj
15 0 obj
<<
/Producer (pdfmake)
/Creator (pdfmake)
/CreationDate (D:20190301123029Z)
>>
endobj
17 0 obj
<<
/Type /FontDescriptor
/FontName /GYTURC+Roboto-Medium
/Flags 4
/FontBBox [-732.421875 -270.996094 1169.921875 1056.152344]
/ItalicAngle 0
/Ascent 927.734375
/Descent -244.140625
/CapHeight 710.9375
/XHeight 528.320313
/StemV 0
/FontFile2 16 0 R
>>
endobj
18 0 obj
<<
/Type /Font
/Subtype /CIDFontType2
/BaseFont /GYTURC+Roboto-Medium
/CIDSystemInfo <<
/Registry (Adobe)
/Ordering (Identity)
/Supplement 0
>>
/FontDescriptor 17 0 R
/W [0 [908 652.832031 569.335938 556.152344 516.113281 255.371094 255.371094 564.453125 541.015625 332.519531 536.621094 249.023438 565.429688 328.125 879.882813 486.816406 630.859375 568.359375 279.296875 743.164063 653.320313 568.359375 568.359375 568.359375 568.359375 568.359375 395.507813 568.359375 568.359375 665.527344 630.371094 639.160156 646.972656 568.359375 602.050781 568.359375 562.988281 566.894531 351.5625 624.023438 709.960938 606.933594 690.429688 282.226563 870.117188 603.515625 639.160156 523.4375 555.664063]]
>>
endobj
13 0 obj
<<
/Type /Font
/Subtype /Type0
/BaseFont /GYTURC+Roboto-Medium
/Encoding /Identity-H
/DescendantFonts [18 0 R]
/ToUnicode 19 0 R
>>
endobj
21 0 obj
<<
/Type /FontDescriptor

请在这里帮助我找到解决此问题的方法。

我在邮递员应用程序中使用此API尝试过,下载文件工作正常。但是在JavaScript中,我无法转换

我正在使用以下代码进行隐藏

var file = new Blob([response], { type: 'application/octet-stream' });
var link = document.createElement('a');
link.href =  window.URL.createObjectURL(file);
link.download = "test";
link.click();

1 个答案:

答案 0 :(得分:1)

显然,此问题与转换PDF内容本身无关。

尝试使用download.js和Blob。假设您正在使用fetch

let download = require('./download.min');

...

function downloadFile(token, fileId) {
  let url = `https://www.googleapis.com/drive/v2/files/${fileId}?alt=media`;
  return fetch(url, {
    method: 'GET',
    headers: {
      'Authorization': token
    }
  }).then(function(resp) {
    return resp.blob();
  }).then(function(blob) {
    download(blob);
  });
}

请参阅此question