@file-viewer/renderer-pdf 2.1.16 → 2.1.18
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/dist/pdf.js +86 -11
- package/package.json +3 -3
package/dist/pdf.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getDocument, GlobalWorkerOptions, PDFWorker as PdfJsWorker, PixelsPerInch, } from 'pdfjs-dist/legacy/build/pdf.mjs';
|
|
2
2
|
import { EventBus, GenericL10n, PDFFindController, PDFLinkService, PDFViewer, } from 'pdfjs-dist/legacy/web/pdf_viewer.mjs';
|
|
3
|
-
import { registerFileViewerSearchProvider, registerFileViewerZoomProvider, unregisterFileViewerSearchProvider, unregisterFileViewerZoomProvider, registerFileViewerViewStateProvider, unregisterFileViewerViewStateProvider, createFileViewerZoomChangeEmitter, createFileViewerViewStateChange, createFileViewerViewStateChangeEmitter, createFileViewerTranslator, buildPrintPageStyle, formatCssPixels, DEFAULT_PDF_RANGE_CHUNK_SIZE, resolveFileViewerLocale, } from '@file-viewer/core';
|
|
3
|
+
import { registerFileViewerSearchProvider, registerFileViewerZoomProvider, unregisterFileViewerSearchProvider, unregisterFileViewerZoomProvider, registerFileViewerViewStateProvider, unregisterFileViewerViewStateProvider, createFileViewerZoomChangeEmitter, createFileViewerViewStateChange, createFileViewerViewStateChangeEmitter, createFileViewerTranslator, buildPrintPageStyle, formatCssPixels, DEFAULT_PDF_RANGE_CHUNK_SIZE, resolveFileViewerLocale, resolveFileViewerFitScale, } from '@file-viewer/core';
|
|
4
4
|
import { DEFAULT_FILE_VIEWER_PDF_WORKER_PATH, resolveFileViewerPdfAssetUrls, } from '@file-viewer/core/assets';
|
|
5
5
|
import { pdfViewerStyle } from './pdfStyles.js';
|
|
6
6
|
export const DEFAULT_FILE_VIEWER_PDF_WORKER_URL = DEFAULT_FILE_VIEWER_PDF_WORKER_PATH;
|
|
@@ -242,6 +242,7 @@ export default async function renderPdf(buffer, target, context) {
|
|
|
242
242
|
let viewStateApplyVersion = 0;
|
|
243
243
|
let activeViewStateApplyVersion = 0;
|
|
244
244
|
let pendingInitialViewState = initialViewState;
|
|
245
|
+
let pendingFitRequest = null;
|
|
245
246
|
let suppressScrollEventUntil = 0;
|
|
246
247
|
let scrollStateFrame = 0;
|
|
247
248
|
let pdfSearchState = createPdfSearchState();
|
|
@@ -902,21 +903,33 @@ export default async function renderPdf(buffer, target, context) {
|
|
|
902
903
|
emitViewStateChange(action, source);
|
|
903
904
|
}
|
|
904
905
|
};
|
|
905
|
-
const
|
|
906
|
-
var _a;
|
|
907
|
-
const
|
|
906
|
+
const getPageSizeAtScaleOne = (pdfViewer) => {
|
|
907
|
+
var _a, _b;
|
|
908
|
+
const pageIndex = Math.max(0, Math.min(pageCount - 1, currentPage - 1));
|
|
909
|
+
const pageView = pdfViewer.getPageView(pageIndex) || pdfViewer.getPageView(0);
|
|
908
910
|
const pdfPage = pageView === null || pageView === void 0 ? void 0 : pageView.pdfPage;
|
|
909
911
|
if (pdfPage) {
|
|
910
|
-
|
|
912
|
+
const viewportAtScaleOne = pdfPage.getViewport({
|
|
911
913
|
scale: PixelsPerInch.PDF_TO_CSS_UNITS,
|
|
912
914
|
rotation: currentRotation,
|
|
913
|
-
})
|
|
915
|
+
});
|
|
916
|
+
return {
|
|
917
|
+
width: viewportAtScaleOne.width,
|
|
918
|
+
height: viewportAtScaleOne.height,
|
|
919
|
+
};
|
|
914
920
|
}
|
|
915
921
|
const viewportWidth = (_a = pageView === null || pageView === void 0 ? void 0 : pageView.viewport) === null || _a === void 0 ? void 0 : _a.width;
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
922
|
+
const viewportHeight = (_b = pageView === null || pageView === void 0 ? void 0 : pageView.viewport) === null || _b === void 0 ? void 0 : _b.height;
|
|
923
|
+
if (viewportWidth && viewportHeight && currentScale) {
|
|
924
|
+
return {
|
|
925
|
+
width: viewportWidth / currentScale,
|
|
926
|
+
height: viewportHeight / currentScale,
|
|
927
|
+
};
|
|
928
|
+
}
|
|
929
|
+
return { width: 0, height: 0 };
|
|
930
|
+
};
|
|
931
|
+
const getPageWidthAtScaleOne = (pdfViewer) => {
|
|
932
|
+
return getPageSizeAtScaleOne(pdfViewer).width;
|
|
920
933
|
};
|
|
921
934
|
const getFitWidthScale = (pdfViewer) => {
|
|
922
935
|
const pageWidth = getPageWidthAtScaleOne(pdfViewer);
|
|
@@ -935,6 +948,59 @@ export default async function renderPdf(buffer, target, context) {
|
|
|
935
948
|
(_a = pdfContext.viewer) === null || _a === void 0 ? void 0 : _a.update();
|
|
936
949
|
});
|
|
937
950
|
};
|
|
951
|
+
const applyPdfFit = async (request) => {
|
|
952
|
+
var _a, _b, _c;
|
|
953
|
+
if (!pdfContext.viewer || loadStatus !== 'ready') {
|
|
954
|
+
pendingFitRequest = request;
|
|
955
|
+
return {
|
|
956
|
+
applied: false,
|
|
957
|
+
mode: request.mode,
|
|
958
|
+
resize: request.resize,
|
|
959
|
+
source: request.source,
|
|
960
|
+
reason: 'pending',
|
|
961
|
+
provider: 'view-state',
|
|
962
|
+
};
|
|
963
|
+
}
|
|
964
|
+
const pageSize = getPageSizeAtScaleOne(pdfContext.viewer);
|
|
965
|
+
const mode = request.mode === 'auto' ? 'width' : request.mode;
|
|
966
|
+
const scale = resolveFileViewerFitScale({
|
|
967
|
+
mode,
|
|
968
|
+
viewportWidth: Math.max(96, (request.viewportWidth || container.clientWidth || targetWindow.innerWidth) -
|
|
969
|
+
FIT_HORIZONTAL_PADDING -
|
|
970
|
+
PAGE_BORDER_WIDTH),
|
|
971
|
+
viewportHeight: Math.max(96, (container.clientHeight || request.viewportHeight || targetWindow.innerHeight) -
|
|
972
|
+
PAGE_BORDER_WIDTH),
|
|
973
|
+
contentWidth: pageSize.width,
|
|
974
|
+
contentHeight: pageSize.height,
|
|
975
|
+
currentScale,
|
|
976
|
+
minScale: (_a = request.minScale) !== null && _a !== void 0 ? _a : MIN_SCALE,
|
|
977
|
+
maxScale: (_b = request.maxScale) !== null && _b !== void 0 ? _b : MAX_SCALE,
|
|
978
|
+
});
|
|
979
|
+
if (!scale) {
|
|
980
|
+
return {
|
|
981
|
+
applied: false,
|
|
982
|
+
mode: request.mode,
|
|
983
|
+
resize: request.resize,
|
|
984
|
+
source: request.source,
|
|
985
|
+
reason: 'unmeasurable',
|
|
986
|
+
provider: 'view-state',
|
|
987
|
+
};
|
|
988
|
+
}
|
|
989
|
+
autoFitWidth = request.mode === 'auto' || request.mode === 'width';
|
|
990
|
+
setScale(scale, 'fit', request.source);
|
|
991
|
+
await waitForPaint(targetWindow);
|
|
992
|
+
(_c = pdfContext.viewer) === null || _c === void 0 ? void 0 : _c.update();
|
|
993
|
+
const state = getPdfViewState();
|
|
994
|
+
return {
|
|
995
|
+
applied: true,
|
|
996
|
+
mode: request.mode,
|
|
997
|
+
resize: request.resize,
|
|
998
|
+
scale: state.scale,
|
|
999
|
+
source: request.source,
|
|
1000
|
+
provider: 'view-state',
|
|
1001
|
+
state,
|
|
1002
|
+
};
|
|
1003
|
+
};
|
|
938
1004
|
const scheduleFitToWidth = () => {
|
|
939
1005
|
if (!autoFitWidth || !pdfContext.viewer) {
|
|
940
1006
|
return;
|
|
@@ -1207,7 +1273,14 @@ export default async function renderPdf(buffer, target, context) {
|
|
|
1207
1273
|
});
|
|
1208
1274
|
}
|
|
1209
1275
|
else {
|
|
1210
|
-
|
|
1276
|
+
const fitRequest = pendingFitRequest;
|
|
1277
|
+
pendingFitRequest = null;
|
|
1278
|
+
if (fitRequest) {
|
|
1279
|
+
void applyPdfFit(fitRequest);
|
|
1280
|
+
}
|
|
1281
|
+
else {
|
|
1282
|
+
emitViewStateChange('init', 'viewer');
|
|
1283
|
+
}
|
|
1211
1284
|
}
|
|
1212
1285
|
if (pdfContext.search) {
|
|
1213
1286
|
eventBus.dispatch('find', { type: '', query: pdfContext.search });
|
|
@@ -1321,12 +1394,14 @@ export default async function renderPdf(buffer, target, context) {
|
|
|
1321
1394
|
setScale(scale, 'zoom-change', 'api');
|
|
1322
1395
|
return getPdfZoomState();
|
|
1323
1396
|
},
|
|
1397
|
+
fit: applyPdfFit,
|
|
1324
1398
|
getState: getPdfZoomState,
|
|
1325
1399
|
subscribe: zoomEmitter.subscribe,
|
|
1326
1400
|
});
|
|
1327
1401
|
registerFileViewerViewStateProvider(root, {
|
|
1328
1402
|
getState: getPdfViewState,
|
|
1329
1403
|
applyState: applyPdfViewState,
|
|
1404
|
+
fit: applyPdfFit,
|
|
1330
1405
|
subscribe: viewStateEmitter.subscribe,
|
|
1331
1406
|
});
|
|
1332
1407
|
navToggleButton.addEventListener('click', () => toggleNav('user'));
|
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.18",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "Standalone PDF renderer plugin for Flyfish File Viewer powered by PDF.js.",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"funding": {
|
|
36
36
|
"type": "individual",
|
|
37
|
-
"url": "https://dev.flyfish.group/
|
|
37
|
+
"url": "https://dev.flyfish.group/donate?source=npm"
|
|
38
38
|
},
|
|
39
39
|
"main": "./dist/index.js",
|
|
40
40
|
"module": "./dist/index.js",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"LICENSE"
|
|
55
55
|
],
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@file-viewer/core": "^2.1.
|
|
57
|
+
"@file-viewer/core": "^2.1.18",
|
|
58
58
|
"pdfjs-dist": "^6.0.227"
|
|
59
59
|
},
|
|
60
60
|
"devDependencies": {
|