Skip to content

Commit b8ef291

Browse files
authored
Merge pull request #1601 from privy-open-source/renovate/pdfjs-dist-5.x
fix(deps): update dependency pdfjs-dist to v5
2 parents beb388a + d3e7ac8 commit b8ef291

412 files changed

Lines changed: 151043 additions & 130484 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/codeql/codeql-config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
paths-ignore:
2+
- src/public/js

.github/workflows/ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ jobs:
147147
uses: github/codeql-action/init@v3
148148
with:
149149
languages: javascript
150+
config-file: ./.github/codeql/codeql-config.yml
150151

151152
- name: Autobuild
152153
uses: github/codeql-action/autobuild@v3

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@
123123
"lodash-es": "4.17.21",
124124
"marked": "^15.0.0",
125125
"nanodelay": "2.0.2",
126-
"pdfjs-dist": "^4.0.0",
126+
"pdfjs-dist": "^5.0.0",
127127
"postcss-hexrgba": "^2.1.0",
128128
"postcss-lighten-darken": "^0.9.0",
129129
"pspdfkit": "^2024.3.1",

packages/persona/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@
9696
"marked": "15.0.7",
9797
"nanodelay": "2.0.2",
9898
"pathe": "^2.0.0",
99-
"pdfjs-dist": "4.10.38",
99+
"pdfjs-dist": "5.0.375",
100100
"pspdfkit": "^2024.6.0",
101101
"scroll-into-view": "1.16.2",
102102
"tabbable": "6.2.0",

src/components/pdf-viewer/PdfNavigation.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ const pages = computed<SelectItem[]>(() => {
125125
<style lang="postcss">
126126
.pdf {
127127
&__navigation {
128-
@apply absolute bottom-4 inset-x-0 justify-center items-center flex w-96 mx-auto z-10;
128+
@apply absolute bottom-4 inset-x-0 justify-center items-center flex min-w-96 mx-auto z-10;
129129
130130
&-container {
131131
@apply flex bg-inverse text-subtlest rounded p-2 space-x-1 items-center;

src/components/pdf-viewer/PdfViewer.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,8 @@ interface PdfViewerSlotScope {
321321
zoomOut: () => void,
322322
next: () => void,
323323
prev: () => void,
324+
first: () => void,
325+
last: () => void,
324326
}
325327
326328
defineSlots<{
@@ -359,6 +361,10 @@ defineSlots<{
359361
@apply ring-info ring;
360362
@apply dark:ring-dark-info;
361363
}
364+
365+
.annotationWidget {
366+
@apply absolute;
367+
}
362368
}
363369
}
364370

src/components/pdf-viewer/utils/pdfjs.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,78 @@ export async function createLinkService (...params: ConstructorParameters<typeof
6666
export type * as PDFJSViewer from 'pdfjs-dist/web/pdf_viewer.mjs'
6767

6868
export type * as PDFJS from 'pdfjs-dist'
69+
70+
export function normalizeRect (rect: number[]) {
71+
const r = [...rect] // clone rect
72+
73+
if (rect[0] > rect[2]) {
74+
r[0] = rect[2]
75+
r[2] = rect[0]
76+
}
77+
78+
if (rect[1] > rect[3]) {
79+
r[1] = rect[3]
80+
r[3] = rect[1]
81+
}
82+
83+
return r
84+
}
85+
86+
export interface PDFJSAnnotation {
87+
id: string,
88+
annotationFlags: number,
89+
borderStyle?: {
90+
width: number,
91+
rawWidth: number,
92+
style: number,
93+
dashArray: number[],
94+
horizontalCornerRadius: number,
95+
verticalCornerRadius: number,
96+
},
97+
color?: Uint8ClampedArray,
98+
backgroundColor?: Uint8ClampedArray,
99+
borderColor?: Uint8ClampedArray,
100+
rotation: 0 | 90 | 180 | 270,
101+
contentsObj: {
102+
str: string,
103+
dir: 'ltr' | 'rtl',
104+
},
105+
hasAppearance: boolean,
106+
modificationDate?: Date,
107+
rect: [
108+
number,
109+
number,
110+
number,
111+
number,
112+
],
113+
subtype: string,
114+
hasOwnCanvas: boolean,
115+
noRotate: boolean,
116+
noHTML: boolean,
117+
isEditable: boolean,
118+
structParent: number,
119+
annotationType: number,
120+
fieldName: string,
121+
actions?: string,
122+
fieldValue?: string,
123+
defaultFieldValue?: string,
124+
alternativeText: string,
125+
defaultAppearanceData?: {
126+
fontSize: number,
127+
fontName: string,
128+
fontColor: Uint8ClampedArray,
129+
},
130+
fieldType: string,
131+
fieldFlags: number,
132+
password: boolean,
133+
readOnly: boolean,
134+
required: boolean,
135+
hidden: boolean,
136+
}
137+
138+
export interface PDFJSRawDimension {
139+
pageWidth: number,
140+
pageHeight: number,
141+
pageX: number,
142+
pageY: number,
143+
}

src/components/pdf-viewer/utils/use-viewer.ts

Lines changed: 51 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,23 @@ import {
66
shallowRef,
77
watch,
88
} from 'vue-demi'
9-
import type {
10-
PDFJS,
11-
PDFJSViewer,
12-
} from './pdfjs'
13-
import useLoading from '../../overlay/utils/use-loading'
14-
import { useClamp, useMax } from '@vueuse/math'
15-
import { createEventHook } from '@vueuse/core'
169
import {
1710
createEventBus,
1811
createLinkService,
1912
createViewer,
2013
getCMAPUri,
2114
getDocument,
15+
normalizeRect,
16+
} from './pdfjs'
17+
import type {
18+
PDFJS,
19+
PDFJSAnnotation,
20+
PDFJSRawDimension,
21+
PDFJSViewer,
2222
} from './pdfjs'
23+
import useLoading from '../../overlay/utils/use-loading'
24+
import { useClamp, useMax } from '@vueuse/math'
25+
import { createEventHook } from '@vueuse/core'
2326

2427
export interface OpenDocConfig {
2528
disableStream?: boolean,
@@ -123,6 +126,47 @@ export function useViewer (container: Ref<HTMLDivElement>, viewer: Ref<HTMLDivEl
123126
scale.value = event.scale
124127
})
125128

129+
bus.on('annotationlayerrendered', async (event: { source: PDFJSViewer.PDFPageView, error?: Error }) => {
130+
if (!event.error) {
131+
const source = event.source
132+
const page = source.pdfPage as PDFJS.PDFPageProxy
133+
const annotations = await page.getAnnotations() as PDFJSAnnotation[]
134+
135+
for (const data of annotations) {
136+
if (data.noHTML && !source.annotationLayer.annotationStorage.has(data.id)) {
137+
const {
138+
pageWidth,
139+
pageHeight,
140+
pageX,
141+
pageY,
142+
} = source.viewport.rawDims as PDFJSRawDimension
143+
144+
const width = (data.rotation % 180 === 0) ? data.rect[2] - data.rect[0] : data.rect[3] - data.rect[1]
145+
const height = (data.rotation % 180 === 0) ? data.rect[3] - data.rect[1] : data.rect[2] - data.rect[0]
146+
147+
const rect = normalizeRect([
148+
data.rect[0],
149+
page.view[3] - data.rect[1] + page.view[1],
150+
data.rect[2],
151+
page.view[3] - data.rect[3] + page.view[1],
152+
])
153+
154+
const div = document.createElement('div')
155+
156+
div.classList.add('annotationWidget', data.subtype, data.fieldType)
157+
158+
div.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`
159+
div.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`
160+
div.style.width = `${(100 * width) / pageWidth}%`
161+
div.style.height = `${(100 * height) / pageHeight}%`
162+
163+
source.annotationLayer.div.append(div)
164+
source.annotationLayer.annotationStorage.setValue(data.id, { div })
165+
}
166+
}
167+
}
168+
})
169+
126170
pdfEventBus.value = bus
127171
pdfLinkService.value = await createLinkService({ eventBus: pdfEventBus.value })
128172
pdfViewer.value = await createViewer({

src/public/js/pdfjs-dist@4.5.136/build/pdf.min.mjs

Lines changed: 0 additions & 21 deletions
This file was deleted.

src/public/js/pdfjs-dist@4.5.136/build/pdf.mjs.map

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)