|
|
@@ -51,7 +51,6 @@ import {
|
|
|
GlobalWorkerOptions,
|
|
|
} from "pdfjs-dist/legacy/build/pdf.mjs";
|
|
|
import { DynamicScroller, DynamicScrollerItem } from "vue-virtual-scroller";
|
|
|
-import PdfWorker from "pdfjs-dist/legacy/build/pdf.worker.min.mjs?url";
|
|
|
import { getThumb } from "@/utils/file";
|
|
|
import PdfVirtualPage from "@/components/FileReader/PdfVirtualPage.vue";
|
|
|
|
|
|
@@ -60,7 +59,26 @@ import "vue-virtual-scroller/dist/vue-virtual-scroller.css";
|
|
|
const RANGE_CHUNK_SIZE = 32 * 1024;
|
|
|
const DEFAULT_PAGE_RATIO = 1.414;
|
|
|
|
|
|
-GlobalWorkerOptions.workerSrc = PdfWorker;
|
|
|
+const getPdfWorkerSrc = () => {
|
|
|
+ const base = import.meta.env.BASE_URL || "/";
|
|
|
+ const normalizedBase = base.endsWith("/") ? base : `${base}/`;
|
|
|
+ return `${normalizedBase}static/js/pdf.worker.min.js`;
|
|
|
+};
|
|
|
+
|
|
|
+const ensurePdfWorker = () => {
|
|
|
+ const workerSrc = getPdfWorkerSrc();
|
|
|
+ GlobalWorkerOptions.workerSrc = workerSrc;
|
|
|
+
|
|
|
+ if (GlobalWorkerOptions.workerPort || typeof Worker === "undefined") {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ GlobalWorkerOptions.workerPort = new Worker(workerSrc, { type: "module" });
|
|
|
+ } catch {
|
|
|
+ // workerSrc keeps PDF.js fallback on the same static js path.
|
|
|
+ }
|
|
|
+};
|
|
|
|
|
|
const props = defineProps({
|
|
|
url: {
|
|
|
@@ -127,6 +145,8 @@ const loadPdfDocument = async (source) => {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ ensurePdfWorker();
|
|
|
+
|
|
|
const currentToken = loadToken;
|
|
|
loadingTask = getDocument(source);
|
|
|
|