pdfjs-dist 展示pdf第一页

npm install pdfjs-dist@2.16.105vue2vue-cli
pdfjs-dist2是js文件,还可以规避高版本浏览器不适配问题

 <div class="hxt-content" id="hxt-content"></div>
import * as pdfjsLib from "pdfjs-dist/legacy/build/pdf.js";
import pdfjsWorker from "pdfjs-dist/legacy/build/pdf.worker.entry.js";

 this.$nextTick(async () => {
      //可以是blob格式,也可以是http文件路径
      const response = await downloadFile(this.url);
      const pdfBlob = await new Blob([response], { type: "application/pdf" });
      const pdfUrlObject = await URL.createObjectURL(pdfBlob);
      // console.log("pdfUrl", pdfBlob, pdfUrlObject);
      // const iframe = document.getElementById("iframe");
      // iframe.src = pdfUrlObject;
      // iframe.onload = () => {
      //   URL.revokeObjectURL(iframe.src);
      // };
      pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;
      // 加载 PDF 文件
      pdfjsLib.getDocument(pdfUrlObject).promise.then((pdf) => {
        pdf.getPage(1).then((page) => {
          const canvas = document.createElement("canvas");
          var container = document.getElementById("hxt-content");
          container.appendChild(canvas);
          const context = canvas.getContext("2d");
          const viewport = page.getViewport({ scale: 0.75 }); //设置网页在canvas中的缩放
          const pageWidth = page._pageInfo.view[2],
            pageHeight = page._pageInfo.view[3];
          // canvas.height = viewport.height;
          // canvas.width = viewport.width;
          canvas.height = container.offsetHeight - 20; //避免顶格显示
          canvas.width = (canvas.height / pageHeight) * pageWidth + 50; 

          const renderContext = {
            canvasContext: context,
            viewport: viewport,
          };
          console.log(page, renderContext);
          page.render(renderContext);
        });
      });

import * as pdfjsLib from "pdfjs-dist/legacy/build/pdf.js";
import pdfjsWorker from "pdfjs-dist/legacy/build/pdf.worker.entry.js";
// ---------图片显示
 this.$nextTick(async () => {
      //可以是blob格式,也可以是http文件路径
      const response = await downloadFile(this.url);
      const pdfBlob = await new Blob([response], { type: "application/pdf" });
      const pdfUrlObject = await URL.createObjectURL(pdfBlob);
      pdfjsLib.GlobalWorkerOptions.workerSrc = pdfjsWorker;
      // 加载 PDF 文件
      pdfjsLib.getDocument(pdfUrlObject).promise.then((pdf) => {
        pdf.getPage(1).then((page) => {
          const canvas = document.createElement("canvas");
          const context = canvas.getContext("2d");
          const _multiple = 3; // 倍数,防止canvas转图片放大失真
          const viewport = page.getViewport({ scale: _multiple  }); // 页面等比放大
          const pageWidth = page._pageInfo.view[2],
                pageHeight = page._pageInfo.view[3]; // pdf页面大小
          canvas.height = pageHeight * _multiple ;
          canvas.width = pageWidth * _multiple ;

          const renderContext = {
            canvasContext: context,
            viewport: viewport
          };
          const renderTask = await page.render(renderContext);
          renderTask.promise.then(async () => {
            this.imgUrl = await canvas.toDataURL("image/png"); //canvas->image
            console.log(this.imgUrl);
          });
        });
      });

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容