Adobe PDF Embed的gotoLocation()强制PDF刷新 如何实现跳转不重载
可行规避方案如下
- 调整初始化配置,关闭不必要的重载触发逻辑
初始化Adobe PDF Embed实例时添加以下配置,开启局部渲染能力,禁止非必要的全量重载:const adobeViewerConfig = { // 开启线性化加载,仅渲染当前可视区域内容 enableLinearization: true, // 禁用参数校验失败后的自动重载逻辑 enableAutomaticReload: false, defaultViewMode: "FIT_WIDTH" } - 缓存API实例,优先使用轻量页码跳转方法
原有代码每次跳转都需要重新获取API实例,且gotoLocation会触发全量地址校验逻辑,容易引发重载,调整为初始化时缓存API实例,跳转时调用专门的gotoPage方法:// 全局缓存API实例,仅在PDF初始化时赋值一次 let cachedPdfApis = null; // 初始化逻辑仅执行一次,不要放在跳转事件的回调中 previewFilePromise.then(adobeViewer => { adobeViewer.getAPIs().then(apis => { cachedPdfApis = apis; }); }); // 跳转页码时直接调用缓存的实例 function jumpToTargetPage(pageNumber) { if (!cachedPdfApis) return; // 提前校验页码合法性,避免非法参数触发重载 cachedPdfApis.getPageCount().then(totalPage => { if (pageNumber < 1 || pageNumber > totalPage) return; cachedPdfApis.gotoPage(pageNumber) .then(() => console.log("Success")) .catch(error => console.log(error)); }) } - 若仍存在重载问题,检查是否在跳转时误触发了PDF实例重新初始化逻辑,确保
previewFilePromise相关的初始化代码全局仅执行一次。
内容的提问来源于stack exchange,提问作者winstonth
相关产品推荐
相关产品推荐

