亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PDF.js:如何在新選項卡中顯示 PDF?

PDF.js:如何在新選項卡中顯示 PDF?

喵喔喔 2021-09-30 17:25:28
作為序言,我必須主持一個事實,即我在 Web 開發環境方面的知識是有限的。事實上,我的問題對某些人來說可能是微不足道的。通過 Ajax 調用,我通過 TCPDF 生成一個 PDF,然后在一個變量中檢索它。我將其轉換為 base64 并將其放置在 Uint8Array 中。    function create_pdf() {    var jsonOptions = jQuery("#Form").serializeArray();    $.ajax({        url: 'tcpdf/samples/samples_002c.php',        type: 'POST',        cache: false,        data: jsonOptions    })        .done(function(data) {            var pdfData = convertDataURIToBinary('data:application/pdf;base64,' + data);            // View PDF            // .....    })        .fail(function() {            alert('Faild');    });    return false;}function convertDataURIToBinary(dataURI) {    var BASE64_MARKER = ';base64,';    var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;    var base64 = dataURI.substring(base64Index);    var raw = window.atob(base64);    var rawLength = raw.length;    var array = new Uint8Array(new ArrayBuffer(rawLength));    for(i = 0; i < rawLength; i++) {        array[i] = raw.charCodeAt(i);    }    return array;}我想通過新選項卡中的 PDF.js 查看器(目的是避免將 PDF 保存在服務器上的文件中)在用戶的計算機上顯示它。我一直在尋找幾天來完成這部分沒有成功。您是否有研究主管可以讓我在這個項目中取得成功?預先感謝您的建議。
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

一種解決方案是不使用 PDF.js 并依賴瀏覽器處理 PDF 的open功能(如@MarcoDeveloper 建議的那樣)。另一種解決方案是準備單獨的頁面,該頁面將使用 PDF.js 顯示您的文件。


為此,您需要準備簡單的 html 頁面。我建議使用帖子消息,但如果您的頁面在同一域中,您也可以直接發送數據。


預覽.html:


window.addEventListener("message", receiveMessage, false);

function receiveMessage(e) {

   if (event.origin === window.location.origin) {

       PDFJS.getDocument({ data: convertDataURIToBinary(e.data) }).then(function() {

       });

   }

}

索引.html:


var win = window.open('preview.html');

win.postMessage(dataURI, '*');

發送 base64 數據并在 preview.html 中解碼可能是個好主意。


要直接發送 pdf 數據,您可以使用(僅在同一域中):


var win = window.open('preview.html');

win.PDFJS.getDocument({ data: binary_data });

文件 preview.html 只需要包含 PDF.js 的 JS 文件,它應該可以工作。


查看完整回答
反對 回復 2021-09-30
?
慕慕森

TA貢獻1856條經驗 獲得超17個贊

// ADD OPEN WHIT WINDOW JAVASCRIPT

var pdfData = convertDataURIToBinary('data:application/pdf;base64,' + data);

window.open(pdfData);


查看完整回答
反對 回復 2021-09-30
  • 2 回答
  • 0 關注
  • 254 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號