web-dev-qa-db-ja.com

PDF to blob-JavaScript

PDFファイルを表すBase64文字列があります。javascriptを使用してBlobオブジェクトを含むファイルに変換したいです。完了したら、blobをPDFファイル。

ここに私のコードがあります:

var base64PDF = JVBERi0xLjQNCiW0t..; // This is a huge string.
var blob = new Blob([base64PDF], { type: 'application/pdf' });
saveAs(blob, "test.pdf");

このコードは機能しません。デコード中にエラーが発生したため、このPDFを開けないというtest.pdfを保存します。

私もこれをやろうとしました:

var base64PDF = JVBERi0xLjQNCiW0t..; // This is a huge string.
var decode = atob(screen.prp_wcfria_ExternalFile.pdfFile);
var blob = new Blob([decode], { type: 'application/pdf' });
saveAs(blob, "test.pdf");

このコードも機能しません。どうすればいいですか?

12
user3461486

このjavascriptは、base64文字列をblobオブジェクトに変換します。

// base64 string
var base64str = result.pdf;

// decode base64 string, remove space for IE compatibility
var binary = atob(base64str.replace(/\s/g, ''));
var len = binary.length;
var buffer = new ArrayBuffer(len);
var view = new Uint8Array(buffer);
for (var i = 0; i < len; i++) {
    view[i] = binary.charCodeAt(i);
}

// create the blob object with content-type "application/pdf"               
var blob = new Blob( [view], { type: "application/pdf" });
var url = URL.createObjectURL(blob);
33

Base64文字列を元のバイナリデータに変換し直す必要があります。 atobを使用するだけでは十分ではありません。ループを実行して配列バッファーに変換する必要があります- base64文字列をArrayBufferに変換する
次に、それを使用してblobを作成します。

6
Musa