@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 +1 -1
- package/README.md +1 -1
- package/dist/pdf.js +18 -9
- package/package.json +3 -3
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
|
|
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
|
-
|
|
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,
|
|
187
|
-
return resolveFileViewerPdfAssetUrls(options,
|
|
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({
|
|
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
|
|
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({
|
|
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.
|
|
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.
|
|
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.
|
|
58
|
-
"pdfjs-dist": "
|
|
57
|
+
"@file-viewer/core": "2.1.25",
|
|
58
|
+
"pdfjs-dist": "4.10.38"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|
|
61
61
|
"typescript": "^6.0.3"
|