Javascript 将PDF base64编码加载到PDF.js的viewer.js中

Javascript 将PDF base64编码加载到PDF.js的viewer.js中,javascript,base64,pdf.js,Javascript,Base64,Pdf.js,我在用PDF.JS战斗。我只想忽略在GET参数中添加一个pdf文件。。今天是谁干的 所以我的问题是,我试图将一个pdf文件加载到我加载的pdf.js文件中。我想使用viewer.html和viewer.js。该文件被用作base64编码字符串。对于测试,我将base64代码加载到html中,以便通过Javascript直接访问 我正在加载的文件: build/pdf.js build/pdf.worker.js web/viewer.js 没有加载错误 var BASE64_MARK

我在用PDF.JS战斗。我只想忽略在GET参数中添加一个pdf文件。。今天是谁干的

所以我的问题是,我试图将一个pdf文件加载到我加载的pdf.js文件中。我想使用viewer.html和viewer.js。该文件被用作base64编码字符串。对于测试,我将base64代码加载到html中,以便通过Javascript直接访问

我正在加载的文件:

  • build/pdf.js
  • build/pdf.worker.js
  • web/viewer.js
没有加载错误

    var BASE64_MARKER = ';base64,';
    var pdfAsArray = convertDataURIToBinary("data:application/pdf;base64, " + document.getElementById('pdfData').value);


    pdfjsLib.getDocument(pdfAsArray).then(function (pdf) {
        //var url = URL.createObjectURL(blob);
        console.log(pdfjsLib);
        pdf.getPage(1).then(function(page) {
            // you can now use *page* here
            var scale = 1.5;
            var viewport = page.getViewport({ scale: scale, });
            // Prepare canvas using PDF page dimensions.
            var canvas = document.getElementById('viewer');
            var context = canvas.getContext('2d');
            canvas.height = viewport.height;
            canvas.width = viewport.width;
            // Render PDF page into canvas context.
            var renderContext = {
              canvasContext: context,
              viewport: viewport,
            };
            page.render(renderContext);
        });

      //pdfjsLib.load(pdf);
    })


    function convertDataURIToBinary(dataURI) {
            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;
       }
我将得到一个类似“open不是函数”的错误(我也使用load()尝试过)


对不起,我的英语很差,希望你能理解我的问题并能帮助我。

你的
viewer.html
在哪里加载?下面是一个在iframe中加载PDF的答案:正如我提到的,我不想在iframe中加载PDF。这对我来说毫无意义。我还想在移动视图上显示pdf。这可能是iframe的问题。HTML也没有问题,我用Codeigniter加载HTML,我在视图中完美地呈现了查看器。我不明白如果包含
viewer.HTML
,那么您可以向它传递查询参数,比如
viewer.HTML?file={pdfAsArray}
?Sry,以获取最新答案。我将应用程序更改为Viewer.Js。通过viewer.js,我能够传递一个简单的url,该url响应base64编码的PDF。这对我有用。我知道Viewer.js只是pdf.js的一个扩展,它使用这个库。但我不知道为什么它不能与pdf.js中的viewer.html一起工作
pdfjsLib.PDFViewerApplication.open(pdfAsArray);