@epam/pdf-highlighter-kit 0.0.4 → 0.0.6
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.md +88 -3
- package/dist/PDFHighlightViewer.d.ts +12 -3
- package/dist/PDFHighlightViewer.d.ts.map +1 -1
- package/dist/PDFHighlightViewer.js +210 -62
- package/dist/PDFHighlightViewer.js.map +1 -1
- package/dist/api.d.ts +4 -2
- package/dist/api.d.ts.map +1 -1
- package/dist/core/pdf-engine.d.ts +7 -1
- package/dist/core/pdf-engine.d.ts.map +1 -1
- package/dist/core/pdf-engine.js +61 -0
- package/dist/core/pdf-engine.js.map +1 -1
- package/dist/core/unified-layer-builder.d.ts +1 -0
- package/dist/core/unified-layer-builder.d.ts.map +1 -1
- package/dist/core/unified-layer-builder.js +54 -4
- package/dist/core/unified-layer-builder.js.map +1 -1
- package/dist/index.d.ts +2 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -42
- package/dist/index.js.map +1 -1
- package/dist/pdf-highlight-viewer.css +39 -0
- package/dist/types.d.ts +37 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +5 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/label-style.d.ts +20 -0
- package/dist/utils/label-style.d.ts.map +1 -0
- package/dist/utils/label-style.js +52 -0
- package/dist/utils/label-style.js.map +1 -0
- package/dist/utils/sanitize-icon-html.d.ts +12 -0
- package/dist/utils/sanitize-icon-html.d.ts.map +1 -0
- package/dist/utils/sanitize-icon-html.js +139 -0
- package/dist/utils/sanitize-icon-html.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
<div align="center">
|
|
2
|
+
<h1>PDF Highlight Viewer</h1>
|
|
3
|
+
<p>High-performance PDF viewer with intelligent highlighting and text selection capabilities for web applications.</p>
|
|
2
4
|
|
|
3
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@epam/pdf-highlighter-kit) [](https://opensource.org/licenses/Apache-2.0) [](https://github.com/epam/pdf-highlighter-kit/pulls)
|
|
6
|
+
|
|
7
|
+
<p>An open-source project by <strong>BadgerDoc</strong> <img src="./logo.svg" alt="BadgerDoc" width="22" height="21" style="vertical-align: middle; margin-bottom: 3px;"></p>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
10
|
+
---
|
|
4
11
|
|
|
5
12
|
## Installation
|
|
6
13
|
|
|
@@ -49,6 +56,8 @@ const highlights: InputHighlightData[] = [
|
|
|
49
56
|
borderColor: '#d4c400',
|
|
50
57
|
borderWidth: '1px',
|
|
51
58
|
},
|
|
59
|
+
label: 'Important Term',
|
|
60
|
+
labelStyle: { fontSize: 11 },
|
|
52
61
|
tooltipText: 'Important Term',
|
|
53
62
|
metadata: {
|
|
54
63
|
frequency: 5,
|
|
@@ -69,6 +78,10 @@ viewer.goToHighlight('term-001', 0);
|
|
|
69
78
|
|
|
70
79
|
Each highlight carries its own style. No categories are required.
|
|
71
80
|
|
|
81
|
+
**Labels:** You can add an optional `label` that is displayed to the left of the highlight, flush against it. By default the label uses the highlight’s color (from `style.borderColor` or `style.backgroundColor`), `border: 1px solid`, and `padding: 2px 4px`. Override any of these with `labelStyle` (e.g. `fontSize`, `color`, `padding`, `border`). To hide the label border, set `labelStyle: { border: 'none' }` (the default border is always applied unless overridden).
|
|
82
|
+
|
|
83
|
+
**Icon before label:** Optionally set `beforeIcon` to an inline SVG string (e.g. from [Tabler Icons](https://tabler.io/icons)) to render an icon inside the label frame, to the left of the text. The icon inherits the label color via `currentColor`. Use `labelStyle.iconSize` to set the icon size (e.g. `14` or `'14px'`) and `labelStyle.iconColor` to set the icon color (e.g. `'#ff6b6b'`); if `iconColor` is not set, the icon uses the label text color. Only pass trusted SVG content (e.g. from your bundle or `@tabler/icons`); in React with Vite you can use `import iconSvg from '@tabler/icons/icons/outline/alert-circle.svg?raw'` and pass `iconSvg` as `beforeIcon`.
|
|
84
|
+
|
|
72
85
|
```ts
|
|
73
86
|
export interface BBox {
|
|
74
87
|
x1: number;
|
|
@@ -87,10 +100,26 @@ export interface HighlightStyle {
|
|
|
87
100
|
pulseAnimation?: boolean;
|
|
88
101
|
}
|
|
89
102
|
|
|
103
|
+
export interface HighlightLabelStyle {
|
|
104
|
+
fontSize?: string | number;
|
|
105
|
+
color?: string;
|
|
106
|
+
backgroundColor?: string;
|
|
107
|
+
padding?: string;
|
|
108
|
+
borderRadius?: string;
|
|
109
|
+
fontFamily?: string;
|
|
110
|
+
fontWeight?: string | number;
|
|
111
|
+
border?: string;
|
|
112
|
+
whiteSpace?: string;
|
|
113
|
+
iconSize?: string | number; // size for beforeIcon (e.g. 14 or '14px')
|
|
114
|
+
}
|
|
115
|
+
|
|
90
116
|
export interface InputHighlightData {
|
|
91
117
|
id: string;
|
|
92
118
|
bboxes: BBox[];
|
|
93
119
|
style?: HighlightStyle;
|
|
120
|
+
label?: string;
|
|
121
|
+
beforeIcon?: string; // inline SVG string (trusted content only, e.g. Tabler icons)
|
|
122
|
+
labelStyle?: HighlightLabelStyle;
|
|
94
123
|
tooltipText?: string;
|
|
95
124
|
metadata?: Record<string, any>;
|
|
96
125
|
}
|
|
@@ -127,6 +156,10 @@ interface ViewerConfig {
|
|
|
127
156
|
highlightsConfig?: {
|
|
128
157
|
enableMultilineHover?: boolean;
|
|
129
158
|
};
|
|
159
|
+
|
|
160
|
+
// Coordinate origin for incoming bbox values
|
|
161
|
+
// Default: 'bottom-right'
|
|
162
|
+
bboxOrigin?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
130
163
|
}
|
|
131
164
|
```
|
|
132
165
|
|
|
@@ -181,6 +214,14 @@ Zoom in or out of the PDF.
|
|
|
181
214
|
|
|
182
215
|
Set a specific zoom level (e.g., 1.0 for 100%, 1.5 for 150%).
|
|
183
216
|
|
|
217
|
+
#### `getThumbnails(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, HTMLCanvasElement>>`
|
|
218
|
+
|
|
219
|
+
Render page thumbnails (miniatures) for the given page numbers. Returns a `Map` of page number → canvas. Use this when you need canvas elements (e.g. for drawing or custom display). Options: `maxWidth` (target width in px), `scale` (viewport scale).
|
|
220
|
+
|
|
221
|
+
#### `getThumbnailsDataUrl(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, string>>`
|
|
222
|
+
|
|
223
|
+
Same as `getThumbnails` but returns data URLs (e.g. for `<img src="...">`). Options include `maxWidth`, `scale`, `format` (`'image/jpeg' | 'image/webp' | 'image/png'`), and `quality` (0–1 for jpeg/webp). Thumbnails are cached; repeated calls for the same page return cached results.
|
|
224
|
+
|
|
184
225
|
#### `destroy(): void`
|
|
185
226
|
|
|
186
227
|
Clean up and destroy the viewer instance.
|
|
@@ -253,6 +294,27 @@ viewer.addEventListener('error', (e) => {
|
|
|
253
294
|
|
|
254
295
|
## Advanced Usage
|
|
255
296
|
|
|
297
|
+
### Page thumbnails
|
|
298
|
+
|
|
299
|
+
```ts
|
|
300
|
+
// ThumbnailOptions: maxWidth?, scale?, format?, quality?
|
|
301
|
+
const pageNumbers = Array.from({ length: viewer.getTotalPages() }, (_, i) => i + 1);
|
|
302
|
+
|
|
303
|
+
// Option 1: get data URLs for <img src="...">
|
|
304
|
+
const dataUrls = await viewer.getThumbnailsDataUrl(pageNumbers, {
|
|
305
|
+
maxWidth: 120,
|
|
306
|
+
format: 'image/webp',
|
|
307
|
+
quality: 0.85,
|
|
308
|
+
});
|
|
309
|
+
// dataUrls is Map<number, string> — use dataUrls.get(pageNum) in img src
|
|
310
|
+
|
|
311
|
+
// Option 2: get canvases for custom rendering
|
|
312
|
+
const canvases = await viewer.getThumbnails(pageNumbers, { maxWidth: 120 });
|
|
313
|
+
// canvases is Map<number, HTMLCanvasElement>
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
For a single page, pass an array with one number: `getThumbnailsDataUrl([5], options)`. Thumbnails are cached inside the viewer; reopening the panel does not re-render unless the cache was cleared (e.g. after loading a new PDF).
|
|
317
|
+
|
|
256
318
|
### Custom Styling (per highlight)
|
|
257
319
|
|
|
258
320
|
```ts
|
|
@@ -266,12 +328,36 @@ const highlight: InputHighlightData = {
|
|
|
266
328
|
borderWidth: '1px',
|
|
267
329
|
hoverOpacity: 0.6,
|
|
268
330
|
},
|
|
331
|
+
label: 'My note',
|
|
332
|
+
labelStyle: { padding: '2px 6px', borderRadius: '4px' },
|
|
269
333
|
tooltipText: 'My note',
|
|
270
334
|
};
|
|
271
335
|
|
|
272
336
|
viewer.addHighlight(highlight);
|
|
273
337
|
```
|
|
274
338
|
|
|
339
|
+
### Label with icon (e.g. Tabler Icons)
|
|
340
|
+
|
|
341
|
+
Pass an inline SVG string as `beforeIcon` to show an icon inside the label frame. Use trusted content only. With Vite you can import SVG as raw string:
|
|
342
|
+
|
|
343
|
+
```ts
|
|
344
|
+
// Inline SVG string (e.g. from Tabler: import icon from '@tabler/icons/icons/outline/alert-circle.svg?raw')
|
|
345
|
+
const alertIconSvg =
|
|
346
|
+
'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 8v4"/><path d="M12 16h.01"/><circle cx="12" cy="12" r="10"/></svg>';
|
|
347
|
+
|
|
348
|
+
const highlight: InputHighlightData = {
|
|
349
|
+
id: 'alert-001',
|
|
350
|
+
bboxes: [{ page: 1, x1: 100, y1: 200, x2: 300, y2: 220 }],
|
|
351
|
+
style: { backgroundColor: '#ffeb3b', opacity: 0.3, borderColor: '#d4c400' },
|
|
352
|
+
label: 'Important',
|
|
353
|
+
beforeIcon: alertIconSvg,
|
|
354
|
+
labelStyle: { fontSize: 11, iconSize: 14 },
|
|
355
|
+
tooltipText: 'Important',
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
viewer.addHighlight(highlight);
|
|
359
|
+
```
|
|
360
|
+
|
|
275
361
|
### React Integration
|
|
276
362
|
|
|
277
363
|
```tsx
|
|
@@ -301,7 +387,6 @@ export function PDFViewer({
|
|
|
301
387
|
enableTextSelection: true,
|
|
302
388
|
enableVirtualScrolling: true,
|
|
303
389
|
});
|
|
304
|
-
|
|
305
390
|
await viewer.loadPDF(pdfUrl);
|
|
306
391
|
viewer.loadHighlights(highlights);
|
|
307
392
|
})();
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PDFHighlightViewer as IPDFHighlightViewer } from './api';
|
|
2
|
-
import { ViewerOptions, TextRange, SelectionWithMetadata, PerformanceMetrics, HighlightAnalytics, AccessibilityFeatures, InteractionMode, InputHighlightData, HighlightStyle } from './types';
|
|
2
|
+
import { ViewerOptions, TextRange, SelectionWithMetadata, PerformanceMetrics, HighlightAnalytics, AccessibilityFeatures, InteractionMode, InputHighlightData, HighlightStyle, ZoomValue, ThumbnailOptions } from './types';
|
|
3
3
|
export declare class PDFHighlightViewer implements IPDFHighlightViewer {
|
|
4
4
|
private pdfEngine;
|
|
5
5
|
private viewportManager;
|
|
@@ -74,12 +74,18 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
|
|
|
74
74
|
preloadPages(pageNumbers: number[]): Promise<void>;
|
|
75
75
|
setPage(pageNumber: number): void;
|
|
76
76
|
getZoom(): number;
|
|
77
|
-
setZoom(
|
|
77
|
+
setZoom(value: ZoomValue): void;
|
|
78
|
+
private applyZoom;
|
|
79
|
+
private setAutoZoom;
|
|
80
|
+
private setPageFitZoom;
|
|
81
|
+
private computeFitScales;
|
|
78
82
|
zoomIn(): void;
|
|
79
83
|
zoomOut(): void;
|
|
80
84
|
resetZoom(): void;
|
|
81
85
|
getCurrentPage(): number;
|
|
82
86
|
getTotalPages(): number;
|
|
87
|
+
getThumbnails(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, HTMLCanvasElement>>;
|
|
88
|
+
getThumbnailsDataUrl(pageNumbers: number[], options?: ThumbnailOptions): Promise<Map<number, string>>;
|
|
83
89
|
/**
|
|
84
90
|
* Enable text selection functionality
|
|
85
91
|
*/
|
|
@@ -167,6 +173,7 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
|
|
|
167
173
|
private addHighlightsToPage;
|
|
168
174
|
private getHighlightById;
|
|
169
175
|
private getHighlightStyle;
|
|
176
|
+
private getHighlightElements;
|
|
170
177
|
/**
|
|
171
178
|
* Update highlights colors for specified page
|
|
172
179
|
* */
|
|
@@ -175,6 +182,8 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
|
|
|
175
182
|
* Build spatial index for a specific page
|
|
176
183
|
*/
|
|
177
184
|
private buildSpatialIndexForPage;
|
|
185
|
+
private toPageCoordinateDimensions;
|
|
186
|
+
private normalizeBBoxForPage;
|
|
178
187
|
/**
|
|
179
188
|
* Build spatial indices for all pages
|
|
180
189
|
*/
|
|
@@ -207,7 +216,7 @@ export declare class PDFHighlightViewer implements IPDFHighlightViewer {
|
|
|
207
216
|
/**
|
|
208
217
|
* Clear selected term highlighting
|
|
209
218
|
*/
|
|
210
|
-
clearSelectedTermHighlighting(): void;
|
|
219
|
+
clearSelectedTermHighlighting(clearStoredSelection?: boolean): void;
|
|
211
220
|
/**
|
|
212
221
|
* Add text layer for text selection functionality
|
|
213
222
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFHighlightViewer.d.ts","sourceRoot":"","sources":["../src/PDFHighlightViewer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,IAAI,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAClE,OAAO,EACL,aAAa,
|
|
1
|
+
{"version":3,"file":"PDFHighlightViewer.d.ts","sourceRoot":"","sources":["../src/PDFHighlightViewer.ts"],"names":[],"mappings":"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"}
|