4

バイナリ文字列または base64 でエンコードされた PDF ファイルを送信してくれるサードパーティのサービスがあります。バイナリ文字列または base64 エンコードを使用して、IE 11 に埋め込まれた PDF を表示する可能性はありますか。

SO や他のフォーラムから、IE 11 はデータ uri をサポートするのは画像のみであり、PDF はサポートしない (私が間違っている可能性があります) ため、base64 が除外されると結論付けました。したがって、残っている唯一のオプションは、バイナリ文字列から表示することです。Node アプリで使用していますが、取得したファイルを最初に Node サーバーに保存して静的 URL を使用するオプションがありません。

上記がIE 11で達成可能かどうか教えてください。

現在、 https://github.com/pipwerks/PDFObjectの npm パッケージを使用しようとしています。Chrome と Firefox の場合、base64 ファイルを取得し、上記のパッケージを使用して埋め込むと、正常に動作します。

4

2 に答える 2

3

このソリューションは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 を表示する

于 2016-12-19T04:05:22.110 に答える