@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.
Files changed (170) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +985 -0
  3. package/binding.gyp +73 -0
  4. package/dist/annot.d.ts +458 -0
  5. package/dist/annot.d.ts.map +1 -0
  6. package/dist/annot.js +697 -0
  7. package/dist/annot.js.map +1 -0
  8. package/dist/archive.d.ts +128 -0
  9. package/dist/archive.d.ts.map +1 -0
  10. package/dist/archive.js +268 -0
  11. package/dist/archive.js.map +1 -0
  12. package/dist/buffer.d.ts +572 -0
  13. package/dist/buffer.d.ts.map +1 -0
  14. package/dist/buffer.js +971 -0
  15. package/dist/buffer.js.map +1 -0
  16. package/dist/colorspace.d.ts +287 -0
  17. package/dist/colorspace.d.ts.map +1 -0
  18. package/dist/colorspace.js +542 -0
  19. package/dist/colorspace.js.map +1 -0
  20. package/dist/context.d.ts +184 -0
  21. package/dist/context.d.ts.map +1 -0
  22. package/dist/context.js +320 -0
  23. package/dist/context.js.map +1 -0
  24. package/dist/cookie.d.ts +164 -0
  25. package/dist/cookie.d.ts.map +1 -0
  26. package/dist/cookie.js +306 -0
  27. package/dist/cookie.js.map +1 -0
  28. package/dist/device.d.ts +169 -0
  29. package/dist/device.d.ts.map +1 -0
  30. package/dist/device.js +350 -0
  31. package/dist/device.js.map +1 -0
  32. package/dist/display-list.d.ts +202 -0
  33. package/dist/display-list.d.ts.map +1 -0
  34. package/dist/display-list.js +410 -0
  35. package/dist/display-list.js.map +1 -0
  36. package/dist/document.d.ts +637 -0
  37. package/dist/document.d.ts.map +1 -0
  38. package/dist/document.js +902 -0
  39. package/dist/document.js.map +1 -0
  40. package/dist/easy.d.ts +423 -0
  41. package/dist/easy.d.ts.map +1 -0
  42. package/dist/easy.js +644 -0
  43. package/dist/easy.js.map +1 -0
  44. package/dist/enhanced.d.ts +226 -0
  45. package/dist/enhanced.d.ts.map +1 -0
  46. package/dist/enhanced.js +368 -0
  47. package/dist/enhanced.js.map +1 -0
  48. package/dist/filter.d.ts +51 -0
  49. package/dist/filter.d.ts.map +1 -0
  50. package/dist/filter.js +381 -0
  51. package/dist/filter.js.map +1 -0
  52. package/dist/font.d.ts +222 -0
  53. package/dist/font.d.ts.map +1 -0
  54. package/dist/font.js +381 -0
  55. package/dist/font.js.map +1 -0
  56. package/dist/form.d.ts +214 -0
  57. package/dist/form.d.ts.map +1 -0
  58. package/dist/form.js +497 -0
  59. package/dist/form.js.map +1 -0
  60. package/dist/geometry.d.ts +469 -0
  61. package/dist/geometry.d.ts.map +1 -0
  62. package/dist/geometry.js +780 -0
  63. package/dist/geometry.js.map +1 -0
  64. package/dist/image.d.ts +172 -0
  65. package/dist/image.d.ts.map +1 -0
  66. package/dist/image.js +348 -0
  67. package/dist/image.js.map +1 -0
  68. package/dist/index.d.ts +171 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +339 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/link.d.ts +168 -0
  73. package/dist/link.d.ts.map +1 -0
  74. package/dist/link.js +343 -0
  75. package/dist/link.js.map +1 -0
  76. package/dist/micropdf.d.ts +40 -0
  77. package/dist/micropdf.d.ts.map +1 -0
  78. package/dist/micropdf.js +45 -0
  79. package/dist/micropdf.js.map +1 -0
  80. package/dist/nanopdf.d.ts +40 -0
  81. package/dist/nanopdf.d.ts.map +1 -0
  82. package/dist/nanopdf.js +45 -0
  83. package/dist/nanopdf.js.map +1 -0
  84. package/dist/native.d.ts +242 -0
  85. package/dist/native.d.ts.map +1 -0
  86. package/dist/native.js +509 -0
  87. package/dist/native.js.map +1 -0
  88. package/dist/output.d.ts +166 -0
  89. package/dist/output.d.ts.map +1 -0
  90. package/dist/output.js +365 -0
  91. package/dist/output.js.map +1 -0
  92. package/dist/path.d.ts +420 -0
  93. package/dist/path.d.ts.map +1 -0
  94. package/dist/path.js +687 -0
  95. package/dist/path.js.map +1 -0
  96. package/dist/pdf/object.d.ts +489 -0
  97. package/dist/pdf/object.d.ts.map +1 -0
  98. package/dist/pdf/object.js +1045 -0
  99. package/dist/pdf/object.js.map +1 -0
  100. package/dist/pixmap.d.ts +315 -0
  101. package/dist/pixmap.d.ts.map +1 -0
  102. package/dist/pixmap.js +590 -0
  103. package/dist/pixmap.js.map +1 -0
  104. package/dist/profiler.d.ts +159 -0
  105. package/dist/profiler.d.ts.map +1 -0
  106. package/dist/profiler.js +380 -0
  107. package/dist/profiler.js.map +1 -0
  108. package/dist/render-options.d.ts +227 -0
  109. package/dist/render-options.d.ts.map +1 -0
  110. package/dist/render-options.js +130 -0
  111. package/dist/render-options.js.map +1 -0
  112. package/dist/resource-tracking.d.ts +332 -0
  113. package/dist/resource-tracking.d.ts.map +1 -0
  114. package/dist/resource-tracking.js +653 -0
  115. package/dist/resource-tracking.js.map +1 -0
  116. package/dist/simple.d.ts +276 -0
  117. package/dist/simple.d.ts.map +1 -0
  118. package/dist/simple.js +343 -0
  119. package/dist/simple.js.map +1 -0
  120. package/dist/stext.d.ts +290 -0
  121. package/dist/stext.d.ts.map +1 -0
  122. package/dist/stext.js +312 -0
  123. package/dist/stext.js.map +1 -0
  124. package/dist/stream.d.ts +174 -0
  125. package/dist/stream.d.ts.map +1 -0
  126. package/dist/stream.js +476 -0
  127. package/dist/stream.js.map +1 -0
  128. package/dist/text.d.ts +337 -0
  129. package/dist/text.d.ts.map +1 -0
  130. package/dist/text.js +454 -0
  131. package/dist/text.js.map +1 -0
  132. package/dist/typed-arrays.d.ts +127 -0
  133. package/dist/typed-arrays.d.ts.map +1 -0
  134. package/dist/typed-arrays.js +410 -0
  135. package/dist/typed-arrays.js.map +1 -0
  136. package/dist/types.d.ts +358 -0
  137. package/dist/types.d.ts.map +1 -0
  138. package/dist/types.js +216 -0
  139. package/dist/types.js.map +1 -0
  140. package/native/annot.cc +557 -0
  141. package/native/buffer.cc +204 -0
  142. package/native/colorspace.cc +166 -0
  143. package/native/context.cc +84 -0
  144. package/native/cookie.cc +179 -0
  145. package/native/device.cc +179 -0
  146. package/native/display_list.cc +179 -0
  147. package/native/document.cc +268 -0
  148. package/native/enhanced.cc +70 -0
  149. package/native/font.cc +282 -0
  150. package/native/form.cc +523 -0
  151. package/native/geometry.cc +255 -0
  152. package/native/image.cc +216 -0
  153. package/native/include/micropdf/enhanced.h +38 -0
  154. package/native/include/micropdf/types.h +36 -0
  155. package/native/include/micropdf.h +106 -0
  156. package/native/include/mupdf-ffi.h +39 -0
  157. package/native/include/mupdf.h +11 -0
  158. package/native/include/mupdf_minimal.h +381 -0
  159. package/native/lib/linux-x64/libmicropdf.a +0 -0
  160. package/native/link.cc +234 -0
  161. package/native/micropdf.cc +71 -0
  162. package/native/output.cc +229 -0
  163. package/native/page.cc +572 -0
  164. package/native/path.cc +259 -0
  165. package/native/pixmap.cc +240 -0
  166. package/native/stext.cc +610 -0
  167. package/native/stream.cc +239 -0
  168. package/package.json +120 -0
  169. package/scripts/build-from-rust.js +97 -0
  170. package/scripts/install.js +184 -0
package/dist/text.d.ts ADDED
@@ -0,0 +1,337 @@
1
+ /**
2
+ * Text - PDF text object handling and layout
3
+ *
4
+ * This module provides comprehensive support for working with text in PDF documents,
5
+ * including text layout, glyph positioning, font management, and structured text extraction.
6
+ *
7
+ * This module provides 100% API compatibility with MuPDF's text operations.
8
+ *
9
+ * @module text
10
+ * @example
11
+ * ```typescript
12
+ * import { Text, Language, Matrix } from 'micropdf';
13
+ *
14
+ * // Create a text object
15
+ * const text = Text.create();
16
+ *
17
+ * // Set language for text processing
18
+ * text.setLanguage(Language.en);
19
+ *
20
+ * // Add glyphs (from font)
21
+ * text.showGlyph('Arial', 12, Matrix.identity(), 65, 0x0041, 0); // 'A'
22
+ *
23
+ * // Get bounding box
24
+ * const bounds = text.getBounds();
25
+ * console.log(`Text spans ${bounds.width} x ${bounds.height}`);
26
+ *
27
+ * // Walk through text structure
28
+ * text.walk({
29
+ * beginSpan(font, size, wmode, trm) {
30
+ * console.log(`Span: ${font} @ ${size}pt`);
31
+ * },
32
+ * showGlyph(x, y, glyph, unicode) {
33
+ * console.log(`Glyph ${glyph} at (${x}, ${y})`);
34
+ * }
35
+ * });
36
+ *
37
+ * // Clean up
38
+ * text.drop();
39
+ * ```
40
+ */
41
+ import { Rect, Matrix, type MatrixLike } from './geometry.js';
42
+ /**
43
+ * Language codes for text handling.
44
+ *
45
+ * These language codes are used to assist with text extraction, hyphenation,
46
+ * and language-specific text processing in PDF documents.
47
+ *
48
+ * @enum {number}
49
+ * @example
50
+ * ```typescript
51
+ * const text = Text.create();
52
+ *
53
+ * // Set English
54
+ * text.setLanguage(Language.en);
55
+ *
56
+ * // Set Spanish
57
+ * text.setLanguage(Language.es);
58
+ *
59
+ * // Set Chinese
60
+ * text.setLanguage(Language.zh);
61
+ *
62
+ * // Check current language
63
+ * if (text.getLanguage() === Language.ja) {
64
+ * console.log('Japanese text');
65
+ * }
66
+ * ```
67
+ */
68
+ export declare enum Language {
69
+ /** No language set or unknown language */
70
+ UNSET = 0,
71
+ /** English (en) */
72
+ en = 1,
73
+ /** Spanish (es) */
74
+ es = 2,
75
+ /** Chinese (zh) */
76
+ zh = 3,
77
+ /** French (fr) */
78
+ fr = 4,
79
+ /** German (de) */
80
+ de = 5,
81
+ /** Japanese (ja) */
82
+ ja = 6,
83
+ /** Korean (ko) */
84
+ ko = 7,
85
+ /** Russian (ru) */
86
+ ru = 8,
87
+ /** Arabic (ar) */
88
+ ar = 9,
89
+ /** Portuguese (pt) */
90
+ pt = 10,
91
+ /** Italian (it) */
92
+ it = 11,
93
+ /** Dutch (nl) */
94
+ nl = 12,
95
+ /** Swedish (sv) */
96
+ sv = 13,
97
+ /** Polish (pl) */
98
+ pl = 14,
99
+ /** Turkish (tr) */
100
+ tr = 15
101
+ }
102
+ /**
103
+ * A text span representing a run of text with consistent formatting.
104
+ *
105
+ * Text spans group glyphs that share the same font, size, and rendering properties.
106
+ * They are the basic unit of text layout in PDF documents.
107
+ *
108
+ * @interface TextSpan
109
+ * @example
110
+ * ```typescript
111
+ * const span: TextSpan = {
112
+ * font: 'Arial',
113
+ * size: 12,
114
+ * wmode: 0, // Horizontal
115
+ * trm: Matrix.identity(),
116
+ * items: [
117
+ * { x: 10, y: 20, glyph: 65, unicode: 0x0041 }, // 'A'
118
+ * { x: 20, y: 20, glyph: 66, unicode: 0x0042 } // 'B'
119
+ * ]
120
+ * };
121
+ * ```
122
+ */
123
+ export interface TextSpan {
124
+ /** The font name (e.g., "Arial", "Times-Roman") */
125
+ font: string;
126
+ /** The font size in points */
127
+ size: number;
128
+ /** Writing mode: 0 = horizontal, 1 = vertical */
129
+ wmode: number;
130
+ /** Text rendering matrix for transformations */
131
+ trm: Matrix;
132
+ /** Individual glyphs/characters in this span */
133
+ items: TextItem[];
134
+ }
135
+ /**
136
+ * A text item representing a single glyph or character.
137
+ *
138
+ * Text items contain the glyph identifier, Unicode codepoint, and position
139
+ * information for individual characters.
140
+ *
141
+ * @interface TextItem
142
+ * @example
143
+ * ```typescript
144
+ * const item: TextItem = {
145
+ * x: 100.5,
146
+ * y: 200.3,
147
+ * glyph: 65, // Glyph ID in the font
148
+ * unicode: 0x0041 // Unicode codepoint for 'A'
149
+ * };
150
+ * ```
151
+ */
152
+ export interface TextItem {
153
+ /** X-coordinate of the glyph position */
154
+ x: number;
155
+ /** Y-coordinate of the glyph position */
156
+ y: number;
157
+ /** Glyph identifier in the font */
158
+ glyph: number;
159
+ /** Unicode codepoint of the character */
160
+ unicode: number;
161
+ }
162
+ /**
163
+ * Text walker interface for iterating through text structure.
164
+ *
165
+ * Text walkers provide a callback-based API for traversing the hierarchical
166
+ * structure of text objects. This is useful for custom text processing,
167
+ * analysis, and rendering.
168
+ *
169
+ * @interface TextWalker
170
+ * @example
171
+ * ```typescript
172
+ * const walker: TextWalker = {
173
+ * beginSpan(font, size, wmode, trm) {
174
+ * console.log(`Begin span: ${font} @ ${size}pt`);
175
+ * },
176
+ * endSpan() {
177
+ * console.log('End span');
178
+ * },
179
+ * showGlyph(x, y, glyph, unicode) {
180
+ * const char = String.fromCodePoint(unicode);
181
+ * console.log(`Glyph '${char}' at (${x}, ${y})`);
182
+ * }
183
+ * };
184
+ *
185
+ * text.walk(walker);
186
+ * ```
187
+ */
188
+ export interface TextWalker {
189
+ /**
190
+ * Called when entering a new text span.
191
+ * @param font - The font name
192
+ * @param size - The font size in points
193
+ * @param wmode - Writing mode (0=horizontal, 1=vertical)
194
+ * @param trm - Text rendering matrix
195
+ */
196
+ beginSpan?(font: string, size: number, wmode: number, trm: Matrix): void;
197
+ /**
198
+ * Called when leaving a text span.
199
+ */
200
+ endSpan?(): void;
201
+ /**
202
+ * Called for each glyph in the text.
203
+ * @param x - X-coordinate
204
+ * @param y - Y-coordinate
205
+ * @param glyph - Glyph ID
206
+ * @param unicode - Unicode codepoint
207
+ */
208
+ showGlyph(x: number, y: number, glyph: number, unicode: number): void;
209
+ }
210
+ /**
211
+ * A PDF text object for structured text layout and rendering.
212
+ *
213
+ * Text objects provide low-level control over text positioning, font selection,
214
+ * and glyph rendering. They maintain a structured representation of text with
215
+ * spans and items for precise layout control.
216
+ *
217
+ * **Reference Counting**: Text objects use manual reference counting. Call `keep()`
218
+ * to increment the reference count and `drop()` to decrement it.
219
+ *
220
+ * @class Text
221
+ * @example
222
+ * ```typescript
223
+ * // Create and configure text object
224
+ * const text = Text.create();
225
+ * text.setLanguage(Language.en);
226
+ *
227
+ * // Add text with font and positioning
228
+ * const font = 'Arial';
229
+ * const size = 12;
230
+ * const matrix = Matrix.translate(100, 200);
231
+ *
232
+ * // Show individual glyphs
233
+ * 'Hello'.split('').forEach((char, i) => {
234
+ * const glyph = char.charCodeAt(0);
235
+ * const unicode = char.codePointAt(0)!;
236
+ * text.showGlyph(font, size, matrix, glyph, unicode);
237
+ * });
238
+ *
239
+ * // Get bounding box
240
+ * const bounds = text.getBounds();
241
+ * console.log(`Text size: ${bounds.width} x ${bounds.height}`);
242
+ *
243
+ * // Walk through structure
244
+ * text.walk({
245
+ * showGlyph(x, y, glyph, unicode) {
246
+ * console.log(`Character: ${String.fromCodePoint(unicode)}`);
247
+ * }
248
+ * });
249
+ *
250
+ * // Clean up
251
+ * text.drop();
252
+ * ```
253
+ */
254
+ export declare class Text {
255
+ private _spans;
256
+ private _language;
257
+ private _refCount;
258
+ private _currentSpan;
259
+ constructor(_handle?: any);
260
+ /**
261
+ * Create a new text object
262
+ */
263
+ static create(): Text;
264
+ keep(): this;
265
+ drop(): void;
266
+ /**
267
+ * Clone this text object
268
+ */
269
+ clone(): Text;
270
+ get language(): number;
271
+ set language(lang: number);
272
+ /**
273
+ * Get the language code
274
+ */
275
+ getLanguage(): number;
276
+ /**
277
+ * Set the language code
278
+ */
279
+ setLanguage(lang: number): void;
280
+ /**
281
+ * Begin a new text span
282
+ */
283
+ private beginSpan;
284
+ /**
285
+ * End the current text span
286
+ */
287
+ private endSpan;
288
+ /**
289
+ * Show a single glyph
290
+ */
291
+ showGlyph(font: string, size: number, trm: MatrixLike, glyph: number, unicode: number, wmode?: number): void;
292
+ /**
293
+ * Show a string of text
294
+ */
295
+ showString(font: string, size: number, trm: MatrixLike, text: string, wmode?: number): void;
296
+ /**
297
+ * Calculate the bounding box of all text
298
+ */
299
+ getBounds(ctm?: MatrixLike): Rect;
300
+ /**
301
+ * Count number of text spans
302
+ */
303
+ countSpans(): number;
304
+ /**
305
+ * Count total number of items (glyphs/characters)
306
+ */
307
+ countItems(): number;
308
+ /**
309
+ * Clear all text
310
+ */
311
+ clear(): void;
312
+ /**
313
+ * Check if text object is valid
314
+ */
315
+ isValid(): boolean;
316
+ /**
317
+ * Check if text is empty
318
+ */
319
+ isEmpty(): boolean;
320
+ /**
321
+ * Walk through all text spans and items
322
+ */
323
+ walk(walker: TextWalker): void;
324
+ /**
325
+ * Extract text content as plain string
326
+ */
327
+ extractText(): string;
328
+ /**
329
+ * Get all spans
330
+ */
331
+ getSpans(): TextSpan[];
332
+ /**
333
+ * Get span by index
334
+ */
335
+ getSpan(index: number): TextSpan | undefined;
336
+ }
337
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../src/text.ts"],"names":[],"mappings":"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"}