当前位置: 首页 > news >正文

网站建设规范方案松江做网站

网站建设规范方案,松江做网站,中山网站建设招聘,济南电商培训基地最近项目中需要用到js库来渲染pdf文件#xff0c;调研后发现无论是reach-pdf.js或者是svelte-pdf.js都是在pdf.js基础上做了些许精简#xff0c;反而功能还不如原始的pdf.js来得全面。但是原始的库几乎没有像样的代码示例#xff0c;而能搜索到的大多数代码不少都是十几年前…最近项目中需要用到js库来渲染pdf文件调研后发现无论是reach-pdf.js或者是svelte-pdf.js都是在pdf.js基础上做了些许精简反而功能还不如原始的pdf.js来得全面。但是原始的库几乎没有像样的代码示例而能搜索到的大多数代码不少都是十几年前的了在这个过程中踩了不少坑做个记录希望对看到的人有所帮助。 使用npm安装pdfjs-dist库也可以直接下载源码并引入 npm install pdfjs-dist导入库 // 网上很多代码都是import xxx from pdfjs-dist; // 而xxx一般都是过期或者不存在的直接把所有导出为pdfjslib即可 import * as pdfjslib from pdfjs-dist; // 注意需要设置这个参数 pdfjslib.GlobalWorkerOptions.workerSrc node_modules/pdfjs-dist/build/pdf.worker.js;单页渲染多页渲染在下面代码基础上直接添加一个循环即可 let src xxx.pdf; let pageNum 1; let scale_ratio 1.5;async function renderPage() {const pdf await pdfjsLib.getDocument(src).promise;const page await pdf.getPage(pageNum);const viewport page.getViewport({ scale: scale_ratio });const canvas document.createElement(canvas);const context canvas.getContext(2d);canvas.height viewport.height;canvas.width viewport.width;const renderContext {canvasContext: context,viewport: viewport};await page.render(renderContext);}注意渲染完的pdf只有图片形式使用开发者工具看网页的结构只有canvas组件想要实现文字的选择和复制还需要在上面渲染一层文字层。 // 需要引入样式文件不然文字不会悬浮在cavas组件上 import pdfjs-dist/web/pdf_viewer.css;async function renderFullPage(){const pdf await pdfjsLib.getDocument(src).promise;const pdfContainer document.createElement(div);pdfContainer.style.setProperty(--scale-factor, scale_ratio);for (let i1; ipdf.numPages; i){const pageNumber i;const page await pdf.getPage(pageNumber);const viewport page.getViewport({scale: scale_ratio});const canvas document.createElement(canvas);const context canvas.getContext(2d);canvas.height viewport.height ;canvas.width viewport.width ;const renderContext {canvasContext: context,viewport: viewport};await page.render(renderContext);// canvasWrapper 可加可不加const canvasWrapper document.createElement(div);canvasWrapper.className canvasWrapper;canvasWrapper.appendChild(canvas);const textContent await page.getTextContent();const textLayerDiv document.createElement(div);// 类名严格为textLayertextLayerDiv.className textLayer;pdfjsLib.renderTextLayer({textContentSource: textContent,container: textLayerDiv,viewport: viewport,textDivs: []});const pageDiv document.createElement(div);pageDiv.className page;// 需要设置 position: relative// 否则全部文字可能都挤在第一页pageDiv.style position: relative; margin-bottom:10px;pageDiv.appendChild(canvasWrapper);pageDiv.appendChild(textLayerDiv);pdfContainer.appendChild(pageDiv);}}简单来说就是在渲染完canvas代码之后再渲染出文字层。有几个注意点 需要在开头引入样式表不然文字层会实际显示在页面中不会悬浮不会透明需要在外面的组件中设置参数–scale-factor用于保证图片和文字的位置对应否则调整了scale_ratio后图片尺寸改变但是文字层的大小还是不变文字层的类名需要严格设置为textLayer从开头引入的样式表中可以看到包含canvas和文字层的父组件需要设置style为position: relative否则多页的文字都会渲染到第一页中。
http://www.zqtcl.cn/news/470351/

相关文章:

  • 怎样用网站做淘宝推广免费的项目管理软件
  • 共青城网站建设微网站开发报价
  • 网站建设选超速云建站网站建设公司比较
  • 芜湖网络科技有限公司沈阳网站推广优化公司哪家好
  • 自己制作图片文字图片网站建设和优化内容最重要性
  • 邢台做网站优化建筑行业新闻资讯
  • 站长统计app最新版本2023网站标题是关键词吗
  • 中山精品网站建设市场wordpress登陆phpadmin
  • 泸县手机网站建设佛山城市建设工程有限公司
  • 长沙网站推广排名优化wordpress主题字体更改
  • 深圳网站建设软件定制公司房地产开发公司注册资金要求
  • 个人如何在企业网站做实名认证房地产平面设计主要做什么
  • 网站做字工具WordPress搜索功能增强
  • 慢慢来做网站多少钱wordpress优化搜索引擎
  • 网页 网站 区别现在装宽带要多少钱
  • 黄金网站下载免费建设个人网站需要什么条件
  • 网站开发人员岗位职责网站维护报价单
  • 免费正能量不良网站推荐自建网站视频教程
  • 厦门物流网站建设南京宜电的网站谁做的
  • vps 网站备案手机界面设计素材
  • seo排名影响因素主要有灯塔seo
  • 济南哪家做网站小勇cms网站管理系统
  • sns社交网站注册做网站 提交源码 论坛
  • wordpress网站编辑semir是什么牌子
  • 做区块链的网站教育培训机构平台
  • 系统网站怎么做的seo竞争对手分析
  • 菏泽网站建设菏泽众皓网页开发工资
  • 网站建设需求分析酒类群晖wordpress 映射
  • 呼和浩特网站建设宣传wordpress淘宝客插件开发
  • 如何建网站赚钱做淘宝网店需要多少钱