pdfjs-dist实现pdf预览偶现空白不报错问题解决

javascript 复制代码
const calculateFitScale = (pageWidth, pageHeight) => {
  const canvas = canvasRef.value;
  if (!canvas) return 1;

  const container = document.getElementById("pdf-container");
  if (!container) return 1;

  const containerWidth = container.clientWidth;
  const containerHeight = container.clientHeight;

  if (containerWidth === 0 || containerHeight === 0) {
    return 1;
  }  // 关键代码

  // 计算适应宽度的scale
  const scaleWidth = containerWidth / pageWidth;
  //const scaleHeight = containerHeight / pageHeight;

  // 取平方根使缩放更合理(避免过度缩放)
  return Math.sqrt(scaleWidth);
  // return Math.min(scaleWidth); // 取最小值
};

问题出现情况: 在预览第一张图的时候通常都是成功的,后面的图偶尔会在cavnas中空白渲染,经排查就是初始化渲染的时候,计算适应容器的缩放比例这里出错了,关键解决代码如下:

if (containerWidth === 0 || containerHeight === 0) {

return 1;

}

读取pdf容器的宽高的时候读取到0 ,导致渲染了宽高为0的画布。

相关推荐
oMcLin7 小时前
如何在 RHEL 7 上优化 Nginx 与 PHP‑FPM 配置,确保高并发 Web 应用的稳定性与响应速度?
前端·nginx·php
Taiyuuki7 小时前
WebGPU 开发者福音!在 VS Code 中实时预览你的WGSL着色器作品
前端·gpu·图形学
李剑一7 小时前
uni-app实现网络离线定位
前端·trae
鲨莎分不晴7 小时前
Nginx 部署前端项目实战指南
运维·前端·nginx
码界奇点7 小时前
基于Vue3与TypeScript的后台管理系统设计与实现
前端·javascript·typescript·vue·毕业设计·源代码管理
ashcn20017 小时前
水滴按钮解析
前端·javascript·css
攀登的牵牛花7 小时前
前端向架构突围系列 - 框架设计(五):契约继承原则
前端·架构
爱吃奶酪的松鼠丶7 小时前
React长列表,性能优化。关于循环遍历的时候,key是用对象数据中的ID还是用索引
javascript·react.js·性能优化
xkxnq8 小时前
第二阶段:Vue 组件化开发(第 17天)
javascript·vue.js·ecmascript
豆苗学前端8 小时前
你所不知道的前端知识,html篇(更新中)
前端·javascript·面试