首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Pdf.js:使用base64文件源而不是url呈现pdf文件

Pdf.js:使用base64文件源而不是url呈现pdf文件
EN

Stack Overflow用户
提问于 2012-08-23 21:25:12
回答 2查看 137.9K关注 0票数 77

我正在尝试用pdf.js从pdf中渲染一个页面。

通常,使用url,我可以这样做:

代码语言:javascript
复制
PDFJS.getDocument("http://www.server.com/file.pdf").then(function getPdfHelloWorld(pdf) {
  //
  // Fetch the first page
  //
  pdf.getPage(1).then(function getPageHelloWorld(page) {
    var scale = 1.5;
    var viewport = page.getViewport(scale);

    //
    // Prepare canvas using PDF page dimensions
    //
    var canvas = document.getElementById('the-canvas');
    var context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    //
    // Render PDF page into canvas context
    //
    page.render({canvasContext: context, viewport: viewport});
  });
});

但在本例中,我将文件放在base64中,而不是url中:

代码语言:javascript
复制
data:application/pdf;base64,JVBERi0xLjUKJdDUxdgKNSAwIG9iaiA8PAovTGVuZ3RoIDE2NjUgICAgICAKL0ZpbHRlciAvRmxhdGVEZWNvZGUKPj4Kc3RyZWFtCnjarVhLc9s2...

如何做到这一点?

EN

回答 2

Stack Overflow用户

发布于 2018-03-02 01:24:25

直接支持According to the examples base64编码,尽管我自己还没有测试过。获取您的base64字符串(从文件派生或使用任何其他方法加载,POST/GET,websockets等),使用atob将其转换为二进制,然后在PDFJS API上将其解析为getDocument,就像PDFJS.getDocument({data: base64PdfData}); Codetoffel answer对我来说工作得很好。

票数 5
EN

Stack Overflow用户

发布于 2016-03-18 01:50:45

使用接受的答案检查IE并将dataURI转换为UInt8Array;这是PDFJS接受的形式

代码语言:javascript
复制
        Ext.isIE ? pdfAsDataUri = me.convertDataURIToBinary(pdfAsDataUri): '';

        convertDataURIToBinary: function(dataURI) {
          var BASE64_MARKER = ';base64,',
            base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length,
            base64 = dataURI.substring(base64Index),
            raw = window.atob(base64),
            rawLength = raw.length,
            array = new Uint8Array(new ArrayBuffer(rawLength));

          for (var i = 0; i < rawLength; i++) {
            array[i] = raw.charCodeAt(i);
          }
          return array;
        },

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12092633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档