@koi-br/ocr-web-sdk 1.0.38 → 1.0.39

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koi-br/ocr-web-sdk",
3
- "version": "1.0.38",
3
+ "version": "1.0.39",
4
4
  "description": "一个支持多种Office文件格式预览的Vue3组件SDK,包括PDF、Word、Excel、图片、OFD、TIF等格式",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.esm.js",
@@ -967,32 +967,48 @@ const onImageLoad = (event: Event, pageNum: number) => {
967
967
  // 重置用户缩放标记
968
968
  isUserZooming.value = false;
969
969
 
970
- // 隐藏图片,显示 loading
971
- isImageReady.value = false;
972
- isCalculatingAutoFit.value = true;
970
+ // 确保图片是隐藏的(watch 已经设置了,这里再次确认)
971
+ if (!isImageReady.value) {
972
+ isCalculatingAutoFit.value = true;
973
+ }
974
+
975
+ // 设置超时保护,防止一直显示 loading(最多等待 3 秒)
976
+ const timeoutId = setTimeout(() => {
977
+ console.warn('自适应宽度计算超时,强制显示图片');
978
+ isCalculatingAutoFit.value = false;
979
+ isImageReady.value = true;
980
+ }, 3000);
973
981
 
974
982
  // 使用双重 nextTick 确保容器尺寸已确定
975
983
  nextTick(() => {
976
984
  nextTick(() => {
977
985
  // 添加小延迟确保容器完全渲染
978
986
  setTimeout(() => {
979
- const autoScale = calculateAutoFitScale();
980
- if (autoScale !== 1 && autoScale > 0) {
981
- scale.value = autoScale;
982
- initialAutoFitScale.value = autoScale; // 记录初始自适应缩放比例
987
+ try {
988
+ const autoScale = calculateAutoFitScale();
989
+ if (autoScale > 0) {
990
+ scale.value = autoScale;
991
+ initialAutoFitScale.value = autoScale; // 记录初始自适应缩放比例
992
+ }
993
+ } catch (error) {
994
+ console.warn('计算自适应宽度失败:', error);
995
+ } finally {
996
+ // 清除超时保护
997
+ clearTimeout(timeoutId);
998
+ // 无论计算结果如何,都要更新状态,避免一直显示 loading
999
+ isCalculatingAutoFit.value = false;
1000
+ // 使用 requestAnimationFrame 确保在下一帧显示,避免闪烁
1001
+ requestAnimationFrame(() => {
1002
+ isImageReady.value = true;
1003
+ });
983
1004
  }
984
- // 计算完成后,显示图片并隐藏 loading
985
- isCalculatingAutoFit.value = false;
986
- // 使用 requestAnimationFrame 确保在下一帧显示,避免闪烁
987
- requestAnimationFrame(() => {
988
- isImageReady.value = true;
989
- });
990
1005
  }, 100); // 增加延迟,确保所有图片都已加载
991
1006
  });
992
1007
  });
993
1008
  } else if (!props.autoFitWidth) {
994
1009
  // 如果没有启用自适应宽度,立即显示图片
995
1010
  isImageReady.value = true;
1011
+ isCalculatingAutoFit.value = false;
996
1012
  }
997
1013
 
998
1014
  // 如果第一页已经加载完成,且当前页不是第一页,也应用自适应宽度
@@ -2353,19 +2369,34 @@ onMounted(() => {
2353
2369
  // 隐藏图片,显示 loading
2354
2370
  isImageReady.value = false;
2355
2371
  isCalculatingAutoFit.value = true;
2372
+
2373
+ // 设置超时保护,防止一直显示 loading(最多等待 3 秒)
2374
+ const timeoutId = setTimeout(() => {
2375
+ console.warn('自适应宽度计算超时,强制显示图片');
2376
+ isCalculatingAutoFit.value = false;
2377
+ isImageReady.value = true;
2378
+ }, 3000);
2379
+
2356
2380
  nextTick(() => {
2357
2381
  nextTick(() => {
2358
2382
  setTimeout(() => {
2359
- const autoScale = calculateAutoFitScale();
2360
- if (autoScale !== 1 && autoScale > 0) {
2361
- scale.value = autoScale;
2362
- initialAutoFitScale.value = autoScale;
2383
+ try {
2384
+ const autoScale = calculateAutoFitScale();
2385
+ if (autoScale > 0) {
2386
+ scale.value = autoScale;
2387
+ initialAutoFitScale.value = autoScale;
2388
+ }
2389
+ } catch (error) {
2390
+ console.warn('计算自适应宽度失败:', error);
2391
+ } finally {
2392
+ // 清除超时保护
2393
+ clearTimeout(timeoutId);
2394
+ // 无论计算结果如何,都要更新状态,避免一直显示 loading
2395
+ isCalculatingAutoFit.value = false;
2396
+ requestAnimationFrame(() => {
2397
+ isImageReady.value = true;
2398
+ });
2363
2399
  }
2364
- // 计算完成后,显示图片并隐藏 loading
2365
- isCalculatingAutoFit.value = false;
2366
- requestAnimationFrame(() => {
2367
- isImageReady.value = true;
2368
- });
2369
2400
  }, 100);
2370
2401
  });
2371
2402
  });