使用PDF.js 转成canvas放到页面上不会平铺
目前效果是:
期望实现的效果:
请问各位社区大佬应该怎么去解决?
function renderPage(num: number) { pdfDoc.getPage(num).then((page: any) => { const canvas: any = document.getElementById(`pdfSource${num}`) const ctx = canvas.getContext('2d') const dpr = window.devicePixelRatio || 1 const bsr = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1 const ratio = dpr / bsr const viewport = page.getViewport({ scale: state.pdfScale }) canvas.width = viewport.width canvas.height = viewport.height state.pdfWidth = `${viewport.width}px` ctx.setTransform(ratio, 0, 0, ratio, 0, 0) // 将 PDF 页面渲染到 canvas 上下文中 const renderContext = { canvasContext: ctx, viewport } page.render(renderContext) })}
目前代码是这样的缩放倍率为1
在创建时 给canvas一个固定宽,渲染后再为这个canvas设置样式width:100%即可解决。
function createTargeCanvas(num) { let targetContainer = document.getElementById('target') let canvas = document.createElement('canvas') canvas.id = 'target' + num canvas.width = 770 targetContainer?.appendChild(canvas)}
function loadFileTarget(url: string) { PDF.getDocument(url).promise.then((p: any) => { pdfDoc = p const { numPages } = p state.pdfPages = numPages targetTotal.value = numPages CreateCanvasTarget(state.pdfPages) for (let i = 1; i <= state.pdfPages; i++) { let canvas = document.getElementById(`target${i}`) canvas!.style.width = '100%' } for (let i = 1; i <= state.pdfPages; i++) { renderPageTarget(i) } })}
页面布局代码如下,第一次打开页面Column里三个组件是紧挨着的,零点几秒后才MainAxisAlignment.spaceBetween分开,时间虽然不是很久但是肉眼还是可见的有点延迟,请问是因为什么原因?
我正在编程一个小游戏,它是基于瓷砖的。但当我渲染它的时候,有时那些瓷砖之间的一个小空间是可见的,(绿色)背景是暴露的(可以在视频中看到)。 我想知道,是否有一些双缓冲技术,可以解决这个bug,但我读到,双缓冲已经实现了。
将数组平铺到指定的深度。 使用递归,为每个深度级别 depth 递减 1 。 使用 Array.reduce() 和 Array.concat() 来合并元素或数组。 基本情况下,depth 等于 1 停止递归。 省略第二个参数,depth 只能平铺到 1 (单层平铺) 的深度。 const flatten = (arr, depth = 1) => depth != 1 ? arr.
1、变量提升,let,const,var,暂时性死区 2、函数是否存在变量提升? 3、react组件间通信 4、防抖,节流 5、浏览器跨域,跨域产生的原因,怎么解决? 6、浏览器存储,cookie,sessionstorage,localstorage的区别和应用场景? 7、[]==![]输出? 8、其他几道输出题 9、水平垂直居中方法 10、判断数据类型的方法?instanceof和typeof
A,B两个系统,用的token是一样的,但是两个前端不在同一服务器上,怎样让B页面能获取到A页面的Cookie,即A系统登录后,通过iframe访问B系统不需要再次登录,实现一个单点登录的效果,由于某些原因,不可以在iframe的src中携带token信息。 目前的想法是想让B系统能获取A系统存在Cookie中的token信息,但是存在跨域问题,不能获取到,有办法实现吗?尝试了利用nginx配置转
前端面试 你可能被问到的问题: 前端工作面试问题 前端开发面试问题 每个 JavaScript 开发者应该知道的 10 个面试问题 前端测验 JavaScript 测验 你可以问的问题: 一个开源的开发人员可以向潜在雇主提问的问题列表 译者补充: 前端开发面试题大收集 前端开发面试问题及答案整理 收集的前端面试题和答案 写给前端面试者 Awesome Interviews