@lexmata/micropdf 0.4.0
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/LICENSE +191 -0
- package/README.md +985 -0
- package/binding.gyp +73 -0
- package/dist/annot.d.ts +458 -0
- package/dist/annot.d.ts.map +1 -0
- package/dist/annot.js +697 -0
- package/dist/annot.js.map +1 -0
- package/dist/archive.d.ts +128 -0
- package/dist/archive.d.ts.map +1 -0
- package/dist/archive.js +268 -0
- package/dist/archive.js.map +1 -0
- package/dist/buffer.d.ts +572 -0
- package/dist/buffer.d.ts.map +1 -0
- package/dist/buffer.js +971 -0
- package/dist/buffer.js.map +1 -0
- package/dist/colorspace.d.ts +287 -0
- package/dist/colorspace.d.ts.map +1 -0
- package/dist/colorspace.js +542 -0
- package/dist/colorspace.js.map +1 -0
- package/dist/context.d.ts +184 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +320 -0
- package/dist/context.js.map +1 -0
- package/dist/cookie.d.ts +164 -0
- package/dist/cookie.d.ts.map +1 -0
- package/dist/cookie.js +306 -0
- package/dist/cookie.js.map +1 -0
- package/dist/device.d.ts +169 -0
- package/dist/device.d.ts.map +1 -0
- package/dist/device.js +350 -0
- package/dist/device.js.map +1 -0
- package/dist/display-list.d.ts +202 -0
- package/dist/display-list.d.ts.map +1 -0
- package/dist/display-list.js +410 -0
- package/dist/display-list.js.map +1 -0
- package/dist/document.d.ts +637 -0
- package/dist/document.d.ts.map +1 -0
- package/dist/document.js +902 -0
- package/dist/document.js.map +1 -0
- package/dist/easy.d.ts +423 -0
- package/dist/easy.d.ts.map +1 -0
- package/dist/easy.js +644 -0
- package/dist/easy.js.map +1 -0
- package/dist/enhanced.d.ts +226 -0
- package/dist/enhanced.d.ts.map +1 -0
- package/dist/enhanced.js +368 -0
- package/dist/enhanced.js.map +1 -0
- package/dist/filter.d.ts +51 -0
- package/dist/filter.d.ts.map +1 -0
- package/dist/filter.js +381 -0
- package/dist/filter.js.map +1 -0
- package/dist/font.d.ts +222 -0
- package/dist/font.d.ts.map +1 -0
- package/dist/font.js +381 -0
- package/dist/font.js.map +1 -0
- package/dist/form.d.ts +214 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +497 -0
- package/dist/form.js.map +1 -0
- package/dist/geometry.d.ts +469 -0
- package/dist/geometry.d.ts.map +1 -0
- package/dist/geometry.js +780 -0
- package/dist/geometry.js.map +1 -0
- package/dist/image.d.ts +172 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +348 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +171 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +339 -0
- package/dist/index.js.map +1 -0
- package/dist/link.d.ts +168 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +343 -0
- package/dist/link.js.map +1 -0
- package/dist/micropdf.d.ts +40 -0
- package/dist/micropdf.d.ts.map +1 -0
- package/dist/micropdf.js +45 -0
- package/dist/micropdf.js.map +1 -0
- package/dist/nanopdf.d.ts +40 -0
- package/dist/nanopdf.d.ts.map +1 -0
- package/dist/nanopdf.js +45 -0
- package/dist/nanopdf.js.map +1 -0
- package/dist/native.d.ts +242 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +509 -0
- package/dist/native.js.map +1 -0
- package/dist/output.d.ts +166 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +365 -0
- package/dist/output.js.map +1 -0
- package/dist/path.d.ts +420 -0
- package/dist/path.d.ts.map +1 -0
- package/dist/path.js +687 -0
- package/dist/path.js.map +1 -0
- package/dist/pdf/object.d.ts +489 -0
- package/dist/pdf/object.d.ts.map +1 -0
- package/dist/pdf/object.js +1045 -0
- package/dist/pdf/object.js.map +1 -0
- package/dist/pixmap.d.ts +315 -0
- package/dist/pixmap.d.ts.map +1 -0
- package/dist/pixmap.js +590 -0
- package/dist/pixmap.js.map +1 -0
- package/dist/profiler.d.ts +159 -0
- package/dist/profiler.d.ts.map +1 -0
- package/dist/profiler.js +380 -0
- package/dist/profiler.js.map +1 -0
- package/dist/render-options.d.ts +227 -0
- package/dist/render-options.d.ts.map +1 -0
- package/dist/render-options.js +130 -0
- package/dist/render-options.js.map +1 -0
- package/dist/resource-tracking.d.ts +332 -0
- package/dist/resource-tracking.d.ts.map +1 -0
- package/dist/resource-tracking.js +653 -0
- package/dist/resource-tracking.js.map +1 -0
- package/dist/simple.d.ts +276 -0
- package/dist/simple.d.ts.map +1 -0
- package/dist/simple.js +343 -0
- package/dist/simple.js.map +1 -0
- package/dist/stext.d.ts +290 -0
- package/dist/stext.d.ts.map +1 -0
- package/dist/stext.js +312 -0
- package/dist/stext.js.map +1 -0
- package/dist/stream.d.ts +174 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +476 -0
- package/dist/stream.js.map +1 -0
- package/dist/text.d.ts +337 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +454 -0
- package/dist/text.js.map +1 -0
- package/dist/typed-arrays.d.ts +127 -0
- package/dist/typed-arrays.d.ts.map +1 -0
- package/dist/typed-arrays.js +410 -0
- package/dist/typed-arrays.js.map +1 -0
- package/dist/types.d.ts +358 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +216 -0
- package/dist/types.js.map +1 -0
- package/native/annot.cc +557 -0
- package/native/buffer.cc +204 -0
- package/native/colorspace.cc +166 -0
- package/native/context.cc +84 -0
- package/native/cookie.cc +179 -0
- package/native/device.cc +179 -0
- package/native/display_list.cc +179 -0
- package/native/document.cc +268 -0
- package/native/enhanced.cc +70 -0
- package/native/font.cc +282 -0
- package/native/form.cc +523 -0
- package/native/geometry.cc +255 -0
- package/native/image.cc +216 -0
- package/native/include/micropdf/enhanced.h +38 -0
- package/native/include/micropdf/types.h +36 -0
- package/native/include/micropdf.h +106 -0
- package/native/include/mupdf-ffi.h +39 -0
- package/native/include/mupdf.h +11 -0
- package/native/include/mupdf_minimal.h +381 -0
- package/native/lib/linux-x64/libmicropdf.a +0 -0
- package/native/link.cc +234 -0
- package/native/micropdf.cc +71 -0
- package/native/output.cc +229 -0
- package/native/page.cc +572 -0
- package/native/path.cc +259 -0
- package/native/pixmap.cc +240 -0
- package/native/stext.cc +610 -0
- package/native/stream.cc +239 -0
- package/package.json +120 -0
- package/scripts/build-from-rust.js +97 -0
- package/scripts/install.js +184 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced - MicroPDF high-level convenience API
|
|
3
|
+
*
|
|
4
|
+
* This module provides MicroPDF-specific high-level functions for common PDF operations.
|
|
5
|
+
* These are convenience wrappers that simplify complex workflows and provide a more
|
|
6
|
+
* user-friendly API for common tasks.
|
|
7
|
+
*
|
|
8
|
+
* The Enhanced API includes operations like:
|
|
9
|
+
* - Adding blank pages
|
|
10
|
+
* - Adding watermarks
|
|
11
|
+
* - Drawing shapes (rectangles, circles, lines)
|
|
12
|
+
* - Merging and splitting PDFs
|
|
13
|
+
* - Optimizing and linearizing PDFs
|
|
14
|
+
*
|
|
15
|
+
* @module enhanced
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { Enhanced, Document } from 'micropdf';
|
|
19
|
+
*
|
|
20
|
+
* const enhanced = new Enhanced();
|
|
21
|
+
* const doc = Document.open('document.pdf');
|
|
22
|
+
*
|
|
23
|
+
* // Add a blank page
|
|
24
|
+
* enhanced.addBlankPage(doc, 612, 792); // US Letter size
|
|
25
|
+
*
|
|
26
|
+
* // Add a watermark
|
|
27
|
+
* enhanced.addWatermark(
|
|
28
|
+
* doc,
|
|
29
|
+
* 'CONFIDENTIAL',
|
|
30
|
+
* { x: 300, y: 400 },
|
|
31
|
+
* 12,
|
|
32
|
+
* 0.3 // 30% opacity
|
|
33
|
+
* );
|
|
34
|
+
*
|
|
35
|
+
* // Draw shapes
|
|
36
|
+
* enhanced.drawRectangle(
|
|
37
|
+
* doc,
|
|
38
|
+
* 0, // page index
|
|
39
|
+
* { x0: 100, y0: 100, x1: 200, y1: 200 },
|
|
40
|
+
* [255, 0, 0], // red
|
|
41
|
+
* 0.5, // opacity
|
|
42
|
+
* 2, // line width
|
|
43
|
+
* true // fill
|
|
44
|
+
* );
|
|
45
|
+
*
|
|
46
|
+
* // Save
|
|
47
|
+
* doc.save('output.pdf');
|
|
48
|
+
* doc.close();
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Merge multiple PDFs
|
|
54
|
+
* const enhanced = new Enhanced();
|
|
55
|
+
* enhanced.mergePdfs(
|
|
56
|
+
* ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'],
|
|
57
|
+
* 'merged.pdf'
|
|
58
|
+
* );
|
|
59
|
+
*
|
|
60
|
+
* // Split a PDF
|
|
61
|
+
* enhanced.splitPdf(
|
|
62
|
+
* 'document.pdf',
|
|
63
|
+
* 'output-dir',
|
|
64
|
+
* { startPage: 0, endPage: 10 }
|
|
65
|
+
* );
|
|
66
|
+
*
|
|
67
|
+
* // Optimize a PDF
|
|
68
|
+
* enhanced.optimizePdf('large.pdf', 'optimized.pdf');
|
|
69
|
+
*
|
|
70
|
+
* // Linearize for web viewing
|
|
71
|
+
* enhanced.linearizePdf('document.pdf', 'web-optimized.pdf');
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
import { Context } from './context.js';
|
|
75
|
+
import { Document } from './document.js';
|
|
76
|
+
import { type ColorLike } from './geometry.js';
|
|
77
|
+
/**
|
|
78
|
+
* Enhanced MicroPDF API for high-level PDF operations.
|
|
79
|
+
*
|
|
80
|
+
* Provides convenient methods for common PDF manipulation tasks that would
|
|
81
|
+
* otherwise require multiple lower-level API calls.
|
|
82
|
+
*
|
|
83
|
+
* @class Enhanced
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const enhanced = new Enhanced();
|
|
87
|
+
* const doc = Document.open('document.pdf');
|
|
88
|
+
*
|
|
89
|
+
* // Add a watermark to all pages
|
|
90
|
+
* for (let i = 0; i < doc.pageCount; i++) {
|
|
91
|
+
* enhanced.addWatermark(
|
|
92
|
+
* doc,
|
|
93
|
+
* 'DRAFT',
|
|
94
|
+
* { x: 300, y: 400 },
|
|
95
|
+
* 48,
|
|
96
|
+
* 0.2
|
|
97
|
+
* );
|
|
98
|
+
* }
|
|
99
|
+
*
|
|
100
|
+
* doc.save('watermarked.pdf');
|
|
101
|
+
* doc.close();
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export declare class Enhanced {
|
|
105
|
+
private _ctx;
|
|
106
|
+
constructor(ctx?: Context);
|
|
107
|
+
/**
|
|
108
|
+
* Get the context
|
|
109
|
+
*/
|
|
110
|
+
get context(): Context;
|
|
111
|
+
/**
|
|
112
|
+
* Add a blank page to a document using FFI
|
|
113
|
+
* @returns Page number of newly added page
|
|
114
|
+
* @throws Error when native bindings are not available
|
|
115
|
+
*/
|
|
116
|
+
addBlankPage(_doc: Document, width: number, height: number): number;
|
|
117
|
+
/**
|
|
118
|
+
* Draw a line on a page using FFI
|
|
119
|
+
* @throws Error when native bindings are not available
|
|
120
|
+
*/
|
|
121
|
+
drawLine(page: unknown, x0: number, y0: number, x1: number, y1: number, color: ColorLike, alpha?: number, lineWidth?: number): void;
|
|
122
|
+
/**
|
|
123
|
+
* Draw a rectangle on a page using FFI
|
|
124
|
+
* @throws Error when native bindings are not available
|
|
125
|
+
*/
|
|
126
|
+
drawRectangle(page: unknown, x: number, y: number, width: number, height: number, color: ColorLike, alpha?: number, fill?: boolean): void;
|
|
127
|
+
/**
|
|
128
|
+
* Draw a circle on a page using FFI
|
|
129
|
+
* @throws Error when native bindings are not available
|
|
130
|
+
*/
|
|
131
|
+
drawCircle(page: unknown, x: number, y: number, radius: number, color: ColorLike, alpha?: number, fill?: boolean): void;
|
|
132
|
+
/**
|
|
133
|
+
* Add watermark to PDF using FFI
|
|
134
|
+
* @throws Error when native bindings are not available
|
|
135
|
+
*/
|
|
136
|
+
addWatermark(inputPath: string, _outputPath: string, text: string, _x?: number, _y?: number, fontSize?: number, opacity?: number): Promise<void>;
|
|
137
|
+
/**
|
|
138
|
+
* Merge multiple PDFs into one using FFI
|
|
139
|
+
* @throws Error when native bindings are not available
|
|
140
|
+
*/
|
|
141
|
+
mergePDFs(inputPaths: string[], outputPath: string): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Split PDF into separate files using FFI
|
|
144
|
+
* @returns Array of output file paths
|
|
145
|
+
* @throws Error when native bindings are not available
|
|
146
|
+
*/
|
|
147
|
+
splitPDF(inputPath: string, outputDir: string): Promise<string[]>;
|
|
148
|
+
/**
|
|
149
|
+
* Optimize PDF (compress, remove unused objects) using FFI
|
|
150
|
+
* @throws Error when native bindings are not available
|
|
151
|
+
*/
|
|
152
|
+
optimizePDF(path: string): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* Linearize PDF for fast web viewing using FFI
|
|
155
|
+
* @throws Error when native bindings are not available
|
|
156
|
+
*/
|
|
157
|
+
linearizePDF(inputPath: string, outputPath: string): Promise<void>;
|
|
158
|
+
/**
|
|
159
|
+
* Write document to PDF file using FFI
|
|
160
|
+
* @throws Error when native bindings are not available
|
|
161
|
+
*/
|
|
162
|
+
writePDF(doc: Document, path: string): Promise<void>;
|
|
163
|
+
/**
|
|
164
|
+
* Merge multiple PDF files into a single output file
|
|
165
|
+
*
|
|
166
|
+
* @param inputPaths Array of PDF file paths to merge (in order)
|
|
167
|
+
* @param outputPath Path where the merged PDF will be saved
|
|
168
|
+
* @returns Promise that resolves to the number of pages in the merged PDF
|
|
169
|
+
* @throws Error if any input file is invalid, not found, or merge fails
|
|
170
|
+
* @throws Error when native bindings are not available
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* import { Enhanced } from 'micropdf';
|
|
175
|
+
*
|
|
176
|
+
* const enhanced = new Enhanced();
|
|
177
|
+
* const pageCount = await enhanced.mergePDF(
|
|
178
|
+
* ['document1.pdf', 'document2.pdf', 'document3.pdf'],
|
|
179
|
+
* 'merged.pdf'
|
|
180
|
+
* );
|
|
181
|
+
* console.log(`Merged ${pageCount} pages`);
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @example Large document handling
|
|
185
|
+
* ```typescript
|
|
186
|
+
* // Works with large documents (5000+ pages)
|
|
187
|
+
* const pageCount = await enhanced.mergePDF(
|
|
188
|
+
* ['large_doc1.pdf', 'large_doc2.pdf'],
|
|
189
|
+
* 'combined.pdf'
|
|
190
|
+
* );
|
|
191
|
+
* ```
|
|
192
|
+
*/
|
|
193
|
+
mergePDF(inputPaths: string[], outputPath: string): Promise<number>;
|
|
194
|
+
/**
|
|
195
|
+
* Create a new blank PDF document
|
|
196
|
+
* @param width Page width in points (default A4 width: 595)
|
|
197
|
+
* @param height Page height in points (default A4 height: 842)
|
|
198
|
+
* @throws Error This is a static method that requires instance context
|
|
199
|
+
*/
|
|
200
|
+
static createBlankDocument(_width?: number, _height?: number): Document;
|
|
201
|
+
/**
|
|
202
|
+
* Quick create PDF with text
|
|
203
|
+
* @throws Error This is a static method that requires instance context
|
|
204
|
+
*/
|
|
205
|
+
static createTextPDF(_text: string, _outputPath: string, _options?: {
|
|
206
|
+
fontSize?: number;
|
|
207
|
+
fontName?: string;
|
|
208
|
+
pageWidth?: number;
|
|
209
|
+
pageHeight?: number;
|
|
210
|
+
}): Promise<void>;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get global enhanced API
|
|
214
|
+
*/
|
|
215
|
+
export declare function getEnhanced(): Enhanced;
|
|
216
|
+
/**
|
|
217
|
+
* Convenience functions (use global instance)
|
|
218
|
+
*/
|
|
219
|
+
export declare function addWatermark(inputPath: string, outputPath: string, text: string, x?: number, y?: number, fontSize?: number, opacity?: number): Promise<void>;
|
|
220
|
+
export declare function mergePDFs(inputPaths: string[], outputPath: string): Promise<void>;
|
|
221
|
+
export declare function splitPDF(inputPath: string, outputDir: string): Promise<string[]>;
|
|
222
|
+
export declare function optimizePDF(path: string): Promise<void>;
|
|
223
|
+
export declare function linearizePDF(inputPath: string, outputPath: string): Promise<void>;
|
|
224
|
+
export declare function createBlankDocument(width?: number, height?: number): Document;
|
|
225
|
+
export declare function createTextPDF(text: string, outputPath: string, options?: Parameters<typeof Enhanced.createTextPDF>[2]): Promise<void>;
|
|
226
|
+
//# sourceMappingURL=enhanced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced.d.ts","sourceRoot":"","sources":["../src/enhanced.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwEG;AAEH,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAItD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,IAAI,CAAU;gBAEV,GAAG,CAAC,EAAE,OAAO;IAIzB;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAMD;;;;OAIG;IACH,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAgBnE;;;OAGG;IACH,QAAQ,CACN,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,MAAY,EACnB,SAAS,GAAE,MAAY,GACtB,IAAI;IAaP;;;OAGG;IACH,aAAa,CACX,IAAI,EAAE,OAAO,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,MAAY,EACnB,IAAI,GAAE,OAAe,GACpB,IAAI;IAaP;;;OAGG;IACH,UAAU,CACR,IAAI,EAAE,OAAO,EACb,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,SAAS,EAChB,KAAK,GAAE,MAAY,EACnB,IAAI,GAAE,OAAe,GACpB,IAAI;IAiBP;;;OAGG;IACG,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,EAAE,GAAE,MAAY,EAChB,EAAE,GAAE,MAAY,EAChB,QAAQ,GAAE,MAAW,EACrB,OAAO,GAAE,MAAY,GACpB,OAAO,CAAC,IAAI,CAAC;IAiBhB;;;OAGG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE;;;;OAIG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAUvE;;;OAGG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU9C;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE;;;OAGG;IACG,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmCzE;;;;;OAKG;IACH,MAAM,CAAC,mBAAmB,CAAC,MAAM,GAAE,MAAY,EAAE,OAAO,GAAE,MAAY,GAAG,QAAQ;IAOjF;;;OAGG;WACU,aAAa,CACxB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GACA,OAAO,CAAC,IAAI,CAAC;CAMjB;AAOD;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAKtC;AAED;;GAEG;AAEH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,CAAC,CAAC,EAAE,MAAM,EACV,CAAC,CAAC,EAAE,MAAM,EACV,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED,wBAAsB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAEtF;AAED,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE7D;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAE7E;AAED,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,OAAO,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GACrD,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
package/dist/enhanced.js
ADDED
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced - MicroPDF high-level convenience API
|
|
3
|
+
*
|
|
4
|
+
* This module provides MicroPDF-specific high-level functions for common PDF operations.
|
|
5
|
+
* These are convenience wrappers that simplify complex workflows and provide a more
|
|
6
|
+
* user-friendly API for common tasks.
|
|
7
|
+
*
|
|
8
|
+
* The Enhanced API includes operations like:
|
|
9
|
+
* - Adding blank pages
|
|
10
|
+
* - Adding watermarks
|
|
11
|
+
* - Drawing shapes (rectangles, circles, lines)
|
|
12
|
+
* - Merging and splitting PDFs
|
|
13
|
+
* - Optimizing and linearizing PDFs
|
|
14
|
+
*
|
|
15
|
+
* @module enhanced
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { Enhanced, Document } from 'micropdf';
|
|
19
|
+
*
|
|
20
|
+
* const enhanced = new Enhanced();
|
|
21
|
+
* const doc = Document.open('document.pdf');
|
|
22
|
+
*
|
|
23
|
+
* // Add a blank page
|
|
24
|
+
* enhanced.addBlankPage(doc, 612, 792); // US Letter size
|
|
25
|
+
*
|
|
26
|
+
* // Add a watermark
|
|
27
|
+
* enhanced.addWatermark(
|
|
28
|
+
* doc,
|
|
29
|
+
* 'CONFIDENTIAL',
|
|
30
|
+
* { x: 300, y: 400 },
|
|
31
|
+
* 12,
|
|
32
|
+
* 0.3 // 30% opacity
|
|
33
|
+
* );
|
|
34
|
+
*
|
|
35
|
+
* // Draw shapes
|
|
36
|
+
* enhanced.drawRectangle(
|
|
37
|
+
* doc,
|
|
38
|
+
* 0, // page index
|
|
39
|
+
* { x0: 100, y0: 100, x1: 200, y1: 200 },
|
|
40
|
+
* [255, 0, 0], // red
|
|
41
|
+
* 0.5, // opacity
|
|
42
|
+
* 2, // line width
|
|
43
|
+
* true // fill
|
|
44
|
+
* );
|
|
45
|
+
*
|
|
46
|
+
* // Save
|
|
47
|
+
* doc.save('output.pdf');
|
|
48
|
+
* doc.close();
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Merge multiple PDFs
|
|
54
|
+
* const enhanced = new Enhanced();
|
|
55
|
+
* enhanced.mergePdfs(
|
|
56
|
+
* ['doc1.pdf', 'doc2.pdf', 'doc3.pdf'],
|
|
57
|
+
* 'merged.pdf'
|
|
58
|
+
* );
|
|
59
|
+
*
|
|
60
|
+
* // Split a PDF
|
|
61
|
+
* enhanced.splitPdf(
|
|
62
|
+
* 'document.pdf',
|
|
63
|
+
* 'output-dir',
|
|
64
|
+
* { startPage: 0, endPage: 10 }
|
|
65
|
+
* );
|
|
66
|
+
*
|
|
67
|
+
* // Optimize a PDF
|
|
68
|
+
* enhanced.optimizePdf('large.pdf', 'optimized.pdf');
|
|
69
|
+
*
|
|
70
|
+
* // Linearize for web viewing
|
|
71
|
+
* enhanced.linearizePdf('document.pdf', 'web-optimized.pdf');
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
import { getDefaultContext } from './context.js';
|
|
75
|
+
import { Color } from './geometry.js';
|
|
76
|
+
import { native } from './native.js';
|
|
77
|
+
/**
|
|
78
|
+
* Enhanced MicroPDF API for high-level PDF operations.
|
|
79
|
+
*
|
|
80
|
+
* Provides convenient methods for common PDF manipulation tasks that would
|
|
81
|
+
* otherwise require multiple lower-level API calls.
|
|
82
|
+
*
|
|
83
|
+
* @class Enhanced
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const enhanced = new Enhanced();
|
|
87
|
+
* const doc = Document.open('document.pdf');
|
|
88
|
+
*
|
|
89
|
+
* // Add a watermark to all pages
|
|
90
|
+
* for (let i = 0; i < doc.pageCount; i++) {
|
|
91
|
+
* enhanced.addWatermark(
|
|
92
|
+
* doc,
|
|
93
|
+
* 'DRAFT',
|
|
94
|
+
* { x: 300, y: 400 },
|
|
95
|
+
* 48,
|
|
96
|
+
* 0.2
|
|
97
|
+
* );
|
|
98
|
+
* }
|
|
99
|
+
*
|
|
100
|
+
* doc.save('watermarked.pdf');
|
|
101
|
+
* doc.close();
|
|
102
|
+
* ```
|
|
103
|
+
*/
|
|
104
|
+
export class Enhanced {
|
|
105
|
+
_ctx;
|
|
106
|
+
constructor(ctx) {
|
|
107
|
+
this._ctx = ctx || getDefaultContext();
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Get the context
|
|
111
|
+
*/
|
|
112
|
+
get context() {
|
|
113
|
+
return this._ctx;
|
|
114
|
+
}
|
|
115
|
+
// ============================================================================
|
|
116
|
+
// Page Operations
|
|
117
|
+
// ============================================================================
|
|
118
|
+
/**
|
|
119
|
+
* Add a blank page to a document using FFI
|
|
120
|
+
* @returns Page number of newly added page
|
|
121
|
+
* @throws Error when native bindings are not available
|
|
122
|
+
*/
|
|
123
|
+
addBlankPage(_doc, width, height) {
|
|
124
|
+
// Get native handles (will be available when Document exposes them)
|
|
125
|
+
const ctx = this._ctx?._nativeCtx;
|
|
126
|
+
const nativeDoc = _doc?._doc;
|
|
127
|
+
if (!ctx || !nativeDoc) {
|
|
128
|
+
throw new Error('Adding blank page requires native FFI bindings (mp_add_blank_page)');
|
|
129
|
+
}
|
|
130
|
+
return native.npAddBlankPage(ctx, nativeDoc, width, height);
|
|
131
|
+
}
|
|
132
|
+
// ============================================================================
|
|
133
|
+
// Drawing Operations
|
|
134
|
+
// ============================================================================
|
|
135
|
+
/**
|
|
136
|
+
* Draw a line on a page using FFI
|
|
137
|
+
* @throws Error when native bindings are not available
|
|
138
|
+
*/
|
|
139
|
+
drawLine(page, x0, y0, x1, y1, color, alpha = 1.0, lineWidth = 1.0) {
|
|
140
|
+
const ctx = this._ctx?._nativeCtx;
|
|
141
|
+
const nativePage = page?._page;
|
|
142
|
+
if (!ctx || !nativePage) {
|
|
143
|
+
throw new Error('Drawing line requires native FFI bindings (mp_draw_line)');
|
|
144
|
+
}
|
|
145
|
+
const c = Color.from(color);
|
|
146
|
+
const colorArray = [c.r, c.g, c.b];
|
|
147
|
+
native.npDrawLine(ctx, nativePage, x0, y0, x1, y1, colorArray, alpha, lineWidth);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Draw a rectangle on a page using FFI
|
|
151
|
+
* @throws Error when native bindings are not available
|
|
152
|
+
*/
|
|
153
|
+
drawRectangle(page, x, y, width, height, color, alpha = 1.0, fill = false) {
|
|
154
|
+
const ctx = this._ctx?._nativeCtx;
|
|
155
|
+
const nativePage = page?._page;
|
|
156
|
+
if (!ctx || !nativePage) {
|
|
157
|
+
throw new Error('Drawing rectangle requires native FFI bindings (mp_draw_rectangle)');
|
|
158
|
+
}
|
|
159
|
+
const c = Color.from(color);
|
|
160
|
+
const colorArray = [c.r, c.g, c.b];
|
|
161
|
+
native.npDrawRectangle(ctx, nativePage, x, y, width, height, colorArray, alpha, fill);
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Draw a circle on a page using FFI
|
|
165
|
+
* @throws Error when native bindings are not available
|
|
166
|
+
*/
|
|
167
|
+
drawCircle(page, x, y, radius, color, alpha = 1.0, fill = false) {
|
|
168
|
+
const ctx = this._ctx?._nativeCtx;
|
|
169
|
+
const nativePage = page?._page;
|
|
170
|
+
if (!ctx || !nativePage) {
|
|
171
|
+
throw new Error('Drawing circle requires native FFI bindings (mp_draw_circle)');
|
|
172
|
+
}
|
|
173
|
+
const c = Color.from(color);
|
|
174
|
+
const colorArray = [c.r, c.g, c.b];
|
|
175
|
+
native.npDrawCircle(ctx, nativePage, x, y, radius, colorArray, alpha, fill);
|
|
176
|
+
}
|
|
177
|
+
// ============================================================================
|
|
178
|
+
// Watermark Operations
|
|
179
|
+
// ============================================================================
|
|
180
|
+
/**
|
|
181
|
+
* Add watermark to PDF using FFI
|
|
182
|
+
* @throws Error when native bindings are not available
|
|
183
|
+
*/
|
|
184
|
+
async addWatermark(inputPath, _outputPath, text, _x = 100, _y = 100, fontSize = 48, opacity = 0.3) {
|
|
185
|
+
const ctx = this._ctx?._nativeCtx;
|
|
186
|
+
if (!ctx) {
|
|
187
|
+
throw new Error('Watermark requires native FFI bindings (mp_add_watermark)');
|
|
188
|
+
}
|
|
189
|
+
// Open document
|
|
190
|
+
const doc = native.openDocumentFromPath(ctx, inputPath);
|
|
191
|
+
native.npAddWatermark(ctx, doc, text, fontSize, opacity);
|
|
192
|
+
native.dropDocument(ctx, doc);
|
|
193
|
+
}
|
|
194
|
+
// ============================================================================
|
|
195
|
+
// PDF Manipulation
|
|
196
|
+
// ============================================================================
|
|
197
|
+
/**
|
|
198
|
+
* Merge multiple PDFs into one using FFI
|
|
199
|
+
* @throws Error when native bindings are not available
|
|
200
|
+
*/
|
|
201
|
+
async mergePDFs(inputPaths, outputPath) {
|
|
202
|
+
const ctx = this._ctx?._nativeCtx;
|
|
203
|
+
if (!ctx) {
|
|
204
|
+
throw new Error('PDF merging requires native FFI bindings (mp_merge_pdfs)');
|
|
205
|
+
}
|
|
206
|
+
native.npMergePDFs(ctx, inputPaths, inputPaths.length, outputPath);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Split PDF into separate files using FFI
|
|
210
|
+
* @returns Array of output file paths
|
|
211
|
+
* @throws Error when native bindings are not available
|
|
212
|
+
*/
|
|
213
|
+
async splitPDF(inputPath, outputDir) {
|
|
214
|
+
const ctx = this._ctx?._nativeCtx;
|
|
215
|
+
if (!ctx) {
|
|
216
|
+
throw new Error('PDF splitting requires native FFI bindings (mp_split_pdf)');
|
|
217
|
+
}
|
|
218
|
+
return native.npSplitPDF(ctx, inputPath, outputDir);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Optimize PDF (compress, remove unused objects) using FFI
|
|
222
|
+
* @throws Error when native bindings are not available
|
|
223
|
+
*/
|
|
224
|
+
async optimizePDF(path) {
|
|
225
|
+
const ctx = this._ctx?._nativeCtx;
|
|
226
|
+
if (!ctx) {
|
|
227
|
+
throw new Error('PDF optimization requires native FFI bindings (mp_optimize_pdf)');
|
|
228
|
+
}
|
|
229
|
+
native.npOptimizePDF(ctx, path);
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Linearize PDF for fast web viewing using FFI
|
|
233
|
+
* @throws Error when native bindings are not available
|
|
234
|
+
*/
|
|
235
|
+
async linearizePDF(inputPath, outputPath) {
|
|
236
|
+
const ctx = this._ctx?._nativeCtx;
|
|
237
|
+
if (!ctx) {
|
|
238
|
+
throw new Error('PDF linearization requires native FFI bindings (mp_linearize_pdf)');
|
|
239
|
+
}
|
|
240
|
+
native.npLinearizePDF(ctx, inputPath, outputPath);
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Write document to PDF file using FFI
|
|
244
|
+
* @throws Error when native bindings are not available
|
|
245
|
+
*/
|
|
246
|
+
async writePDF(doc, path) {
|
|
247
|
+
const ctx = this._ctx?._nativeCtx;
|
|
248
|
+
const nativeDoc = doc?._doc;
|
|
249
|
+
if (!ctx || !nativeDoc) {
|
|
250
|
+
throw new Error('Writing PDF requires native FFI bindings (pdf_save_document)');
|
|
251
|
+
}
|
|
252
|
+
native.saveDocument(ctx, nativeDoc, path);
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Merge multiple PDF files into a single output file
|
|
256
|
+
*
|
|
257
|
+
* @param inputPaths Array of PDF file paths to merge (in order)
|
|
258
|
+
* @param outputPath Path where the merged PDF will be saved
|
|
259
|
+
* @returns Promise that resolves to the number of pages in the merged PDF
|
|
260
|
+
* @throws Error if any input file is invalid, not found, or merge fails
|
|
261
|
+
* @throws Error when native bindings are not available
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* import { Enhanced } from 'micropdf';
|
|
266
|
+
*
|
|
267
|
+
* const enhanced = new Enhanced();
|
|
268
|
+
* const pageCount = await enhanced.mergePDF(
|
|
269
|
+
* ['document1.pdf', 'document2.pdf', 'document3.pdf'],
|
|
270
|
+
* 'merged.pdf'
|
|
271
|
+
* );
|
|
272
|
+
* console.log(`Merged ${pageCount} pages`);
|
|
273
|
+
* ```
|
|
274
|
+
*
|
|
275
|
+
* @example Large document handling
|
|
276
|
+
* ```typescript
|
|
277
|
+
* // Works with large documents (5000+ pages)
|
|
278
|
+
* const pageCount = await enhanced.mergePDF(
|
|
279
|
+
* ['large_doc1.pdf', 'large_doc2.pdf'],
|
|
280
|
+
* 'combined.pdf'
|
|
281
|
+
* );
|
|
282
|
+
* ```
|
|
283
|
+
*/
|
|
284
|
+
async mergePDF(inputPaths, outputPath) {
|
|
285
|
+
const ctx = this._ctx?._nativeCtx;
|
|
286
|
+
if (!ctx) {
|
|
287
|
+
throw new Error('Merging PDFs requires native FFI bindings (mp_merge_pdfs)');
|
|
288
|
+
}
|
|
289
|
+
if (!inputPaths || inputPaths.length === 0) {
|
|
290
|
+
throw new Error('At least one input PDF path is required');
|
|
291
|
+
}
|
|
292
|
+
if (!outputPath) {
|
|
293
|
+
throw new Error('Output path is required');
|
|
294
|
+
}
|
|
295
|
+
try {
|
|
296
|
+
const pageCount = native.npMergePDFs(ctx, inputPaths, inputPaths.length, outputPath);
|
|
297
|
+
if (pageCount < 0) {
|
|
298
|
+
throw new Error('PDF merge failed');
|
|
299
|
+
}
|
|
300
|
+
return pageCount;
|
|
301
|
+
}
|
|
302
|
+
catch (error) {
|
|
303
|
+
if (error instanceof Error) {
|
|
304
|
+
throw new Error(`Failed to merge PDFs: ${error.message}`);
|
|
305
|
+
}
|
|
306
|
+
throw new Error('Failed to merge PDFs: Unknown error');
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
// ============================================================================
|
|
310
|
+
// Convenience Factory Methods
|
|
311
|
+
// ============================================================================
|
|
312
|
+
/**
|
|
313
|
+
* Create a new blank PDF document
|
|
314
|
+
* @param width Page width in points (default A4 width: 595)
|
|
315
|
+
* @param height Page height in points (default A4 height: 842)
|
|
316
|
+
* @throws Error This is a static method that requires instance context
|
|
317
|
+
*/
|
|
318
|
+
static createBlankDocument(_width = 595, _height = 842) {
|
|
319
|
+
throw new Error('Document creation requires native FFI bindings (fz_new_document). ' +
|
|
320
|
+
'Use Document.fromBuffer() or Enhanced instance methods instead.');
|
|
321
|
+
}
|
|
322
|
+
/**
|
|
323
|
+
* Quick create PDF with text
|
|
324
|
+
* @throws Error This is a static method that requires instance context
|
|
325
|
+
*/
|
|
326
|
+
static async createTextPDF(_text, _outputPath, _options) {
|
|
327
|
+
throw new Error('PDF text creation requires native FFI bindings (fz_new_document, fz_show_string). ' +
|
|
328
|
+
'Use Enhanced instance methods instead.');
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Global enhanced API instance
|
|
333
|
+
*/
|
|
334
|
+
let globalEnhanced = null;
|
|
335
|
+
/**
|
|
336
|
+
* Get global enhanced API
|
|
337
|
+
*/
|
|
338
|
+
export function getEnhanced() {
|
|
339
|
+
if (!globalEnhanced) {
|
|
340
|
+
globalEnhanced = new Enhanced();
|
|
341
|
+
}
|
|
342
|
+
return globalEnhanced;
|
|
343
|
+
}
|
|
344
|
+
/**
|
|
345
|
+
* Convenience functions (use global instance)
|
|
346
|
+
*/
|
|
347
|
+
export async function addWatermark(inputPath, outputPath, text, x, y, fontSize, opacity) {
|
|
348
|
+
return getEnhanced().addWatermark(inputPath, outputPath, text, x, y, fontSize, opacity);
|
|
349
|
+
}
|
|
350
|
+
export async function mergePDFs(inputPaths, outputPath) {
|
|
351
|
+
return getEnhanced().mergePDFs(inputPaths, outputPath);
|
|
352
|
+
}
|
|
353
|
+
export async function splitPDF(inputPath, outputDir) {
|
|
354
|
+
return getEnhanced().splitPDF(inputPath, outputDir);
|
|
355
|
+
}
|
|
356
|
+
export async function optimizePDF(path) {
|
|
357
|
+
return getEnhanced().optimizePDF(path);
|
|
358
|
+
}
|
|
359
|
+
export async function linearizePDF(inputPath, outputPath) {
|
|
360
|
+
return getEnhanced().linearizePDF(inputPath, outputPath);
|
|
361
|
+
}
|
|
362
|
+
export function createBlankDocument(width, height) {
|
|
363
|
+
return Enhanced.createBlankDocument(width, height);
|
|
364
|
+
}
|
|
365
|
+
export async function createTextPDF(text, outputPath, options) {
|
|
366
|
+
return Enhanced.createTextPDF(text, outputPath, options);
|
|
367
|
+
}
|
|
368
|
+
//# sourceMappingURL=enhanced.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced.js","sourceRoot":"","sources":["../src/enhanced.ts"],"names":[],"mappings":"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"}
|
package/dist/filter.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filter - PDF compression and decompression filters
|
|
3
|
+
*
|
|
4
|
+
* This implementation mirrors the Rust `pdf::filter` module for 100% API compatibility.
|
|
5
|
+
*/
|
|
6
|
+
import { type FilterType } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Compress data using FlateDecode (zlib deflate)
|
|
9
|
+
*/
|
|
10
|
+
export declare function flateEncode(data: Uint8Array): Uint8Array;
|
|
11
|
+
/**
|
|
12
|
+
* Decompress FlateDecode (zlib inflate) data
|
|
13
|
+
*/
|
|
14
|
+
export declare function flateDecode(data: Uint8Array): Uint8Array;
|
|
15
|
+
/**
|
|
16
|
+
* Encode data to ASCII hex
|
|
17
|
+
*/
|
|
18
|
+
export declare function asciiHexEncode(data: Uint8Array): Uint8Array;
|
|
19
|
+
/**
|
|
20
|
+
* Decode ASCII hex data
|
|
21
|
+
*/
|
|
22
|
+
export declare function asciiHexDecode(data: Uint8Array): Uint8Array;
|
|
23
|
+
/**
|
|
24
|
+
* Encode data to ASCII85
|
|
25
|
+
*/
|
|
26
|
+
export declare function ascii85Encode(data: Uint8Array): Uint8Array;
|
|
27
|
+
/**
|
|
28
|
+
* Decode ASCII85 data
|
|
29
|
+
*/
|
|
30
|
+
export declare function ascii85Decode(data: Uint8Array): Uint8Array;
|
|
31
|
+
/**
|
|
32
|
+
* Encode data using Run-Length Encoding
|
|
33
|
+
*/
|
|
34
|
+
export declare function runLengthEncode(data: Uint8Array): Uint8Array;
|
|
35
|
+
/**
|
|
36
|
+
* Decode Run-Length encoded data
|
|
37
|
+
*/
|
|
38
|
+
export declare function runLengthDecode(data: Uint8Array): Uint8Array;
|
|
39
|
+
/**
|
|
40
|
+
* Decode LZW compressed data
|
|
41
|
+
*/
|
|
42
|
+
export declare function lzwDecode(data: Uint8Array, earlyChange?: boolean): Uint8Array;
|
|
43
|
+
/**
|
|
44
|
+
* Decode data using the specified filter
|
|
45
|
+
*/
|
|
46
|
+
export declare function decodeFilter(filter: FilterType, data: Uint8Array, params?: Record<string, unknown>): Uint8Array;
|
|
47
|
+
/**
|
|
48
|
+
* Encode data using the specified filter
|
|
49
|
+
*/
|
|
50
|
+
export declare function encodeFilter(filter: FilterType, data: Uint8Array, _params?: Record<string, unknown>): Uint8Array;
|
|
51
|
+
//# sourceMappingURL=filter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../src/filter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAM5D;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAUxD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAUxD;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAG3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAiB3D;AAUD;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAyC1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA6D1D;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA0C5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CA8B5D;AAMD;;GAEG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,WAAW,GAAE,OAAc,GAAG,UAAU,CAoFnF;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,UAAU,CAyBZ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,UAAU,CAyBZ"}
|