{"_id":"vue3-mobile-pdf-viewer","_rev":"50-e93d57380a63adccc556f18aec11aa88","name":"vue3-mobile-pdf-viewer","dist-tags":{"latest":"0.0.28"},"versions":{"0.0.14":{"name":"vue3-mobile-pdf-viewer","version":"0.0.14","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.14","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"d7dc85ad5a1d889f1a5d0cfe4be0e7f559da5901","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.14.tgz","fileCount":12,"integrity":"sha512-MgFDoi218BcgzXWwFRI1uvGLB0LccyJWxMBSnL4ARE1njeLO2Wo6T28uIx8qld8AKQ9d72Utcm1yA9QDCL5tlQ==","signatures":[{"sig":"MEUCIQCiDXHJ5Vu68LTfZJkOOrgvnEvm6EnysVvOlRLdnu1dvwIgJD+pl1LWVZTD02ksdwr+znv81b9PkN/YHk3dMI4aE/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2799404},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"33bf688c77afaaa35e7916ba2cd6cffb060f0010","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","actor":{"name":"zhayes","type":"user","email":"zhayaping@outlook.com"},"email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.14_1752135957759_0.7404170168177866","host":"s3://npm-registry-packages-npm-production"}},"0.0.15":{"name":"vue3-mobile-pdf-viewer","version":"0.0.15","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.15","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"870450fdfa4a4a559198c8b00d2eb30073cf956b","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.15.tgz","fileCount":12,"integrity":"sha512-mMq8cMHPxRCLB0kqL5xQI7R5FBoJRwKgVUPdoVRS+g6uLRlYS1SzetCInRSDNACGZF5PktNymgcUuljCHHMIow==","signatures":[{"sig":"MEUCIQC394w5W36NDJNzQnPqO1tig/JlXpM78O0fEw0P+CVUzwIgeajr3ruIVqX/vM9OhJYuGTX+kc1SbbbTc4DHD/JXXlw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2798982},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"d0a535b6b400386c4c43d7b41b7f6ca87e3de22b","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.15_1752565360454_0.45010538465385785","host":"s3://npm-registry-packages-npm-production"}},"0.0.18":{"name":"vue3-mobile-pdf-viewer","version":"0.0.18","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.18","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"0c82e39faf4501578d7cb23cfd2cc5f8e25f3e71","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.18.tgz","fileCount":12,"integrity":"sha512-nMZflJZbWeJUZajgggUf1/XKxTKbgwDvJz0TBQkYG7/iKQe2oYaAJz19lhA6W4Hfui/0r64p/VhPt7xB8eFuwg==","signatures":[{"sig":"MEUCIQCYCi49QIAQZN6/FO3x+kfaSyQc23CAardzNh11ZuSJzgIgPIms0mtqmSXJnRDlEsykEc3y3U2E7A37rVGeQFRmHog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2800194},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"bead62c7baf1038ff7d9ddc7b5a459af1931b539","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.18_1752635322836_0.4055024340286735","host":"s3://npm-registry-packages-npm-production"}},"0.0.19":{"name":"vue3-mobile-pdf-viewer","version":"0.0.19","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.19","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"c2bd4369034af99fde14395a7b8c811a14e84f45","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.19.tgz","fileCount":12,"integrity":"sha512-KpILIOBHN7/FYwk+KWK8K62gMDB3d4fBHnTx69oZpGYXUBCtwOHeoG+5NMvXdwQKH3OCda9FK4n5akpCKy19Pg==","signatures":[{"sig":"MEQCICWXQ532GQ2A3El/gZ3yYKlg1vTG6Ei4QPc6Tmplz4FDAiB5AOg2BNfONfVNcx8sypBqequt8QzWTh26/SA2q/lvfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2800344},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"bead62c7baf1038ff7d9ddc7b5a459af1931b539","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.19_1752858781820_0.12476820307197611","host":"s3://npm-registry-packages-npm-production"}},"0.0.20":{"name":"vue3-mobile-pdf-viewer","version":"0.0.20","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.20","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"7e8f48fb4a46713ad0ccff8a5c06d485fcfc8b17","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.20.tgz","fileCount":12,"integrity":"sha512-dTtiuFIVO3Cy3UNeYwer0EJmHal1hAG40nn9JOWmHv2IFb6lHmUhp2JFuCpgYz/s8dP2CFE9Qp4BAiwzPHZSrA==","signatures":[{"sig":"MEQCIEhy1W+85LkgV65cCDxQQKB0KeDS9RzsUky1MM+16d60AiAX8zhWP8PGzB7ymyLiNCUecLzja77N2E1YgH9WDAaW8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2802964},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"369f568e9ec39fdccf13006a8cf83fbb7062481f","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.20_1752930145001_0.8679132843563873","host":"s3://npm-registry-packages-npm-production"}},"0.0.21":{"name":"vue3-mobile-pdf-viewer","version":"0.0.21","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.21","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"595b82cc8b123a5dd2e3edb4c8cb760454f9ef7c","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.21.tgz","fileCount":12,"integrity":"sha512-pMkj0Ad0TNYlRbWEAIdnF3KnM6aadwrOT38q2JmQi9NmDIViZojAi7Fo4HcZVwpXaWNVoVCq6KGDSdIgVVYqxA==","signatures":[{"sig":"MEUCIQCaxNKZfHHTM+87qBjMWbZfc4N1+zQIAgLIrUgBScpCkAIgedPSD9q0dkN7iDpuV3m+D4KfZ5Im3cQuiCR2VFjb3MU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2801950},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"e3e7b255046f8a6f379bf1ef829521e44f03c68a","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.21_1752934964289_0.8485012905260754","host":"s3://npm-registry-packages-npm-production"}},"0.0.28":{"name":"vue3-mobile-pdf-viewer","version":"0.0.28","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"author":{"name":"Your Name"},"license":"MIT","_id":"vue3-mobile-pdf-viewer@0.0.28","maintainers":[{"name":"zhayes","email":"zhayaping@outlook.com"}],"homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"dist":{"shasum":"c91fdf6a4c9f8db257ef257631c4066c73a86dee","tarball":"https://registry.npmjs.org/vue3-mobile-pdf-viewer/-/vue3-mobile-pdf-viewer-0.0.28.tgz","fileCount":12,"integrity":"sha512-XBeWbJwul3B0clUlwwFzj6NuAtTcli6iOCqcrgX0kwE5J87Yx0/mAHzUJ2l2OPHjOkBmRKnhauhlikaDlCwUEA==","signatures":[{"sig":"MEQCIFrUADdhULGvzi/m5Z7fHzm6by2hJq9CLQ6MZxspPQrIAiBOIQXLECZG+PycqTwyEBgYR1jjSmMpKekhZpm45A5BRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2801950},"main":"dist/index.umd.js","type":"module","types":"dist/index.d.ts","module":"dist/index.es.js","gitHead":"e3e7b255046f8a6f379bf1ef829521e44f03c68a","scripts":{"dev":"vite --host","build":"vue-tsc --noEmit && vite build","preview":"vite preview","prepublishOnly":"npm run build"},"_npmUser":{"name":"zhayes","email":"zhayaping@outlook.com"},"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"_npmVersion":"10.9.0","description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","directories":{},"_nodeVersion":"22.11.0","dependencies":{"uid":"^2.0.2","pdfjs-dist":"5.3.31"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.3.0+sha1.6981f53a2d726323a7fd5f4ca5107102338511c8","devDependencies":{"vue":"^3.5.17","vite":"^7.0.1","vue-tsc":"^3.0.1","typescript":"^5.8.3","@types/node":"^24.0.10","vite-plugin-dts":"^4.5.4","@vitejs/plugin-vue":"^6.0.0","@rollup/plugin-terser":"^0.4.4","vite-plugin-css-injected-by-js":"^3.5.2"},"peerDependencies":{"vue":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/vue3-mobile-pdf-viewer_0.0.28_1754557203266_0.39899322949705773","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-07-07T10:05:18.740Z","modified":"2026-07-14T07:51:15.752Z","0.0.1":"2025-07-07T10:05:18.989Z","0.0.2":"2025-07-07T12:04:08.798Z","0.0.3":"2025-07-07T12:11:40.895Z","0.0.4":"2025-07-07T12:28:20.993Z","0.0.5":"2025-07-08T11:26:12.616Z","0.0.6":"2025-07-09T01:16:42.674Z","0.0.7":"2025-07-09T01:44:48.428Z","0.0.8":"2025-07-09T02:16:11.562Z","0.0.9":"2025-07-09T03:40:28.795Z","0.0.10":"2025-07-10T03:49:59.732Z","0.0.11":"2025-07-10T05:19:10.691Z","0.0.12":"2025-07-10T05:29:43.648Z","0.0.13":"2025-07-10T06:13:13.199Z","0.0.14":"2025-07-10T08:25:58.028Z","0.0.15":"2025-07-15T07:42:40.745Z","0.0.16":"2025-07-16T01:48:04.619Z","0.0.17":"2025-07-16T02:50:16.957Z","0.0.18":"2025-07-16T03:08:43.076Z","0.0.19":"2025-07-18T17:13:02.064Z","0.0.20":"2025-07-19T13:02:25.244Z","0.0.21":"2025-07-19T14:22:44.588Z","0.0.22":"2025-08-07T04:26:49.422Z","0.0.23":"2025-08-07T05:44:26.095Z","0.0.24":"2025-08-07T06:11:42.651Z","0.0.25":"2025-08-07T06:53:51.797Z","0.0.26":"2025-08-07T08:17:45.129Z","0.0.27":"2025-08-07T08:33:12.225Z","0.0.28":"2025-08-07T09:00:03.506Z"},"bugs":{"url":"https://github.com/zhayes/mobile_pdf_viewer/issues"},"author":{"name":"Your Name"},"license":"MIT","homepage":"https://github.com/zhayes/mobile_pdf_viewer#readme","keywords":["vue","vue3","pdf","mobile","viewer","touch","gestures","pdfjs"],"repository":{"url":"git+https://github.com/zhayes/mobile_pdf_viewer.git","type":"git"},"description":"A mobile-optimized PDF viewer component for Vue 3 with touch gestures support","maintainers":[{"email":"zhayaping@outlook.com","name":"chad.dev"}],"readme":"### Recommend [mobile-pdf](https://www.npmjs.com/package/mobile-pdf), which does not rely on any framework\n\n---\n\n[![License](https://img.shields.io/npm/l/vue3-mobile-pdf-viewer.svg)](https://github.com/zhayes/vue3-mobile-pdf-viewer/blob/main/LICENSE)\n[![NPM Downloads](https://img.shields.io/npm/dm/vue3-mobile-pdf-viewer.svg)](https://www.npmjs.com/package/vue3-mobile-pdf-viewer)\n\n---\n\n[English](#english) | [中文](#中文)\n\n---\n\n<a id=\"english\"></a>\n# Mobile PDF Viewer (English)\n\nA mobile-friendly PDF viewer component for Vue 3, with support for touch gestures, zooming, and panning.\n\n## Features\n\n- ✅ Touch gesture support (one-finger drag, two-finger pinch-to-zoom)\n- ✅ Double-tap to zoom\n- ✅ Optimized with virtual scrolling for on-demand page rendering\n- ✅ Progress bar for loading status\n- ✅ Boundary detection to prevent over-scrolling\n- ✅ High-performance rendering using `IntersectionObserver`\n- ✅ TypeScript support\n- ✅ Modular design for easy maintenance\n\n## Props\n\n| Prop | Type | Default | Description |\n| --- | --- | --- | --- |\n| `source` | `PDFSourceDataOption` | `undefined` | The source of the PDF file. This can be a URL to a PDF file, a `Uint8Array`, or any other parameter supported by [pdf.js's getDocument](https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L237). This prop is optional, and you can also load a PDF using the `loadPDF` method after the component is mounted. |\n| `config` | `MobilePDFViewerConfig` | `{}` | Configuration options for the viewer. See the **Configuration Options** section below for more details. |\n| `containerClass` | `string` | `''` | Custom CSS class to apply to the root container element of the component. |\n| `canvasClass` | `string` | `''` | Custom CSS class to apply to each canvas element that renders a PDF page. |\n\n## Usage\n\n### Basic Usage\n\n```vue\n<template>\n    <!-- Note: A parent container with a defined height is required, as MobilePDFViewer defaults to full height, which is necessary for on-demand rendering. -->\n    <div style=\"height: 100vh\">\n        <MobilePDFViewer\n          ref=\"pdfViewerRef\"\n          source=\"/path/to/your/pdf/file.pdf\"\n          @load-complete=\"onLoadComplete\"\n          @scale-change=\"onScaleChange\"\n        />\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport MobilePDFViewer from 'vue3-mobile-pdf-viewer';\n\nconst pdfViewerRef = ref();\n\nconst onLoadComplete = (pageCount: number) => {\n  console.log(`PDF loaded successfully, total pages: ${pageCount}`);\n};\n\nconst onScaleChange = (scale: number) => {\n  console.log(`Current scale: ${scale}`);\n};\n</script>\n```\n\n> **Tip:** If you do not provide the `source` in the `props`, you can also manually load a PDF file using the `loadPDF` method after the component is mounted:\n> ```javascript\n> onMounted(() => {\n>   pdfViewerRef.value?.loadPDF('/path/to/your/pdf/file.pdf');\n> })\n> ```\n\n### Configuration Options\n\n```typescript\ninterface MobilePDFViewerConfig {\n  resolutionMultiplier?: number;    // Resolution multiplier, default: 3\n  minScale?: number;                // Minimum scale, default: 1\n  maxScale?: number;                // Maximum scale, default: 4\n  dampingFactor?: number;           // Damping factor for inertial scrolling, default: 0.95\n  boundaryPadding?: number;         // Boundary padding to constrain dragging, default: 50\n  pinchSensitivity?: number;        // Sensitivity for pinch-to-zoom, default: 0.6\n}\n```\n\n### Events\n\n- `load-start`: PDF loading has started.\n- `load-progress`: PDF loading is in progress `(progress: number)`.\n- `load-complete`: PDF has finished loading `(pageCount: number)`.\n- `load-error`: An error occurred while loading the PDF `(error: Error)`.\n- `scale-change`: The scale has changed `(scale: number)`.\n\n### Exposed Methods\n\n```typescript\nimport { ref } from 'vue';\n\nconst pdfViewerRef = ref();\n\n// Load a PDF\npdfViewerRef.value?.loadPDF(source);\n\n// Reset the position\npdfViewerRef.value?.resetPosition();\n\n// Get the current scale\nconst scale = pdfViewerRef.value?.getScale();\n\n// Check if it is currently loading\nconst loading = pdfViewerRef.value?.isLoading();\n\n// Get the number of pages\nconst pageCount = pdfViewerRef.value?.getPageCount();\n```\n\n---\n\n<a id=\"中文\"></a>\n# Mobile PDF Viewer (中文)\n\n一个基于 Vue 3 的移动端 PDF 查看器组件，支持触摸手势、缩放、平移等功能。\n\n## 功能特性\n\n- ✅ 支持触摸手势（单指拖拽、双指缩放）\n- ✅ 支持双击缩放\n- ✅ 虚拟滚动优化，按需渲染页面\n- ✅ 进度条显示加载状态\n- ✅ 边界限制，防止过度拖拽\n- ✅ 高性能渲染，使用 IntersectionObserver\n- ✅ TypeScript 支持\n- ✅ 模块化设计，易于维护\n\n## Props\n\n| Prop | 类型 | 默认值 | 描述 |\n| --- | --- | --- | --- |\n| `source` | `PDFSourceDataOption` | `undefined` | PDF 文件来源。可以是 PDF 文件的 URL、`Uint8Array`，或 [pdf.js's getDocument](https://github.com/mozilla/pdf.js/blob/master/src/display/api.js#L237) 支持的参数对象。此属性为可选，你也可以在组件挂载后通过 `loadPDF` 方法加载 PDF。 |\n| `config` | `MobilePDFViewerConfig` | `{}` | 查看器的配置选项。详细信息请参阅下方的 **配置选项** 部分。 |\n| `containerClass` | `string` | `''` | 应用于组件根容器元素的自定义 CSS 类。 |\n| `canvasClass` | `string` | `''` | 应用于渲染 PDF 页面的每个 canvas 元素的自定义 CSS 类。 |\n\n\n## 使用方法\n\n### 基本使用\n\n```vue\n<template>\n    <!-- 注意这里应该需要个父容器高度，MobilePDFViewer默认铺满，否则不能按需渲染。 -->\n    <div style=\"height: 100vh\">\n        <MobilePDFViewer\n          ref=\"pdfViewerRef\"\n          source=\"/path/to/your/pdf/file.pdf\"\n          @load-complete=\"onLoadComplete\"\n          @scale-change=\"onScaleChange\"\n        />\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport MobilePDFViewer from 'vue3-mobile-pdf-viewer';\n\nconst pdfViewerRef = ref();\n\nconst onLoadComplete = (pageCount: number) => {\n  console.log(`PDF 加载完成，共 ${pageCount} 页`);\n};\n\nconst onScaleChange = (scale: number) => {\n  console.log(`当前缩放比例: ${scale}`);\n};\n</script>\n```\n\n> **提示:** 如果你没有在 `props` 中提供 `source`，你也可以在组件挂载后通过 `loadPDF` 方法手动加载 PDF 文件：\n> ```javascript\n> onMounted(() => {\n>   pdfViewerRef.value?.loadPDF('/path/to/your/pdf/file.pdf');\n> })\n> ```\n\n### 配置选项\n\n```typescript\ninterface MobilePDFViewerConfig {\n  resolutionMultiplier?: number;    // 分辨率倍数，默认 3\n  minScale?: number;                // 最小缩放比例，默认 1\n  maxScale?: number;                // 最大缩放比例，默认 4\n  dampingFactor?: number;           // 阻尼系数，默认 0.95\n  boundaryPadding?: number;         // 边界填充，默认 50\n  pinchSensitivity?: number;        // 捏合敏感度，默认 0.6\n}\n```\n\n### 事件\n\n- `load-start`: 开始加载 PDF\n- `load-progress`: 加载进度更新 `(progress: number)`\n- `load-complete`: 加载完成 `(pageCount: number)`\n- `load-error`: 加载错误 `(error: Error)`\n- `scale-change`: 缩放变化 `(scale: number)`\n\n### 暴露的方法\n\n```typescript\nimport { ref } from 'vue';\n\nconst pdfViewerRef = ref();\n\n// 加载 PDF\npdfViewerRef.value?.loadPDF(source);\n\n// 重置位置\npdfViewerRef.value?.resetPosition();\n\n// 获取当前缩放比例\nconst scale = pdfViewerRef.value?.getScale();\n\n// 获取是否正在加载\nconst loading = pdfViewerRef.value?.isLoading();\n\n// 获取页面数量\nconst pageCount = pdfViewerRef.value?.getPageCount();\n```\n","readmeFilename":"readme.md"}