qidian-vue-ui 1.2.0 → 1.2.2
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.
|
@@ -4,7 +4,7 @@ import _sfc_main from "./index.vue2.mjs";
|
|
|
4
4
|
/* empty css */
|
|
5
5
|
/* empty css */
|
|
6
6
|
import _export_sfc from "../../../_virtual/_plugin-vue_export-helper.mjs";
|
|
7
|
-
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
7
|
+
const index = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-bd896941"]]);
|
|
8
8
|
export {
|
|
9
9
|
index as default
|
|
10
10
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import './index2.css'
|
|
2
2
|
import './index.css'
|
|
3
|
-
import { defineComponent, inject, computed, ref, shallowRef, onMounted, watch, createBlock, openBlock, unref, withCtx, withDirectives,
|
|
3
|
+
import { defineComponent, inject, computed, ref, shallowRef, onMounted, watch, createBlock, openBlock, unref, withCtx, withDirectives, createVNode, createElementBlock, createElementVNode, Transition, createCommentVNode, createTextVNode, toDisplayString, triggerRef } from "vue";
|
|
4
4
|
import { useCsl, resizeDirective, toPrecision, to, isDev } from "qidian-shared";
|
|
5
5
|
import { GlobalWorkerOptions, getDocument } from "../../../node_modules/.pnpm/pdfjs-dist@5.4.394/node_modules/pdfjs-dist/legacy/build/pdf.mjs";
|
|
6
6
|
import { PDFLinkService, EventBus, PDFFindController, PDFScriptingManager as PDFScriptingManagerComponents, PDFViewer } from "../../../node_modules/.pnpm/pdfjs-dist@5.4.394/node_modules/pdfjs-dist/legacy/web/pdf_viewer.mjs";
|
|
@@ -51,6 +51,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
51
51
|
const viewer = shallowRef();
|
|
52
52
|
const isAdaptiveView = computed(() => viewer.value?.currentScaleValue === ADAPTIVE_VIEW);
|
|
53
53
|
const debounceUpdateViewer = useDebounceFn(updateViewer, 300, { maxWait: 900 });
|
|
54
|
+
const showControls = ref(false);
|
|
54
55
|
const { zoomOut, zoomIn, adaptiveView, onWheel, onResize } = useZoom({
|
|
55
56
|
viewer,
|
|
56
57
|
updateViewer,
|
|
@@ -182,7 +183,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
182
183
|
return openBlock(), createBlock(unref(Loading), {
|
|
183
184
|
class: "qd-office-pdf",
|
|
184
185
|
loading: loading.value,
|
|
185
|
-
size: "small"
|
|
186
|
+
size: "small",
|
|
187
|
+
onMouseover: _cache[5] || (_cache[5] = ($event) => showControls.value = true),
|
|
188
|
+
onMouseleave: _cache[6] || (_cache[6] = ($event) => showControls.value = false)
|
|
186
189
|
}, {
|
|
187
190
|
default: withCtx(() => [
|
|
188
191
|
withDirectives((openBlock(), createElementBlock("div", {
|
|
@@ -206,120 +209,125 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
206
209
|
{ "300": true }
|
|
207
210
|
]
|
|
208
211
|
]),
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
createVNode(unref(Button), {
|
|
218
|
-
variant: "text",
|
|
219
|
-
theme: "default",
|
|
220
|
-
disabled: prevPageDisabled.value,
|
|
221
|
-
onClick: _cache[1] || (_cache[1] = ($event) => updatePage(viewer.value.currentPageNumber - 1))
|
|
212
|
+
createVNode(Transition, { name: "controls-fade" }, {
|
|
213
|
+
default: withCtx(() => [
|
|
214
|
+
viewer.value && showControls.value ? (openBlock(), createElementBlock("div", _hoisted_1, [
|
|
215
|
+
createElementVNode("div", _hoisted_2, [
|
|
216
|
+
createElementVNode("div", _hoisted_3, [
|
|
217
|
+
createVNode(unref(Tooltip), {
|
|
218
|
+
content: unref(t)("prevPage"),
|
|
219
|
+
disabled: prevPageDisabled.value
|
|
222
220
|
}, {
|
|
223
|
-
|
|
224
|
-
createVNode(unref(
|
|
221
|
+
default: withCtx(() => [
|
|
222
|
+
createVNode(unref(Button), {
|
|
223
|
+
variant: "text",
|
|
224
|
+
theme: "default",
|
|
225
|
+
disabled: prevPageDisabled.value,
|
|
226
|
+
onClick: _cache[1] || (_cache[1] = ($event) => updatePage(viewer.value.currentPageNumber - 1))
|
|
227
|
+
}, {
|
|
228
|
+
icon: withCtx(() => [
|
|
229
|
+
createVNode(unref(ChevronLeftIcon))
|
|
230
|
+
]),
|
|
231
|
+
_: 1
|
|
232
|
+
}, 8, ["disabled"])
|
|
225
233
|
]),
|
|
226
234
|
_: 1
|
|
227
|
-
}, 8, ["disabled"])
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
createVNode(unref(Tooltip), {
|
|
245
|
-
content: unref(t)("nextPage"),
|
|
246
|
-
disabled: nextPageDisabled.value
|
|
247
|
-
}, {
|
|
248
|
-
default: withCtx(() => [
|
|
249
|
-
createVNode(unref(Button), {
|
|
250
|
-
variant: "text",
|
|
251
|
-
theme: "default",
|
|
252
|
-
disabled: nextPageDisabled.value,
|
|
253
|
-
onClick: _cache[3] || (_cache[3] = ($event) => updatePage(viewer.value.currentPageNumber + 1))
|
|
235
|
+
}, 8, ["content", "disabled"]),
|
|
236
|
+
createElementVNode("div", _hoisted_4, [
|
|
237
|
+
createVNode(unref(InputNumber), {
|
|
238
|
+
modelValue: viewer.value.currentPageNumber,
|
|
239
|
+
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => viewer.value.currentPageNumber = $event),
|
|
240
|
+
"auto-width": "",
|
|
241
|
+
theme: "normal",
|
|
242
|
+
align: "center",
|
|
243
|
+
size: "small",
|
|
244
|
+
min: 1,
|
|
245
|
+
max: viewer.value.pagesCount
|
|
246
|
+
}, null, 8, ["modelValue", "max"]),
|
|
247
|
+
createTextVNode(" / " + toDisplayString(viewer.value.pagesCount), 1)
|
|
248
|
+
]),
|
|
249
|
+
createVNode(unref(Tooltip), {
|
|
250
|
+
content: unref(t)("nextPage"),
|
|
251
|
+
disabled: nextPageDisabled.value
|
|
254
252
|
}, {
|
|
255
|
-
|
|
256
|
-
createVNode(unref(
|
|
253
|
+
default: withCtx(() => [
|
|
254
|
+
createVNode(unref(Button), {
|
|
255
|
+
variant: "text",
|
|
256
|
+
theme: "default",
|
|
257
|
+
disabled: nextPageDisabled.value,
|
|
258
|
+
onClick: _cache[3] || (_cache[3] = ($event) => updatePage(viewer.value.currentPageNumber + 1))
|
|
259
|
+
}, {
|
|
260
|
+
icon: withCtx(() => [
|
|
261
|
+
createVNode(unref(ChevronRightIcon))
|
|
262
|
+
]),
|
|
263
|
+
_: 1
|
|
264
|
+
}, 8, ["disabled"])
|
|
257
265
|
]),
|
|
258
266
|
_: 1
|
|
259
|
-
}, 8, ["disabled"])
|
|
267
|
+
}, 8, ["content", "disabled"])
|
|
260
268
|
]),
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
createVNode(unref(Tooltip), {
|
|
266
|
-
content: unref(t)("zoomOut"),
|
|
267
|
-
disabled: zoomOutDisabled.value
|
|
268
|
-
}, {
|
|
269
|
-
default: withCtx(() => [
|
|
270
|
-
createVNode(unref(Button), {
|
|
271
|
-
variant: "text",
|
|
272
|
-
theme: "default",
|
|
273
|
-
disabled: zoomOutDisabled.value,
|
|
274
|
-
onClick: unref(zoomOut)
|
|
269
|
+
createVNode(unref(Divider), { layout: "vertical" }),
|
|
270
|
+
createVNode(unref(Tooltip), {
|
|
271
|
+
content: unref(t)("zoomOut"),
|
|
272
|
+
disabled: zoomOutDisabled.value
|
|
275
273
|
}, {
|
|
276
|
-
|
|
277
|
-
createVNode(unref(
|
|
274
|
+
default: withCtx(() => [
|
|
275
|
+
createVNode(unref(Button), {
|
|
276
|
+
variant: "text",
|
|
277
|
+
theme: "default",
|
|
278
|
+
disabled: zoomOutDisabled.value,
|
|
279
|
+
onClick: unref(zoomOut)
|
|
280
|
+
}, {
|
|
281
|
+
icon: withCtx(() => [
|
|
282
|
+
createVNode(unref(ZoomOutIcon))
|
|
283
|
+
]),
|
|
284
|
+
_: 1
|
|
285
|
+
}, 8, ["disabled", "onClick"])
|
|
278
286
|
]),
|
|
279
287
|
_: 1
|
|
280
|
-
}, 8, ["
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
createVNode(unref(Tooltip), {
|
|
286
|
-
content: unref(t)("zoomIn"),
|
|
287
|
-
disabled: zoomInDisabled.value
|
|
288
|
-
}, {
|
|
289
|
-
default: withCtx(() => [
|
|
290
|
-
createVNode(unref(Button), {
|
|
291
|
-
variant: "text",
|
|
292
|
-
theme: "default",
|
|
293
|
-
disabled: zoomInDisabled.value,
|
|
294
|
-
onClick: unref(zoomIn)
|
|
288
|
+
}, 8, ["content", "disabled"]),
|
|
289
|
+
createElementVNode("div", _hoisted_5, toDisplayString(unref(toPrecision)(viewer.value.currentScale * 100)) + "% ", 1),
|
|
290
|
+
createVNode(unref(Tooltip), {
|
|
291
|
+
content: unref(t)("zoomIn"),
|
|
292
|
+
disabled: zoomInDisabled.value
|
|
295
293
|
}, {
|
|
296
|
-
|
|
297
|
-
createVNode(unref(
|
|
294
|
+
default: withCtx(() => [
|
|
295
|
+
createVNode(unref(Button), {
|
|
296
|
+
variant: "text",
|
|
297
|
+
theme: "default",
|
|
298
|
+
disabled: zoomInDisabled.value,
|
|
299
|
+
onClick: unref(zoomIn)
|
|
300
|
+
}, {
|
|
301
|
+
icon: withCtx(() => [
|
|
302
|
+
createVNode(unref(ZoomInIcon))
|
|
303
|
+
]),
|
|
304
|
+
_: 1
|
|
305
|
+
}, 8, ["disabled", "onClick"])
|
|
298
306
|
]),
|
|
299
307
|
_: 1
|
|
300
|
-
}, 8, ["
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
}, 8, ["content", "disabled"]),
|
|
304
|
-
createVNode(unref(Tooltip), {
|
|
305
|
-
content: isAdaptiveView.value ? unref(t)("cancelAdaptiveView") : unref(t)("adaptiveView")
|
|
306
|
-
}, {
|
|
307
|
-
default: withCtx(() => [
|
|
308
|
-
createVNode(unref(Button), {
|
|
309
|
-
variant: "text",
|
|
310
|
-
theme: isAdaptiveView.value ? "primary" : "default",
|
|
311
|
-
onClick: _cache[4] || (_cache[4] = ($event) => unref(adaptiveView)(!isAdaptiveView.value))
|
|
308
|
+
}, 8, ["content", "disabled"]),
|
|
309
|
+
createVNode(unref(Tooltip), {
|
|
310
|
+
content: isAdaptiveView.value ? unref(t)("cancelAdaptiveView") : unref(t)("adaptiveView")
|
|
312
311
|
}, {
|
|
313
|
-
|
|
314
|
-
|
|
312
|
+
default: withCtx(() => [
|
|
313
|
+
createVNode(unref(Button), {
|
|
314
|
+
variant: "text",
|
|
315
|
+
theme: isAdaptiveView.value ? "primary" : "default",
|
|
316
|
+
onClick: _cache[4] || (_cache[4] = ($event) => unref(adaptiveView)(!isAdaptiveView.value))
|
|
317
|
+
}, {
|
|
318
|
+
icon: withCtx(() => [
|
|
319
|
+
isAdaptiveView.value ? (openBlock(), createBlock(unref(CenterFocusStrongFilledIcon), { key: 0 })) : (openBlock(), createBlock(unref(CenterFocusStrongIcon), { key: 1 }))
|
|
320
|
+
]),
|
|
321
|
+
_: 1
|
|
322
|
+
}, 8, ["theme"])
|
|
315
323
|
]),
|
|
316
324
|
_: 1
|
|
317
|
-
}, 8, ["
|
|
318
|
-
])
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
325
|
+
}, 8, ["content"])
|
|
326
|
+
])
|
|
327
|
+
])) : createCommentVNode("", true)
|
|
328
|
+
]),
|
|
329
|
+
_: 1
|
|
330
|
+
})
|
|
323
331
|
]),
|
|
324
332
|
_: 1
|
|
325
333
|
}, 8, ["loading"]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/office/pdf/index.vue"],"sourcesContent":["<template>\n <t-loading class=\"qd-office-pdf\" :loading=\"loading\" size=\"small\">\n <div\n ref=\"containerRef\"\n v-resize.300=\"onResize\"\n class=\"qd-office-pdf__container\"\n @wheel=\"onWheel\"\n @scroll=\"onScroll\"\n >\n <div ref=\"viewerRef\" class=\"qd-office-pdf__viewer pdfViewer\"></div>\n </div>\n\n <div v-if=\"viewer\" class=\"qd-office-pdf__controls\">\n <div class=\"qd-office-pdf__controls-body\">\n <div class=\"qd-office-pdf__controls-page\">\n <t-tooltip :content=\"t('prevPage')\" :disabled=\"prevPageDisabled\">\n <t-button\n variant=\"text\"\n theme=\"default\"\n :disabled=\"prevPageDisabled\"\n @click=\"updatePage(viewer.currentPageNumber - 1)\"\n >\n <template #icon><chevron-left-icon /></template>\n </t-button>\n </t-tooltip>\n\n <div class=\"qd-office-pdf__controls-page-input\">\n <t-input-number\n v-model=\"viewer.currentPageNumber\"\n auto-width\n theme=\"normal\"\n align=\"center\"\n size=\"small\"\n :min=\"1\"\n :max=\"viewer.pagesCount\"\n />\n / {{ viewer.pagesCount }}\n </div>\n\n <t-tooltip :content=\"t('nextPage')\" :disabled=\"nextPageDisabled\">\n <t-button\n variant=\"text\"\n theme=\"default\"\n :disabled=\"nextPageDisabled\"\n @click=\"updatePage(viewer.currentPageNumber + 1)\"\n >\n <template #icon><chevron-right-icon /></template>\n </t-button>\n </t-tooltip>\n </div>\n\n <t-divider layout=\"vertical\" />\n\n <t-tooltip :content=\"t('zoomOut')\" :disabled=\"zoomOutDisabled\">\n <t-button variant=\"text\" theme=\"default\" :disabled=\"zoomOutDisabled\" @click=\"zoomOut\">\n <template #icon><zoom-out-icon /></template>\n </t-button>\n </t-tooltip>\n\n <div class=\"qd-office-pdf__controls-scale\">\n {{ toPrecision(viewer.currentScale * 100) }}%\n </div>\n\n <t-tooltip :content=\"t('zoomIn')\" :disabled=\"zoomInDisabled\">\n <t-button variant=\"text\" theme=\"default\" :disabled=\"zoomInDisabled\" @click=\"zoomIn\">\n <template #icon><zoom-in-icon /></template>\n </t-button>\n </t-tooltip>\n\n <t-tooltip :content=\"isAdaptiveView ? t('cancelAdaptiveView') : t('adaptiveView')\">\n <t-button\n variant=\"text\"\n :theme=\"isAdaptiveView ? 'primary' : 'default'\"\n @click=\"adaptiveView(!isAdaptiveView)\"\n >\n <template #icon>\n <center-focus-strong-filled-icon v-if=\"isAdaptiveView\" />\n <center-focus-strong-icon v-else />\n </template>\n </t-button>\n </t-tooltip>\n </div>\n </div>\n </t-loading>\n</template>\n\n<script setup lang=\"ts\">\n import type { PageRenderedEvent, QdOfficePdfProps, TextLayerRenderedEvent } from './types'\n import { useDebounceFn } from '@vueuse/core'\n import { to, useCsl, isDev, toPrecision, resizeDirective } from 'qidian-shared'\n import { computed, inject, onMounted, ref, shallowRef, triggerRef, watch } from 'vue'\n import { getDocument, GlobalWorkerOptions } from 'pdfjs-dist/legacy/build/pdf.mjs'\n import {\n EventBus,\n PDFFindController,\n PDFLinkService,\n PDFScriptingManager,\n PDFViewer\n } from 'pdfjs-dist/legacy/web/pdf_viewer.mjs'\n import {\n CenterFocusStrongFilledIcon,\n CenterFocusStrongIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ZoomInIcon,\n ZoomOutIcon\n } from 'tdesign-icons-vue-next'\n import {\n Loading as TLoading,\n Tooltip as TTooltip,\n Button as TButton,\n InputNumber as TInputNumber,\n Divider as TDivider\n } from 'tdesign-vue-next'\n import { ADAPTIVE_VIEW, ZOOM_SCALE_LIMIT } from './config'\n import { useZoom } from './hooks/useZoom'\n import { useConfig } from '../../config-provider/useConfig'\n import { PROVIDE_OFFICE } from '../../config-provider/config'\n\n defineOptions({\n name: 'QdOfficePdf'\n })\n\n const props = defineProps<QdOfficePdfProps>()\n const emit = defineEmits<{\n pagesInit: [PDFViewer]\n textLayerRendered: [TextLayerRenderedEvent]\n }>()\n\n const vResize = resizeDirective\n\n const csl = useCsl('pdf')\n const { t } = useConfig('office')\n const globalOffice = inject(\n PROVIDE_OFFICE,\n computed(() => undefined)\n )\n GlobalWorkerOptions.workerSrc = globalOffice.value?.pdfWorkerUrl || props.workerUrl || ''\n\n const loading = ref(false)\n const containerRef = ref<HTMLDivElement>()\n const viewerRef = ref<HTMLDivElement>()\n const viewer = shallowRef<PDFViewer | undefined>()\n const isAdaptiveView = computed(() => viewer.value?.currentScaleValue === ADAPTIVE_VIEW)\n const debounceUpdateViewer = useDebounceFn(updateViewer, 300, { maxWait: 900 })\n\n const { zoomOut, zoomIn, adaptiveView, onWheel, onResize } = useZoom({\n viewer,\n updateViewer,\n debounceUpdateViewer\n })\n\n const prevPageDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentPageNumber <= 1\n })\n const nextPageDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentPageNumber >= viewerVm.pagesCount\n })\n const zoomOutDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentScale <= ZOOM_SCALE_LIMIT.MIN\n })\n const zoomInDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentScale >= ZOOM_SCALE_LIMIT.MAX\n })\n\n async function render() {\n const { src, cMapUrl, iccUrl, wasmUrl, standardFontDataUrl } = props\n const containerEl = containerRef.value\n const viewerEl = viewerRef.value\n if (!src || !containerEl || !viewerEl) return\n\n loading.value = true\n const eventBus = new EventBus()\n const linkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: 2,\n externalLinkRel: ''\n })\n linkService.externalLinkEnabled = false // 禁用外链跳转\n\n const findController = new PDFFindController({\n eventBus,\n linkService,\n updateMatchesCountOnProgress: true\n })\n const scriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc: globalOffice.value?.pdfSandboxUrl || props.sandboxUrl\n })\n\n viewer.value = new PDFViewer({\n container: containerEl,\n viewer: viewerEl,\n eventBus,\n linkService,\n findController,\n scriptingManager,\n annotationEditorMode: 0,\n textLayerMode: 1,\n annotationMode: 1,\n enablePrintAutoRotate: true,\n maxCanvasPixels: 33554432,\n maxCanvasDim: 32767,\n capCanvasAreaFactor: 200,\n enableHWA: true,\n enableDetailCanvas: true,\n enablePermissions: true,\n supportsPinchToZoom: true,\n enableAutoLinking: true,\n minDurationToUpdateCanvas: 500,\n l10n: undefined\n })\n const viewerVm = viewer.value\n\n linkService.setViewer(viewerVm)\n scriptingManager.setViewer(viewerVm)\n\n const loadingTask = getDocument({\n url: src,\n cMapUrl: globalOffice.value?.pdfCMapUrl || cMapUrl,\n iccUrl: globalOffice.value?.pdfIccUrl || iccUrl,\n wasmUrl: globalOffice.value?.pdfWasmUrl || wasmUrl,\n standardFontDataUrl: globalOffice.value?.pdfStandardFontDataUrl || standardFontDataUrl,\n pdfBug: isDev,\n cMapPacked: true,\n enableXfa: true,\n enableHWA: true,\n isEvalSupported: true,\n isOffscreenCanvasSupported: true,\n useWasm: true,\n useWorkerFetch: true,\n\n verbosity: 1,\n maxImageSize: -1,\n canvasMaxAreaInBytes: -1,\n\n fontExtraProperties: false,\n disableAutoFetch: false,\n disableFontFace: false,\n disableRange: false,\n disableStream: false\n })\n const [pdfErr, pdf] = await to(loadingTask.promise)\n if (pdfErr) {\n loading.value = false\n return\n }\n\n viewerVm.setDocument(pdf)\n linkService.setDocument(pdf)\n\n eventBus.on('pagesinit', () => {\n csl.log.dev('pagesInit')\n loading.value = false\n emit('pagesInit', viewerVm)\n })\n\n eventBus.on('pagerendered', (evt: PageRenderedEvent) => {\n csl.log.dev('pageRendered', evt.pageNumber)\n })\n\n eventBus.on('textlayerrendered', (evt: TextLayerRenderedEvent) => {\n emit('textLayerRendered', evt)\n })\n }\n\n function updateViewer() {\n if (!viewer.value) return\n\n triggerRef(viewer)\n }\n\n function updatePage(page: number) {\n const viewerVm = viewer.value\n if (!viewerVm) return\n\n viewerVm.currentPageNumber = page\n updateViewer()\n }\n\n function onScroll() {\n debounceUpdateViewer()\n }\n\n onMounted(() => {\n render()\n watch(() => props.src, render)\n })\n</script>\n\n<style lang=\"less\">\n @import 'pdfjs-dist/legacy/web/pdf_viewer.css';\n</style>\n\n<style lang=\"less\" scoped>\n .qd-office-pdf {\n width: 100%;\n height: 100%;\n position: relative;\n background-color: var(--td-bg-color-component);\n\n &__container {\n position: absolute;\n width: 100%;\n max-height: 100%;\n overflow: auto;\n }\n\n &__viewer {\n width: 100%;\n height: 100%;\n\n :deep(.page) {\n // NOTE 解决 textLayer 整体偏移问题\n box-sizing: content-box;\n }\n\n :deep(.annotationLayer) {\n :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder) > a {\n background-color: transparent;\n }\n }\n }\n\n &__controls {\n position: absolute;\n left: 50%;\n bottom: var(--td-comp-paddingTB-xl) !important;\n transform: translateX(-50%);\n border-radius: 3px;\n background-color: rgba(var(--td-bg-color-container), 0.5);\n backdrop-filter: blur(2px);\n box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n user-select: none;\n transition: all 0.2s linear;\n\n .t-button {\n width: 38px;\n height: 38px;\n padding: 0;\n margin-left: 0;\n }\n\n &-body {\n display: flex;\n align-items: center;\n opacity: 0.5;\n transition: opacity 0.2s linear;\n }\n\n &-scale {\n width: 39px;\n margin: 0 var(--td-comp-margin-s);\n }\n\n &-page {\n display: flex;\n align-items: stretch;\n\n :deep(.t-input-number) {\n width: auto;\n\n .t-input {\n padding: 0;\n\n &__wrap {\n min-width: 32px;\n }\n\n &__inner {\n min-width: 32px;\n }\n }\n }\n\n &-input {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 0 var(--td-comp-paddingTB-s);\n font-size: var(--td-font-body-medium);\n gap: var(--td-comp-margin-s);\n background-color: var(--td-bg-color-secondarycontainer);\n border-radius: var(--td-radius-default);\n }\n }\n\n &:hover {\n background-color: var(--td-bg-color-container);\n\n .qd-office-pdf__controls-body {\n opacity: 1;\n }\n }\n }\n }\n</style>\n"],"names":["PDFScriptingManager","_createBlock","_unref","TLoading","_createElementBlock","_createElementVNode","_openBlock","_createVNode","TTooltip","TButton","TInputNumber","_toDisplayString","TDivider"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.vue2.mjs","sources":["../../../../src/components/office/pdf/index.vue"],"sourcesContent":["<template>\n <t-loading\n class=\"qd-office-pdf\"\n :loading=\"loading\"\n size=\"small\"\n @mouseover=\"showControls = true\"\n @mouseleave=\"showControls = false\"\n >\n <div\n ref=\"containerRef\"\n v-resize.300=\"onResize\"\n class=\"qd-office-pdf__container\"\n @wheel=\"onWheel\"\n @scroll=\"onScroll\"\n >\n <div ref=\"viewerRef\" class=\"qd-office-pdf__viewer pdfViewer\"></div>\n </div>\n\n <transition name=\"controls-fade\">\n <div v-if=\"viewer && showControls\" class=\"qd-office-pdf__controls\">\n <div class=\"qd-office-pdf__controls-body\">\n <div class=\"qd-office-pdf__controls-page\">\n <t-tooltip :content=\"t('prevPage')\" :disabled=\"prevPageDisabled\">\n <t-button\n variant=\"text\"\n theme=\"default\"\n :disabled=\"prevPageDisabled\"\n @click=\"updatePage(viewer.currentPageNumber - 1)\"\n >\n <template #icon><chevron-left-icon /></template>\n </t-button>\n </t-tooltip>\n\n <div class=\"qd-office-pdf__controls-page-input\">\n <t-input-number\n v-model=\"viewer.currentPageNumber\"\n auto-width\n theme=\"normal\"\n align=\"center\"\n size=\"small\"\n :min=\"1\"\n :max=\"viewer.pagesCount\"\n />\n / {{ viewer.pagesCount }}\n </div>\n\n <t-tooltip :content=\"t('nextPage')\" :disabled=\"nextPageDisabled\">\n <t-button\n variant=\"text\"\n theme=\"default\"\n :disabled=\"nextPageDisabled\"\n @click=\"updatePage(viewer.currentPageNumber + 1)\"\n >\n <template #icon><chevron-right-icon /></template>\n </t-button>\n </t-tooltip>\n </div>\n\n <t-divider layout=\"vertical\" />\n\n <t-tooltip :content=\"t('zoomOut')\" :disabled=\"zoomOutDisabled\">\n <t-button variant=\"text\" theme=\"default\" :disabled=\"zoomOutDisabled\" @click=\"zoomOut\">\n <template #icon><zoom-out-icon /></template>\n </t-button>\n </t-tooltip>\n\n <div class=\"qd-office-pdf__controls-scale\">\n {{ toPrecision(viewer.currentScale * 100) }}%\n </div>\n\n <t-tooltip :content=\"t('zoomIn')\" :disabled=\"zoomInDisabled\">\n <t-button variant=\"text\" theme=\"default\" :disabled=\"zoomInDisabled\" @click=\"zoomIn\">\n <template #icon><zoom-in-icon /></template>\n </t-button>\n </t-tooltip>\n\n <t-tooltip :content=\"isAdaptiveView ? t('cancelAdaptiveView') : t('adaptiveView')\">\n <t-button\n variant=\"text\"\n :theme=\"isAdaptiveView ? 'primary' : 'default'\"\n @click=\"adaptiveView(!isAdaptiveView)\"\n >\n <template #icon>\n <center-focus-strong-filled-icon v-if=\"isAdaptiveView\" />\n <center-focus-strong-icon v-else />\n </template>\n </t-button>\n </t-tooltip>\n </div>\n </div>\n </transition>\n </t-loading>\n</template>\n\n<script setup lang=\"ts\">\n import type { PageRenderedEvent, QdOfficePdfProps, TextLayerRenderedEvent } from './types'\n import { useDebounceFn } from '@vueuse/core'\n import { to, useCsl, isDev, toPrecision, resizeDirective } from 'qidian-shared'\n import { computed, inject, onMounted, ref, shallowRef, triggerRef, watch } from 'vue'\n import { getDocument, GlobalWorkerOptions } from 'pdfjs-dist/legacy/build/pdf.mjs'\n import {\n EventBus,\n PDFFindController,\n PDFLinkService,\n PDFScriptingManager,\n PDFViewer\n } from 'pdfjs-dist/legacy/web/pdf_viewer.mjs'\n import {\n CenterFocusStrongFilledIcon,\n CenterFocusStrongIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ZoomInIcon,\n ZoomOutIcon\n } from 'tdesign-icons-vue-next'\n import {\n Loading as TLoading,\n Tooltip as TTooltip,\n Button as TButton,\n InputNumber as TInputNumber,\n Divider as TDivider\n } from 'tdesign-vue-next'\n import { ADAPTIVE_VIEW, ZOOM_SCALE_LIMIT } from './config'\n import { useZoom } from './hooks/useZoom'\n import { useConfig } from '../../config-provider/useConfig'\n import { PROVIDE_OFFICE } from '../../config-provider/config'\n\n defineOptions({\n name: 'QdOfficePdf'\n })\n\n const props = defineProps<QdOfficePdfProps>()\n const emit = defineEmits<{\n pagesInit: [PDFViewer]\n textLayerRendered: [TextLayerRenderedEvent]\n }>()\n\n const vResize = resizeDirective\n\n const csl = useCsl('pdf')\n const { t } = useConfig('office')\n const globalOffice = inject(\n PROVIDE_OFFICE,\n computed(() => undefined)\n )\n GlobalWorkerOptions.workerSrc = globalOffice.value?.pdfWorkerUrl || props.workerUrl || ''\n\n const loading = ref(false)\n const containerRef = ref<HTMLDivElement>()\n const viewerRef = ref<HTMLDivElement>()\n const viewer = shallowRef<PDFViewer | undefined>()\n const isAdaptiveView = computed(() => viewer.value?.currentScaleValue === ADAPTIVE_VIEW)\n const debounceUpdateViewer = useDebounceFn(updateViewer, 300, { maxWait: 900 })\n const showControls = ref(false)\n\n const { zoomOut, zoomIn, adaptiveView, onWheel, onResize } = useZoom({\n viewer,\n updateViewer,\n debounceUpdateViewer\n })\n\n const prevPageDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentPageNumber <= 1\n })\n const nextPageDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentPageNumber >= viewerVm.pagesCount\n })\n const zoomOutDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentScale <= ZOOM_SCALE_LIMIT.MIN\n })\n const zoomInDisabled = computed(() => {\n const viewerVm = viewer.value\n return viewerVm && viewerVm.currentScale >= ZOOM_SCALE_LIMIT.MAX\n })\n\n async function render() {\n const { src, cMapUrl, iccUrl, wasmUrl, standardFontDataUrl } = props\n const containerEl = containerRef.value\n const viewerEl = viewerRef.value\n if (!src || !containerEl || !viewerEl) return\n\n loading.value = true\n const eventBus = new EventBus()\n const linkService = new PDFLinkService({\n eventBus,\n externalLinkTarget: 2,\n externalLinkRel: ''\n })\n linkService.externalLinkEnabled = false // 禁用外链跳转\n\n const findController = new PDFFindController({\n eventBus,\n linkService,\n updateMatchesCountOnProgress: true\n })\n const scriptingManager = new PDFScriptingManager({\n eventBus,\n sandboxBundleSrc: globalOffice.value?.pdfSandboxUrl || props.sandboxUrl\n })\n\n viewer.value = new PDFViewer({\n container: containerEl,\n viewer: viewerEl,\n eventBus,\n linkService,\n findController,\n scriptingManager,\n annotationEditorMode: 0,\n textLayerMode: 1,\n annotationMode: 1,\n enablePrintAutoRotate: true,\n maxCanvasPixels: 33554432,\n maxCanvasDim: 32767,\n capCanvasAreaFactor: 200,\n enableHWA: true,\n enableDetailCanvas: true,\n enablePermissions: true,\n supportsPinchToZoom: true,\n enableAutoLinking: true,\n minDurationToUpdateCanvas: 500,\n l10n: undefined\n })\n const viewerVm = viewer.value\n\n linkService.setViewer(viewerVm)\n scriptingManager.setViewer(viewerVm)\n\n const loadingTask = getDocument({\n url: src,\n cMapUrl: globalOffice.value?.pdfCMapUrl || cMapUrl,\n iccUrl: globalOffice.value?.pdfIccUrl || iccUrl,\n wasmUrl: globalOffice.value?.pdfWasmUrl || wasmUrl,\n standardFontDataUrl: globalOffice.value?.pdfStandardFontDataUrl || standardFontDataUrl,\n pdfBug: isDev,\n cMapPacked: true,\n enableXfa: true,\n enableHWA: true,\n isEvalSupported: true,\n isOffscreenCanvasSupported: true,\n useWasm: true,\n useWorkerFetch: true,\n\n verbosity: 1,\n maxImageSize: -1,\n canvasMaxAreaInBytes: -1,\n\n fontExtraProperties: false,\n disableAutoFetch: false,\n disableFontFace: false,\n disableRange: false,\n disableStream: false\n })\n const [pdfErr, pdf] = await to(loadingTask.promise)\n if (pdfErr) {\n loading.value = false\n return\n }\n\n viewerVm.setDocument(pdf)\n linkService.setDocument(pdf)\n\n eventBus.on('pagesinit', () => {\n csl.log.dev('pagesInit')\n loading.value = false\n emit('pagesInit', viewerVm)\n })\n\n eventBus.on('pagerendered', (evt: PageRenderedEvent) => {\n csl.log.dev('pageRendered', evt.pageNumber)\n })\n\n eventBus.on('textlayerrendered', (evt: TextLayerRenderedEvent) => {\n emit('textLayerRendered', evt)\n })\n }\n\n function updateViewer() {\n if (!viewer.value) return\n\n triggerRef(viewer)\n }\n\n function updatePage(page: number) {\n const viewerVm = viewer.value\n if (!viewerVm) return\n\n viewerVm.currentPageNumber = page\n updateViewer()\n }\n\n function onScroll() {\n debounceUpdateViewer()\n }\n\n onMounted(() => {\n render()\n watch(() => props.src, render)\n })\n</script>\n\n<style lang=\"less\">\n @import 'pdfjs-dist/legacy/web/pdf_viewer.css';\n</style>\n\n<style lang=\"less\" scoped>\n .qd-office-pdf {\n width: 100%;\n height: 100%;\n position: relative;\n background-color: var(--td-bg-color-component);\n\n &__container {\n position: absolute;\n width: 100%;\n max-height: 100%;\n overflow: auto;\n }\n\n &__viewer {\n width: 100%;\n height: 100%;\n\n :deep(.page) {\n // NOTE 解决 textLayer 整体偏移问题\n box-sizing: content-box;\n }\n\n :deep(.annotationLayer) {\n :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder) > a {\n background-color: transparent;\n }\n }\n }\n\n &__controls {\n position: absolute;\n left: 50%;\n bottom: var(--td-comp-paddingTB-xl) !important;\n transform: translateX(-50%);\n border-radius: 3px;\n background-color: rgba(var(--td-bg-color-container), 0.5);\n backdrop-filter: blur(2px);\n box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.08);\n user-select: none;\n transition: all 0.2s linear;\n\n .t-button {\n width: 38px;\n height: 38px;\n padding: 0;\n margin-left: 0;\n }\n\n &-body {\n display: flex;\n align-items: center;\n opacity: 0.5;\n transition: opacity 0.2s linear;\n }\n\n &-scale {\n width: 39px;\n margin: 0 var(--td-comp-margin-s);\n }\n\n &-page {\n display: flex;\n align-items: stretch;\n\n :deep(.t-input-number) {\n width: auto;\n\n .t-input {\n padding: 0;\n\n &__wrap {\n min-width: 32px;\n }\n\n &__inner {\n min-width: 32px;\n }\n }\n }\n\n &-input {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n padding: 0 var(--td-comp-paddingTB-s);\n font-size: var(--td-font-body-medium);\n gap: var(--td-comp-margin-s);\n background-color: var(--td-bg-color-secondarycontainer);\n border-radius: var(--td-radius-default);\n }\n }\n\n &:hover {\n background-color: var(--td-bg-color-container);\n\n .qd-office-pdf__controls-body {\n opacity: 1;\n }\n }\n }\n }\n\n .controls-fade-leave-active,\n .controls-fade-enter-active {\n transition: opacity 0.28s cubic-bezier(0.38, 0, 0.24, 1);\n }\n\n .controls-fade-enter-from,\n .controls-fade-leave-to {\n opacity: 0;\n }\n</style>\n"],"names":["PDFScriptingManager","_createBlock","_unref","TLoading","_createElementBlock","_createElementVNode","_createVNode","_Transition","_openBlock","TTooltip","TButton","TInputNumber","_toDisplayString","TDivider"],"mappings":"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"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
.qd-office-pdf[data-v-
|
|
1
|
+
.qd-office-pdf[data-v-bd896941] {
|
|
2
2
|
width: 100%;
|
|
3
3
|
height: 100%;
|
|
4
4
|
position: relative;
|
|
5
5
|
background-color: var(--td-bg-color-component);
|
|
6
6
|
}
|
|
7
|
-
.qd-office-pdf__container[data-v-
|
|
7
|
+
.qd-office-pdf__container[data-v-bd896941] {
|
|
8
8
|
position: absolute;
|
|
9
9
|
width: 100%;
|
|
10
10
|
max-height: 100%;
|
|
11
11
|
overflow: auto;
|
|
12
12
|
}
|
|
13
|
-
.qd-office-pdf__viewer[data-v-
|
|
13
|
+
.qd-office-pdf__viewer[data-v-bd896941] {
|
|
14
14
|
width: 100%;
|
|
15
15
|
height: 100%;
|
|
16
16
|
}
|
|
17
|
-
.qd-office-pdf__viewer[data-v-
|
|
17
|
+
.qd-office-pdf__viewer[data-v-bd896941] .page {
|
|
18
18
|
box-sizing: content-box;
|
|
19
19
|
}
|
|
20
|
-
.qd-office-pdf__viewer[data-v-
|
|
20
|
+
.qd-office-pdf__viewer[data-v-bd896941] .annotationLayer :is(.linkAnnotation, .buttonWidgetAnnotation.pushButton):not(.hasBorder) > a {
|
|
21
21
|
background-color: transparent;
|
|
22
22
|
}
|
|
23
|
-
.qd-office-pdf__controls[data-v-
|
|
23
|
+
.qd-office-pdf__controls[data-v-bd896941] {
|
|
24
24
|
position: absolute;
|
|
25
25
|
left: 50%;
|
|
26
26
|
bottom: var(--td-comp-paddingTB-xl) !important;
|
|
@@ -32,39 +32,39 @@
|
|
|
32
32
|
user-select: none;
|
|
33
33
|
transition: all 0.2s linear;
|
|
34
34
|
}
|
|
35
|
-
.qd-office-pdf__controls .t-button[data-v-
|
|
35
|
+
.qd-office-pdf__controls .t-button[data-v-bd896941] {
|
|
36
36
|
width: 38px;
|
|
37
37
|
height: 38px;
|
|
38
38
|
padding: 0;
|
|
39
39
|
margin-left: 0;
|
|
40
40
|
}
|
|
41
|
-
.qd-office-pdf__controls-body[data-v-
|
|
41
|
+
.qd-office-pdf__controls-body[data-v-bd896941] {
|
|
42
42
|
display: flex;
|
|
43
43
|
align-items: center;
|
|
44
44
|
opacity: 0.5;
|
|
45
45
|
transition: opacity 0.2s linear;
|
|
46
46
|
}
|
|
47
|
-
.qd-office-pdf__controls-scale[data-v-
|
|
47
|
+
.qd-office-pdf__controls-scale[data-v-bd896941] {
|
|
48
48
|
width: 39px;
|
|
49
49
|
margin: 0 var(--td-comp-margin-s);
|
|
50
50
|
}
|
|
51
|
-
.qd-office-pdf__controls-page[data-v-
|
|
51
|
+
.qd-office-pdf__controls-page[data-v-bd896941] {
|
|
52
52
|
display: flex;
|
|
53
53
|
align-items: stretch;
|
|
54
54
|
}
|
|
55
|
-
.qd-office-pdf__controls-page[data-v-
|
|
55
|
+
.qd-office-pdf__controls-page[data-v-bd896941] .t-input-number {
|
|
56
56
|
width: auto;
|
|
57
57
|
}
|
|
58
|
-
.qd-office-pdf__controls-page[data-v-
|
|
58
|
+
.qd-office-pdf__controls-page[data-v-bd896941] .t-input-number .t-input {
|
|
59
59
|
padding: 0;
|
|
60
60
|
}
|
|
61
|
-
.qd-office-pdf__controls-page[data-v-
|
|
61
|
+
.qd-office-pdf__controls-page[data-v-bd896941] .t-input-number .t-input__wrap {
|
|
62
62
|
min-width: 32px;
|
|
63
63
|
}
|
|
64
|
-
.qd-office-pdf__controls-page[data-v-
|
|
64
|
+
.qd-office-pdf__controls-page[data-v-bd896941] .t-input-number .t-input__inner {
|
|
65
65
|
min-width: 32px;
|
|
66
66
|
}
|
|
67
|
-
.qd-office-pdf__controls-page-input[data-v-
|
|
67
|
+
.qd-office-pdf__controls-page-input[data-v-bd896941] {
|
|
68
68
|
display: inline-flex;
|
|
69
69
|
align-items: center;
|
|
70
70
|
flex-shrink: 0;
|
|
@@ -74,9 +74,17 @@
|
|
|
74
74
|
background-color: var(--td-bg-color-secondarycontainer);
|
|
75
75
|
border-radius: var(--td-radius-default);
|
|
76
76
|
}
|
|
77
|
-
.qd-office-pdf__controls[data-v-
|
|
77
|
+
.qd-office-pdf__controls[data-v-bd896941]:hover {
|
|
78
78
|
background-color: var(--td-bg-color-container);
|
|
79
79
|
}
|
|
80
|
-
.qd-office-pdf__controls:hover .qd-office-pdf__controls-body[data-v-
|
|
80
|
+
.qd-office-pdf__controls:hover .qd-office-pdf__controls-body[data-v-bd896941] {
|
|
81
81
|
opacity: 1;
|
|
82
82
|
}
|
|
83
|
+
.controls-fade-leave-active[data-v-bd896941],
|
|
84
|
+
.controls-fade-enter-active[data-v-bd896941] {
|
|
85
|
+
transition: opacity 0.28s cubic-bezier(0.38, 0, 0.24, 1);
|
|
86
|
+
}
|
|
87
|
+
.controls-fade-enter-from[data-v-bd896941],
|
|
88
|
+
.controls-fade-leave-to[data-v-bd896941] {
|
|
89
|
+
opacity: 0;
|
|
90
|
+
}
|