@file-viewer/renderer-pdf 2.1.23 → 2.1.25

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/README.en.md CHANGED
@@ -39,7 +39,7 @@ const options = {
39
39
  }
40
40
  ```
41
41
 
42
- When no explicit URL is provided, the renderer first probes `/vendor/pdf/pdf.worker.mjs` from the site root. If the host app did not run `file-viewer-copy-assets`, does not use `@file-viewer/vite-plugin`, or a local dev server falls back to HTML for that path, the renderer lazy-loads the packaged PDF.js worker handler as a compatibility fallback so preview does not fail with `Setting up fake worker failed`. For best performance, full cMap/WASM/standard-font support, or strict offline deployments, still copy viewer assets and point these URLs at real static files.
42
+ When no explicit URL is provided, the renderer resolves `vendor/pdf/pdf.worker.mjs` against the current document `baseURI`. Apps deployed under a subpath such as `/workspace/` therefore request `/workspace/vendor/pdf/pdf.worker.mjs` instead of forcing the site root. If the host app did not run `file-viewer-copy-assets`, does not use `@file-viewer/vite-plugin`, or a local dev server falls back to HTML for that path, the renderer lazy-loads the packaged PDF.js worker handler as a compatibility fallback so preview does not fail with `Setting up fake worker failed`. For best performance, full cMap/standard-font support, or strict offline deployments, still copy viewer assets and point these URLs at real static files; `wasmUrl` remains for PDF.js builds that ship WASM assets.
43
43
 
44
44
  ## Migration Note
45
45
 
package/README.md CHANGED
@@ -39,7 +39,7 @@ const options = {
39
39
  }
40
40
  ```
41
41
 
42
- 默认未显式配置时,渲染器会先探测站点根路径的 `/vendor/pdf/pdf.worker.mjs`。如果客户项目没有执行 `file-viewer-copy-assets`、没有使用 `@file-viewer/vite-plugin`,或者本地临时服务器把该路径回退成 HTML,PDF renderer 会自动懒加载包内 PDF.js worker handler 作为兼容兜底,避免 `Setting up fake worker failed` 直接中断预览。需要最佳性能、完整 cMap/WASM/standard fonts 或严格离线部署时,仍建议复制 viewer assets 并配置真实静态地址。
42
+ 默认未显式配置时,渲染器会基于当前文档 `baseURI` 探测 `vendor/pdf/pdf.worker.mjs`,因此 Vite/UMI 等项目部署在 `/workspace/` 这类子路径时会请求 `/workspace/vendor/pdf/pdf.worker.mjs`,不会强制落到站点根路径。如果客户项目没有执行 `file-viewer-copy-assets`、没有使用 `@file-viewer/vite-plugin`,或者本地临时服务器把该路径回退成 HTML,PDF renderer 会自动懒加载包内 PDF.js worker handler 作为兼容兜底,避免 `Setting up fake worker failed` 直接中断预览。需要最佳性能、完整 cMap/standard fonts 或严格离线部署时,仍建议复制 viewer assets 并配置真实静态地址;`wasmUrl` 保留给提供 WASM 资产的 PDF.js 构建兼容使用。
43
43
 
44
44
  ## 迁移说明
45
45
 
package/dist/pdf.js CHANGED
@@ -27,6 +27,15 @@ const createStyle = (documentRef) => {
27
27
  .pdf-page-thumb--thumbnail{width:46px;height:60px;overflow:hidden;background:#fff}
28
28
  .pdf-page-thumb--thumbnail img{display:block;width:100%;height:100%;object-fit:contain}
29
29
  .pdf-page-thumb--thumbnail span{display:inline-flex;align-items:center;justify-content:center;width:100%;height:100%}
30
+ [data-viewer-theme='dark'] .pdf-shell{background:#101820;color:#e5eef8}
31
+ [data-viewer-theme='dark'] .pdf-toolbar,[data-viewer-theme='dark'] .pdf-nav-pane,[data-viewer-theme='dark'] .pdf-nav-head,[data-viewer-theme='dark'] .pdf-nav-tabs{border-color:rgba(148,163,184,.18);background:#111827;box-shadow:none}
32
+ [data-viewer-theme='dark'] .pdf-toolbar-group,[data-viewer-theme='dark'] .pdf-page-button,[data-viewer-theme='dark'] .pdf-outline-empty,[data-viewer-theme='dark'] .pdf-state{border-color:rgba(148,163,184,.18);background:#151f2b;color:#cbd5e1}
33
+ [data-viewer-theme='dark'] .pdf-icon-button,[data-viewer-theme='dark'] .pdf-scale-button,[data-viewer-theme='dark'] .pdf-page-meter,[data-viewer-theme='dark'] .pdf-rotation-meter,[data-viewer-theme='dark'] .pdf-outline-button{color:#cbd5e1}
34
+ [data-viewer-theme='dark'] .pdf-page-meter strong,[data-viewer-theme='dark'] .pdf-nav-head strong{color:#f8fafc}
35
+ [data-viewer-theme='dark'] .pdf-icon-button:hover:not(:disabled),[data-viewer-theme='dark'] .pdf-scale-button:hover,[data-viewer-theme='dark'] .pdf-icon-button--active,[data-viewer-theme='dark'] .pdf-nav-tabs button:hover,[data-viewer-theme='dark'] .pdf-nav-tabs button.active,[data-viewer-theme='dark'] .pdf-page-button:hover,[data-viewer-theme='dark'] .pdf-page-button--active,[data-viewer-theme='dark'] .pdf-outline-button:hover{border-color:rgba(94,234,212,.35);background:rgba(45,212,191,.12);color:#5eead4}
36
+ [data-viewer-theme='dark'] .pdf-wrapper{background:#101820}
37
+ [data-viewer-theme='dark'] .pdfViewer .page{color-scheme:only light;forced-color-adjust:none}
38
+ @media (prefers-color-scheme:dark){[data-viewer-theme='system'] .pdf-shell{background:#101820;color:#e5eef8}[data-viewer-theme='system'] .pdf-toolbar,[data-viewer-theme='system'] .pdf-nav-pane,[data-viewer-theme='system'] .pdf-nav-head,[data-viewer-theme='system'] .pdf-nav-tabs{border-color:rgba(148,163,184,.18);background:#111827;box-shadow:none}[data-viewer-theme='system'] .pdf-toolbar-group,[data-viewer-theme='system'] .pdf-page-button,[data-viewer-theme='system'] .pdf-outline-empty,[data-viewer-theme='system'] .pdf-state{border-color:rgba(148,163,184,.18);background:#151f2b;color:#cbd5e1}[data-viewer-theme='system'] .pdf-icon-button,[data-viewer-theme='system'] .pdf-scale-button,[data-viewer-theme='system'] .pdf-page-meter,[data-viewer-theme='system'] .pdf-rotation-meter,[data-viewer-theme='system'] .pdf-outline-button{color:#cbd5e1}[data-viewer-theme='system'] .pdf-page-meter strong,[data-viewer-theme='system'] .pdf-nav-head strong{color:#f8fafc}[data-viewer-theme='system'] .pdf-icon-button:hover:not(:disabled),[data-viewer-theme='system'] .pdf-scale-button:hover,[data-viewer-theme='system'] .pdf-icon-button--active,[data-viewer-theme='system'] .pdf-nav-tabs button:hover,[data-viewer-theme='system'] .pdf-nav-tabs button.active,[data-viewer-theme='system'] .pdf-page-button:hover,[data-viewer-theme='system'] .pdf-page-button--active,[data-viewer-theme='system'] .pdf-outline-button:hover{border-color:rgba(94,234,212,.35);background:rgba(45,212,191,.12);color:#5eead4}[data-viewer-theme='system'] .pdf-wrapper{background:#101820}[data-viewer-theme='system'] .pdfViewer .page{color-scheme:only light;forced-color-adjust:none}}
30
39
  @media (max-width:720px){
31
40
  .pdf-toolbar{flex-wrap:nowrap;gap:6px;min-height:44px;padding:5px 6px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
32
41
  .pdf-toolbar::-webkit-scrollbar{display:none}
@@ -183,8 +192,8 @@ const installBundledPdfFakeWorker = async () => {
183
192
  WorkerMessageHandler: workerModule.WorkerMessageHandler,
184
193
  };
185
194
  };
186
- const resolvePdfWorkerUrl = (options, documentUrl) => {
187
- return resolveFileViewerPdfAssetUrls(options, documentUrl).workerUrl;
195
+ const resolvePdfWorkerUrl = (options, documentBaseUrl) => {
196
+ return resolveFileViewerPdfAssetUrls(options, documentBaseUrl).workerUrl;
188
197
  };
189
198
  const buildOutlineItems = (items, prefix = 'outline', getFallbackTitle = index => `Outline ${index + 1}`) => items.map((item, index) => {
190
199
  const id = `${prefix}-${index}`;
@@ -435,7 +444,7 @@ export default async function renderPdf(buffer, target, context) {
435
444
  }
436
445
  canvas.width = Math.max(1, Math.ceil(renderViewport.width));
437
446
  canvas.height = Math.max(1, Math.ceil(renderViewport.height));
438
- await page.render({ canvas, canvasContext, viewport: renderViewport }).promise;
447
+ await page.render({ canvasContext, viewport: renderViewport }).promise;
439
448
  if (destroyed || pdfContext.document !== pdfDocument) {
440
449
  return;
441
450
  }
@@ -588,14 +597,16 @@ export default async function renderPdf(buffer, target, context) {
588
597
  }
589
598
  };
590
599
  const createPdfWorker = async () => {
591
- const workerUrl = resolvePdfWorkerUrl(options, documentRef.URL || undefined);
600
+ const workerUrl = resolvePdfWorkerUrl(options, documentRef.baseURI || documentRef.URL || undefined);
592
601
  const hasExplicitWorkerUrl = isConfiguredUrl(options === null || options === void 0 ? void 0 : options.workerUrl);
593
602
  const shouldUseRealWorker = !!(targetWindow === null || targetWindow === void 0 ? void 0 : targetWindow.Worker) &&
594
603
  (hasExplicitWorkerUrl || await canUseResolvedPdfWorkerUrl(workerUrl));
595
604
  if (shouldUseRealWorker) {
596
605
  GlobalWorkerOptions.workerSrc = workerUrl;
597
606
  try {
598
- const worker = PdfJsWorker.create({ name: 'file-viewer-pdf-worker' });
607
+ const worker = new PdfJsWorker({
608
+ name: 'file-viewer-pdf-worker',
609
+ });
599
610
  await worker.promise;
600
611
  return worker;
601
612
  }
@@ -1202,7 +1213,7 @@ export default async function renderPdf(buffer, target, context) {
1202
1213
  }
1203
1214
  canvas.width = Math.ceil(renderViewport.width);
1204
1215
  canvas.height = Math.ceil(renderViewport.height);
1205
- await page.render({ canvas, canvasContext, viewport: renderViewport }).promise;
1216
+ await page.render({ canvasContext, viewport: renderViewport }).promise;
1206
1217
  const pageTitle = t('pdf.export.pageTitle', { title: exportOptions.title, page: pageNumber });
1207
1218
  const pageStyle = [
1208
1219
  `--viewer-print-page-width:${formatCssPixels(pageWidth)}`,
@@ -1247,7 +1258,6 @@ export default async function renderPdf(buffer, target, context) {
1247
1258
  linkService: pdfLinkService,
1248
1259
  findController: pdfFindController,
1249
1260
  l10n: new GenericL10n(resolvedLocale),
1250
- enableAutoLinking: false,
1251
1261
  });
1252
1262
  pdfContext.viewer = pdfViewer;
1253
1263
  pdfContext.linkService = pdfLinkService;
@@ -1309,7 +1319,7 @@ export default async function renderPdf(buffer, target, context) {
1309
1319
  throw new Error(t('pdf.error.missingSource'));
1310
1320
  }
1311
1321
  const worker = await createPdfWorker();
1312
- const pdfAssets = resolveFileViewerPdfAssetUrls(options, documentRef.URL || documentRef.baseURI);
1322
+ const pdfAssets = resolveFileViewerPdfAssetUrls(options, documentRef.baseURI || documentRef.URL);
1313
1323
  const source = (context === null || context === void 0 ? void 0 : context.streamUrl)
1314
1324
  ? {
1315
1325
  url: context.streamUrl,
@@ -1323,7 +1333,6 @@ export default async function renderPdf(buffer, target, context) {
1323
1333
  ...source,
1324
1334
  worker: worker || undefined,
1325
1335
  cMapUrl: pdfAssets.cMapUrl,
1326
- wasmUrl: pdfAssets.wasmUrl,
1327
1336
  standardFontDataUrl: pdfAssets.standardFontDataUrl,
1328
1337
  useWorkerFetch: true,
1329
1338
  cMapPacked: true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@file-viewer/renderer-pdf",
3
- "version": "2.1.23",
3
+ "version": "2.1.25",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Standalone PDF renderer plugin for Flyfish File Viewer powered by PDF.js.",
@@ -54,8 +54,8 @@
54
54
  "LICENSE"
55
55
  ],
56
56
  "dependencies": {
57
- "@file-viewer/core": "2.1.23",
58
- "pdfjs-dist": "^6.0.227"
57
+ "@file-viewer/core": "2.1.25",
58
+ "pdfjs-dist": "4.10.38"
59
59
  },
60
60
  "devDependencies": {
61
61
  "typescript": "^6.0.3"