このソリューションはpdf.jsを使用します
PDF.js ライブラリを使用して base64 PDF をレンダリングする主な手順
- 最初にatobを使用してデコードします
- 次に、上記のデコードされたデータを使用して Uint8Array を初期化します
express-pdfjs/scripts/App.js からの抜粋
let options = {
method: 'GET',
uri: 'http://localhost:5000/getBase64Pdf',
resolveWithFullResponse: true
}
rp(options)
.then((response) => {
if (response.statusCode !== 200) {
console.error('http not 200 but : ', response.statusCode)
} else {
console.info('connected successfully : ' + response.statusCode)
let pdfData = atob(response.body)
let uint8ArrayPdf = new Uint8Array(pdfData.length)
for (let i = 0; i < pdfData.length; i++) {
uint8ArrayPdf[i] = pdfData.charCodeAt(i)
}
let pdfjsframe = document.getElementById('pdfViewer');
pdfjsframe.contentWindow.PDFViewerApplication.open(uint8ArrayPdf);
}
})
pdfViewer は index.html の iframe です
<iframe id="pdfViewer" src="http://localhost:3000/express-pdfjs/pdfViewer/web/viewer.html" height="1600" width="850" />
クライアント側で React を使用したこの実装のサンプルを見つけてください @ https://github.com/rohanray/so-pdf-base64
更新: @ user3590235 の回答もご覧ください:バイナリ文字列または base64 から Internet Explorer 11 に埋め込まれた PDF を表示する