@epam/pdf-highlighter-kit 0.0.5 → 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 +79 -1
- 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 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- 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
|
@@ -56,6 +56,8 @@ const highlights: InputHighlightData[] = [
|
|
|
56
56
|
borderColor: '#d4c400',
|
|
57
57
|
borderWidth: '1px',
|
|
58
58
|
},
|
|
59
|
+
label: 'Important Term',
|
|
60
|
+
labelStyle: { fontSize: 11 },
|
|
59
61
|
tooltipText: 'Important Term',
|
|
60
62
|
metadata: {
|
|
61
63
|
frequency: 5,
|
|
@@ -76,6 +78,10 @@ viewer.goToHighlight('term-001', 0);
|
|
|
76
78
|
|
|
77
79
|
Each highlight carries its own style. No categories are required.
|
|
78
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
|
+
|
|
79
85
|
```ts
|
|
80
86
|
export interface BBox {
|
|
81
87
|
x1: number;
|
|
@@ -94,10 +100,26 @@ export interface HighlightStyle {
|
|
|
94
100
|
pulseAnimation?: boolean;
|
|
95
101
|
}
|
|
96
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
|
+
|
|
97
116
|
export interface InputHighlightData {
|
|
98
117
|
id: string;
|
|
99
118
|
bboxes: BBox[];
|
|
100
119
|
style?: HighlightStyle;
|
|
120
|
+
label?: string;
|
|
121
|
+
beforeIcon?: string; // inline SVG string (trusted content only, e.g. Tabler icons)
|
|
122
|
+
labelStyle?: HighlightLabelStyle;
|
|
101
123
|
tooltipText?: string;
|
|
102
124
|
metadata?: Record<string, any>;
|
|
103
125
|
}
|
|
@@ -134,6 +156,10 @@ interface ViewerConfig {
|
|
|
134
156
|
highlightsConfig?: {
|
|
135
157
|
enableMultilineHover?: boolean;
|
|
136
158
|
};
|
|
159
|
+
|
|
160
|
+
// Coordinate origin for incoming bbox values
|
|
161
|
+
// Default: 'bottom-right'
|
|
162
|
+
bboxOrigin?: 'top-left' | 'top-right' | 'bottom-left' | 'bottom-right';
|
|
137
163
|
}
|
|
138
164
|
```
|
|
139
165
|
|
|
@@ -188,6 +214,14 @@ Zoom in or out of the PDF.
|
|
|
188
214
|
|
|
189
215
|
Set a specific zoom level (e.g., 1.0 for 100%, 1.5 for 150%).
|
|
190
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
|
+
|
|
191
225
|
#### `destroy(): void`
|
|
192
226
|
|
|
193
227
|
Clean up and destroy the viewer instance.
|
|
@@ -260,6 +294,27 @@ viewer.addEventListener('error', (e) => {
|
|
|
260
294
|
|
|
261
295
|
## Advanced Usage
|
|
262
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
|
+
|
|
263
318
|
### Custom Styling (per highlight)
|
|
264
319
|
|
|
265
320
|
```ts
|
|
@@ -273,12 +328,36 @@ const highlight: InputHighlightData = {
|
|
|
273
328
|
borderWidth: '1px',
|
|
274
329
|
hoverOpacity: 0.6,
|
|
275
330
|
},
|
|
331
|
+
label: 'My note',
|
|
332
|
+
labelStyle: { padding: '2px 6px', borderRadius: '4px' },
|
|
276
333
|
tooltipText: 'My note',
|
|
277
334
|
};
|
|
278
335
|
|
|
279
336
|
viewer.addHighlight(highlight);
|
|
280
337
|
```
|
|
281
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
|
+
|
|
282
361
|
### React Integration
|
|
283
362
|
|
|
284
363
|
```tsx
|
|
@@ -308,7 +387,6 @@ export function PDFViewer({
|
|
|
308
387
|
enableTextSelection: true,
|
|
309
388
|
enableVirtualScrolling: true,
|
|
310
389
|
});
|
|
311
|
-
|
|
312
390
|
await viewer.loadPDF(pdfUrl);
|
|
313
391
|
viewer.loadHighlights(highlights);
|
|
314
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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"}
|