获取pdf页码时走的弯路

https://112223333.xyz//pdf/${resource_id} 这个网址是得后端进行配置的 大概是吧pdf.js部署在服务器端 具体我也不是很清楚 我有尝试下载pdf.js放在前端 但是在这样会导致跨域 如果放置到本地打包上线是否会导致跨域我不是很清楚,现在说说获取 网上有很多方法 和下面的方法类似
我只是想标记一下我踩得坑

  1. 可以获取到iframe 也可以获取到contentWindow 但是打印出来 下面的函数里面没有包含PDFViewerApplication
  2. 原因 可能是你的方法有问题 iframe不能绑定普通路径 可以打开pdf,但是不能获取PDFViewerApplication (我只在线下进行的测试 ,线上不知道什么结果)
  3. 然后我开始寻找其他方法 终于找到方案二 前端下载pdf.js 放到public static 文件夹里面 src里面要使用绝对路径 然后有个路径拼接 这个方法能拿到PDFViewerApplication 但是会报错 产生跨域 我没有搜到合适的解决方案 如果有人知道,欢迎告知
  4. let pdfFrame = this.$refs.pdfPreview.contentWindow; 终于线上了 然后又出问题了,整个iframe找不到了(线下测试都能找到),原因就是代码执行和页面渲染的问题 还没有加载到 执行这个代码获取不到 所以加了计时器,但是又出问题了
  5. 我自己的逻辑问题 计时器清除掉了 然后整个代码体都清楚掉了 所以不会一直监听 所以需要根据实际情况来优化代码
   <iframe v-else-if="resourceType == 'pdf'" id="previewPDF" ref="pdfPreview" :src="`https://112223333.xyz//pdf/${resource_id}`" width="100%" height="100%" class="iframe-content"></iframe>
 getPdfPage() {
                if(timer) clearInterval(timer)
                this.pdfPageNow = 1;
                let pdfFrame = this.$refs.pdfPreview.contentWindow;
                console.log(pdfFrame, "pad的值");
                console.log("pdfFrame.PDFViewerApplication", pdfFrame.PDFViewerApplication);
                let timer = null
                timer = setInterval(() => {
                this.count = this.count + 1;
                console.log(this.count);
                if(this.count > 24) {
                    clearInterval(timer)
                }
                if(pdfFrame && pdfFrame.PDFViewerApplication){
                    clearInterval(timer)
                    let maxNum = pdfFrame.PDFViewerApplication.pagesCount;
                    if (maxNum == 0 || maxNum == undefined) {
					// 直接获取页面显示的总页数,获取到了说明加载完成
					console.info("Loading...");
				} else {
					if (maxNum < 2) {
						console.log(`1/1, prog:100%`);
					} else {
                        this.pdfPageNow=pdfFrame.PDFViewerApplication.page
                        console.log("首次加载完成获取到值",this.pdfPageNow);
						pdfFrame.document
							.getElementById("viewerContainer") // 监听pdf滚动事件
							.addEventListener("scroll", e => {
								let pdfInfo = pdfFrame.PDFViewerApplication;
								if (this.pdfPageNow !== pdfInfo.page) {
									// 防抖:当前页变化时,更新进度
									this.pdfPageNow = pdfInfo.page;
                                    console.log("滚动的时候当前页码值",this.pdfPageNow);
                                    this.getAll(this.resource_id, this.pdfPageNow);
								}
							});
					}
				}
                } 
                }, 500);
            },

相关推荐

  1. 获取pdf页码弯路

    2024-07-15 18:22:01       21 阅读
  2. 程序员必须学会道理,少十年弯路

    2024-07-15 18:22:01       27 阅读
  3. PDF点击书签页面变小解决方法

    2024-07-15 18:22:01       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-15 18:22:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-15 18:22:01       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-15 18:22:01       58 阅读
  4. Python语言-面向对象

    2024-07-15 18:22:01       69 阅读

热门阅读

  1. Nginx的重定向

    2024-07-15 18:22:01       23 阅读
  2. websocket中的STOMP 协议:sockjs-client 和 stompjs

    2024-07-15 18:22:01       27 阅读
  3. 等保测评的智能化与自动化展望

    2024-07-15 18:22:01       26 阅读
  4. 程序员养生指南:守护健康,高效编码

    2024-07-15 18:22:01       19 阅读
  5. YoloV8改进策略:卷积篇Kan行天下之小波Kan

    2024-07-15 18:22:01       17 阅读
  6. FastJson详解

    2024-07-15 18:22:01       17 阅读
  7. HTML-VUE页面调用android 客户端网络请求并返回数据

    2024-07-15 18:22:01       17 阅读
  8. C++ 左值与右值

    2024-07-15 18:22:01       17 阅读
  9. 网络协同新纪元:Eureka引领分布式网络管理革命

    2024-07-15 18:22:01       19 阅读
  10. deepstream tracker NvDCF未实现跟踪

    2024-07-15 18:22:01       20 阅读
  11. Mybatis

    Mybatis

    2024-07-15 18:22:01      13 阅读