将PDF文件从base64字符串显示为HTML



我正在尝试如何用来自数据库的字符串以HTML显示pdf文件。(绳子太长了,所以我剪断了(

JVBERi0xLjUNCiW1tbW1DQoxIDAgb2JqDQo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMiAwIFIvTGFuZyhlbi1VUykgL1N0cnVjdFRyZWVSb290IDIzIDAgUi9NYXJrSW5mbzw8L01hcmtlZCB0cnVlPj4+Pg0KZW5kb2JqDQoyIDAgb2JqDQo8PC9UeXBlL1BhZ2VzL0NvdW50IDIvS2lkc1sgMyAwIFIgMTggMCBSXSA+Pg0KZW5kb2JqDQozIDAgb2JqDQo8PC9UeXBlL1BhZ2UvUGFyZW50IDIgMCBSL1Jlc291cmNlczw8L0ZvbnQ8PC9GMSA1IDAgUi9GMiA5IDAgUi9GMyAxNCAwIFI+Pi9FeHRHU3RhdGU8PC9HUzcgNyAwIFIvR1M4IDggMCBSPj4vWE9iamVjdDw8L0ltYWdlMTYgMTYgMCBSL0ltYWdlMTcgMTcgMCBSPj4vUHJvY1NldFsvUERGL1RleHQvSW1hZ2VCL0ltYWdlQy9JbWFnZUldID4+L01lZGlhQm94WyAwIDAgNjEyIDkzNl0gL0NvbnRlbnRzIDQgMCBSL0dyb3VwPDwvVHlwZS9Hcm91cC9TL1RyYW5zcGFyZW5jeS9DUy9EZXZpY2VSR0I+Pi9UYWJzL1MvU3RydWN0UGFyZW50cyAwPj4NCmVuZG9iag0KNCAwIG9iag0KPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA1NDU+Pg0Kc3RyZWFtDQp4nLWWX2vbMBTF3w3+DvdRGliRrv5D

当我使用atob()时,它显示为这样的

'%PDF-1.5rn%µµµµrn1 0 objrn<</Type/Catalog/Pages 2 0 R/Lang(en-US) /StructTreeRoot 23 0 R/MarkInfo<</Marked true>>>>rnendobjrn2 0 objrn<</Type/Pages/Count 2/Kids[ 3 0 R 18 0 R] >>rnendobjrn3 0 objrn<</Type/Page/Parent 2 0 R/Resources<</Font<</F1 5 0 R/F2 9 0 R/F3 14 0 R>>/ExtGState<</GS7 7 0 R/GS8 8 0 R>>/XObject<</Image16 16 0 R/Image17 17 0 R>>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/MediaBox[ 0 0 612 936] /Contents 4 0 R/Group<</Type/Group/S/Transparency/CS/DeviceRGB>>/Tabs/S/StructParents 0>>rnendobjrn4 0 objrn<</Filter/FlateDecode/Length 545>>rnstreamrnxx9Cµx96_kÛ0x14Åßrþx0E÷Qx1AXx91®þCb´¶x17Rx96­KÜõ!ìax94.OÝØöýax92x12Xx96Z¬Nµ<x98Èx96ý;GWçÚ0»x85ù|¶nWx1DðÅx02®»x16~Ôx15g<þ¼@à`ÂÑKx03?x1Fëêþr|««ë¡®fox05bx01Ã׺x12ax12x07x01>Üx86x1Ax9Cx96L;x18x9E¤åÖÂþWx ìÓÈx1DG˺Úx91õx15µäx86*òx81J²x01ÚbNúw};PMV´Ñäx13mx1Cé!fx05ÐÏ0ÜÔUx1FÐx1Fëê¥x1Añ\£°x8Eñ¿4&ix07Es.­Z\x04z¶x18ÂI¦r r¡x9Dx11x8AÉÛ!ÛvÓ÷´x91ä}Xä{Ú Ù¤ux1DÂ0ýIx87xqYHx0Fx9A Çýo×hx1CSYJ»x05x1Avx92ôѹ(x85ôx8EÙx17úx82~Ýx02x9C$KLLx96<§k)x98° x1D2!'ãñµÁ62x05[x1Bdú9þ<Æ6x17b,µéx95x8BÑÊÈ)Ö)´x88Ñx1A§x14íx14Úx94·3BqÌe)WÔx90»x8E6öP³XÉÐx8F}:x1FûCx17Ïx02ux87j®Jx85nuÌñ¨&bx8F´0<ìH×x97ÂIË\x06·;zvä6ìÔM)¢öÌØ<±x11Ç¥½+x05tx82ex8Bx1C2iþÔ7x96µÔæx92x02YÖf»x95¾Tô¥âyx7Fÿêx83²Px1BÆÐx19Bx94¦âÕkñÇ6x8Cx12x19NÇëBox01äþx12÷¦x10^8Ëx14NÆÛQ¼¶2tx88x1Fx14§x12x94qx89x1Aóx8Bx81x9CÞ¼nx1Eâ'íêéËþQx18è¾Ãx18Èx8Dx82P!st%¹=Cx85¦tx80ùx%ÀPÇÉ'0{nûr<y4'rnendstreamrnendobjrn5 0 objrn<</Type/Font/Subtype/TrueType/Name/F1/BaseFont/ABCDEE+Calibri,Bold/Encoding/WinAnsiEncoding/FontDescriptor 6 0 R/FirstChar 32/LastChar 87/Widths 52 0 R>>rnendobjrn6 0 objrn<</Type/FontDescriptor/FontName/ABCDEE+Calibri,Bold/Flags 32/ItalicAngle 0/Ascent 750/Descent -250/CapHeight 750/AvgWidth 536/MaxWidth 1781/FontWeight 700/XHeight 250/StemV 53/FontBBox[ -519 -250 1263 750] /FontFile2 50 0 R>>rnendobjrn7 0 objrn<</Type/ExtGState/BM/Normal/ca 1>>rnendobjrn8 0 objrn<</Type/ExtGState/BM/Normal/CA 1>>rnendobjrn9 0 objrn<</Type/Font/Subtype/Type0/BaseFont/ABCDEE+Calibri,Bold/Encoding/Identity-H/DescendantFonts 10 0 R/ToUnicode 49 0 R>>rnendobjrn10 0 objrn[ 11 0 R] rnendobjrn11 0 objrn<</BaseFont/ABCDEE+Calibri,Bold/Subtype/CIDFontType2/Type/Font/CIDToGIDMap/Identity/DW 1000/CIDSystemInfo 12 0 R/FontDescriptor 13 0 R/W 51 0 R>>rnendobjrn12 0 objrn<</Ordering(Identity) /Registry(Adobe) /Supplement 0>>rnendobjrn13 0 objrn<</Type/FontDescriptor/FontName/ABCDEE+Calibri,Bold/Flags 32/ItalicAngle 0/Ascent 750/Descent -250/CapHeight 750/AvgWidth 536/MaxWidth 1781/FontWeight 700/XHeight 250/StemV 53/FontBBox[ -519 -250 1263 750] /FontFile2 50 0 R>>rnendobjrn14 0 

我尝试了我在这里找到的其他解决方案,但它没有显示pdf";未能加载PDF文档";。

谢谢你的回答!

使用PDFJS从base64字符串中显示它。

首先将base64字符串转换为二进制:

function convertToBinary(base64) {
var raw = window.atob(base64);
var rawLength = raw.length;
var array = new Uint8Array(new ArrayBuffer(rawLength));
for(var i = 0; i < rawLength; i++) {
array[i] = raw.charCodeAt(i);
}
return array;
}

然后可以调用PDFJS.getDocument()方法。

var pdf = convertToBinary({yourBase64String});
PDFJS.getDocument(pdf);

最新更新