@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/native.js ADDED
@@ -0,0 +1,509 @@
1
+ /**
2
+ * Native module loader
3
+ *
4
+ * Handles loading the native addon, with fallback to mock implementation
5
+ * for development/testing without native bindings.
6
+ */
7
+ import { existsSync } from 'node:fs';
8
+ import { createRequire } from 'node:module';
9
+ import { join, dirname } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ import { createHash } from 'node:crypto';
12
+ const __dirname = dirname(fileURLToPath(import.meta.url));
13
+ const require = createRequire(import.meta.url);
14
+ /**
15
+ * Try to load the native addon from various locations
16
+ */
17
+ function tryLoadNative() {
18
+ const locations = [
19
+ // node-gyp-build locations
20
+ join(__dirname, '..', 'prebuilds'),
21
+ join(__dirname, '..', 'build', 'Release'),
22
+ join(__dirname, '..', 'build', 'Debug')
23
+ ];
24
+ for (const location of locations) {
25
+ try {
26
+ if (existsSync(location)) {
27
+ // Try node-gyp-build first
28
+ const nodeGypBuild = require('node-gyp-build');
29
+ return nodeGypBuild(join(__dirname, '..'));
30
+ }
31
+ }
32
+ catch {
33
+ // Continue to next location
34
+ }
35
+ }
36
+ // Try direct require as fallback
37
+ try {
38
+ return require('../build/Release/micropdf.node');
39
+ }
40
+ catch {
41
+ return null;
42
+ }
43
+ }
44
+ /**
45
+ * Helper to create a function that throws "FFI required" error
46
+ */
47
+ function requireFFI(fnName) {
48
+ return (..._args) => {
49
+ throw new Error(`FFI function '${fnName}' requires native bindings. ` +
50
+ 'Build the native addon or provide mock implementation.');
51
+ };
52
+ }
53
+ /**
54
+ * Create a mock implementation for development/testing
55
+ */
56
+ function createMockAddon() {
57
+ class MockBuffer {
58
+ data;
59
+ constructor(capacity = 0) {
60
+ this.data = globalThis.Buffer.alloc(capacity);
61
+ }
62
+ static fromBuffer(data) {
63
+ const buf = new MockBuffer();
64
+ buf.data = globalThis.Buffer.from(data);
65
+ return buf;
66
+ }
67
+ static fromString(str) {
68
+ const buf = new MockBuffer();
69
+ buf.data = globalThis.Buffer.from(str, 'utf-8');
70
+ return buf;
71
+ }
72
+ length() {
73
+ return this.data.length;
74
+ }
75
+ getData() {
76
+ return this.data;
77
+ }
78
+ append(data) {
79
+ this.data = globalThis.Buffer.concat([this.data, globalThis.Buffer.from(data)]);
80
+ return this;
81
+ }
82
+ appendByte(byte) {
83
+ this.data = globalThis.Buffer.concat([this.data, globalThis.Buffer.from([byte])]);
84
+ return this;
85
+ }
86
+ appendString(str) {
87
+ return this.append(globalThis.Buffer.from(str, 'utf-8'));
88
+ }
89
+ appendInt16LE(value) {
90
+ const buf = globalThis.Buffer.alloc(2);
91
+ buf.writeInt16LE(value, 0);
92
+ return this.append(buf);
93
+ }
94
+ appendInt32LE(value) {
95
+ const buf = globalThis.Buffer.alloc(4);
96
+ buf.writeInt32LE(value, 0);
97
+ return this.append(buf);
98
+ }
99
+ appendInt16BE(value) {
100
+ const buf = globalThis.Buffer.alloc(2);
101
+ buf.writeInt16BE(value, 0);
102
+ return this.append(buf);
103
+ }
104
+ appendInt32BE(value) {
105
+ const buf = globalThis.Buffer.alloc(4);
106
+ buf.writeInt32BE(value, 0);
107
+ return this.append(buf);
108
+ }
109
+ clear() {
110
+ this.data = globalThis.Buffer.alloc(0);
111
+ return this;
112
+ }
113
+ resize(size) {
114
+ const newData = globalThis.Buffer.alloc(size);
115
+ this.data.copy(newData, 0, 0, Math.min(this.data.length, size));
116
+ this.data = newData;
117
+ return this;
118
+ }
119
+ slice(start, end) {
120
+ const sliced = new MockBuffer();
121
+ sliced.data = globalThis.Buffer.from(this.data.subarray(start, end));
122
+ return sliced;
123
+ }
124
+ toBuffer() {
125
+ return this.data;
126
+ }
127
+ md5Digest() {
128
+ const hash = createHash('md5');
129
+ hash.update(this.data);
130
+ return new Uint8Array(hash.digest());
131
+ }
132
+ }
133
+ return {
134
+ getVersion: () => '0.1.0-mock',
135
+ Buffer: MockBuffer,
136
+ // Point
137
+ createPoint: (x, y) => ({ x, y }),
138
+ transformPoint: (p, m) => ({
139
+ x: p.x * m.a + p.y * m.c + m.e,
140
+ y: p.x * m.b + p.y * m.d + m.f
141
+ }),
142
+ normalizeVector: (p) => {
143
+ const len = Math.sqrt(p.x * p.x + p.y * p.y);
144
+ if (len === 0)
145
+ return { x: 0, y: 0 };
146
+ return { x: p.x / len, y: p.y / len };
147
+ },
148
+ // Rect
149
+ createRect: (x0, y0, x1, y1) => ({
150
+ x0,
151
+ y0,
152
+ x1,
153
+ y1
154
+ }),
155
+ rectEmpty: () => ({
156
+ x0: Infinity,
157
+ y0: Infinity,
158
+ x1: -Infinity,
159
+ y1: -Infinity
160
+ }),
161
+ rectInfinite: () => ({
162
+ x0: -Infinity,
163
+ y0: -Infinity,
164
+ x1: Infinity,
165
+ y1: Infinity
166
+ }),
167
+ rectUnit: () => ({ x0: 0, y0: 0, x1: 1, y1: 1 }),
168
+ isRectEmpty: (r) => r.x0 >= r.x1 || r.y0 >= r.y1,
169
+ isRectInfinite: (r) => r.x0 === -Infinity,
170
+ rectUnion: (a, b) => ({
171
+ x0: Math.min(a.x0, b.x0),
172
+ y0: Math.min(a.y0, b.y0),
173
+ x1: Math.max(a.x1, b.x1),
174
+ y1: Math.max(a.y1, b.y1)
175
+ }),
176
+ rectIntersect: (a, b) => ({
177
+ x0: Math.max(a.x0, b.x0),
178
+ y0: Math.max(a.y0, b.y0),
179
+ x1: Math.min(a.x1, b.x1),
180
+ y1: Math.min(a.y1, b.y1)
181
+ }),
182
+ rectContains: (a, b) => a.x0 <= b.x0 && a.y0 <= b.y0 && a.x1 >= b.x1 && a.y1 >= b.y1,
183
+ transformRect: (r, m) => {
184
+ const p1 = { x: r.x0 * m.a + r.y0 * m.c + m.e, y: r.x0 * m.b + r.y0 * m.d + m.f };
185
+ const p2 = { x: r.x1 * m.a + r.y0 * m.c + m.e, y: r.x1 * m.b + r.y0 * m.d + m.f };
186
+ const p3 = { x: r.x0 * m.a + r.y1 * m.c + m.e, y: r.x0 * m.b + r.y1 * m.d + m.f };
187
+ const p4 = { x: r.x1 * m.a + r.y1 * m.c + m.e, y: r.x1 * m.b + r.y1 * m.d + m.f };
188
+ return {
189
+ x0: Math.min(p1.x, p2.x, p3.x, p4.x),
190
+ y0: Math.min(p1.y, p2.y, p3.y, p4.y),
191
+ x1: Math.max(p1.x, p2.x, p3.x, p4.x),
192
+ y1: Math.max(p1.y, p2.y, p3.y, p4.y)
193
+ };
194
+ },
195
+ // IRect
196
+ createIRect: (x0, y0, x1, y1) => ({
197
+ x0: Math.floor(x0),
198
+ y0: Math.floor(y0),
199
+ x1: Math.floor(x1),
200
+ y1: Math.floor(y1)
201
+ }),
202
+ iRectFromRect: (r) => ({
203
+ x0: Math.floor(r.x0),
204
+ y0: Math.floor(r.y0),
205
+ x1: Math.ceil(r.x1),
206
+ y1: Math.ceil(r.y1)
207
+ }),
208
+ rectFromIRect: (r) => ({
209
+ x0: r.x0,
210
+ y0: r.y0,
211
+ x1: r.x1,
212
+ y1: r.y1
213
+ }),
214
+ isIRectEmpty: (r) => r.x0 >= r.x1 || r.y0 >= r.y1,
215
+ iRectUnion: (a, b) => ({
216
+ x0: Math.min(a.x0, b.x0),
217
+ y0: Math.min(a.y0, b.y0),
218
+ x1: Math.max(a.x1, b.x1),
219
+ y1: Math.max(a.y1, b.y1)
220
+ }),
221
+ iRectIntersect: (a, b) => ({
222
+ x0: Math.max(a.x0, b.x0),
223
+ y0: Math.max(a.y0, b.y0),
224
+ x1: Math.min(a.x1, b.x1),
225
+ y1: Math.min(a.y1, b.y1)
226
+ }),
227
+ // Matrix
228
+ matrixIdentity: () => ({ a: 1, b: 0, c: 0, d: 1, e: 0, f: 0 }),
229
+ matrixTranslate: (tx, ty) => ({
230
+ a: 1,
231
+ b: 0,
232
+ c: 0,
233
+ d: 1,
234
+ e: tx,
235
+ f: ty
236
+ }),
237
+ matrixScale: (sx, sy) => ({
238
+ a: sx,
239
+ b: 0,
240
+ c: 0,
241
+ d: sy,
242
+ e: 0,
243
+ f: 0
244
+ }),
245
+ matrixRotate: (degrees) => {
246
+ const rad = (degrees * Math.PI) / 180;
247
+ const c = Math.cos(rad);
248
+ const s = Math.sin(rad);
249
+ return { a: c, b: s, c: -s, d: c, e: 0, f: 0 };
250
+ },
251
+ matrixShear: (sx, sy) => ({
252
+ a: 1,
253
+ b: sy,
254
+ c: sx,
255
+ d: 1,
256
+ e: 0,
257
+ f: 0
258
+ }),
259
+ matrixConcat: (a, b) => ({
260
+ a: a.a * b.a + a.b * b.c,
261
+ b: a.a * b.b + a.b * b.d,
262
+ c: a.c * b.a + a.d * b.c,
263
+ d: a.c * b.b + a.d * b.d,
264
+ e: a.e * b.a + a.f * b.c + b.e,
265
+ f: a.e * b.b + a.f * b.d + b.f
266
+ }),
267
+ matrixInvert: (m) => {
268
+ const det = m.a * m.d - m.b * m.c;
269
+ if (Math.abs(det) < 1e-14)
270
+ return null;
271
+ const invDet = 1 / det;
272
+ return {
273
+ a: m.d * invDet,
274
+ b: -m.b * invDet,
275
+ c: -m.c * invDet,
276
+ d: m.a * invDet,
277
+ e: (m.c * m.f - m.d * m.e) * invDet,
278
+ f: (m.b * m.e - m.a * m.f) * invDet
279
+ };
280
+ },
281
+ isMatrixIdentity: (m) => m.a === 1 && m.b === 0 && m.c === 0 && m.d === 1 && m.e === 0 && m.f === 0,
282
+ isMatrixRectilinear: (m) => (m.b === 0 && m.c === 0) || (m.a === 0 && m.d === 0),
283
+ // Quad
284
+ createQuadFromRect: (r) => ({
285
+ ul: { x: r.x0, y: r.y0 },
286
+ ur: { x: r.x1, y: r.y0 },
287
+ ll: { x: r.x0, y: r.y1 },
288
+ lr: { x: r.x1, y: r.y1 }
289
+ }),
290
+ rectFromQuad: (q) => ({
291
+ x0: Math.min(q.ul.x, q.ur.x, q.ll.x, q.lr.x),
292
+ y0: Math.min(q.ul.y, q.ur.y, q.ll.y, q.lr.y),
293
+ x1: Math.max(q.ul.x, q.ur.x, q.ll.x, q.lr.x),
294
+ y1: Math.max(q.ul.y, q.ur.y, q.ll.y, q.lr.y)
295
+ }),
296
+ transformQuad: (q, m) => {
297
+ const transform = (p) => ({
298
+ x: p.x * m.a + p.y * m.c + m.e,
299
+ y: p.x * m.b + p.y * m.d + m.f
300
+ });
301
+ return {
302
+ ul: transform(q.ul),
303
+ ur: transform(q.ur),
304
+ ll: transform(q.ll),
305
+ lr: transform(q.lr)
306
+ };
307
+ },
308
+ isPointInsideQuad: (p, q) => {
309
+ const cross = (ax, ay, bx, by) => ax * by - ay * bx;
310
+ const check = (p1, p2) => cross(p2.x - p1.x, p2.y - p1.y, p.x - p1.x, p.y - p1.y) >= 0;
311
+ return check(q.ul, q.ur) && check(q.ur, q.lr) && check(q.lr, q.ll) && check(q.ll, q.ul);
312
+ },
313
+ // Colorspace
314
+ deviceGray: () => ({ name: 'DeviceGray', n: 1, type: 'GRAY' }),
315
+ deviceRGB: () => ({ name: 'DeviceRGB', n: 3, type: 'RGB' }),
316
+ deviceBGR: () => ({ name: 'DeviceBGR', n: 3, type: 'BGR' }),
317
+ deviceCMYK: () => ({ name: 'DeviceCMYK', n: 4, type: 'CMYK' }),
318
+ deviceLab: () => ({ name: 'Lab', n: 3, type: 'LAB' }),
319
+ colorspaceN: (cs) => cs.n,
320
+ colorspaceName: (cs) => cs.name,
321
+ convertColor: (srcCs, srcValues, dstCs) => {
322
+ // Basic color conversion via RGB intermediate (FFI would use ICC profiles)
323
+ let rgb;
324
+ switch (srcCs.type) {
325
+ case 'GRAY':
326
+ rgb = [srcValues[0] ?? 0, srcValues[0] ?? 0, srcValues[0] ?? 0];
327
+ break;
328
+ case 'RGB':
329
+ rgb = [srcValues[0] ?? 0, srcValues[1] ?? 0, srcValues[2] ?? 0];
330
+ break;
331
+ case 'BGR':
332
+ rgb = [srcValues[2] ?? 0, srcValues[1] ?? 0, srcValues[0] ?? 0];
333
+ break;
334
+ case 'CMYK': {
335
+ const c = srcValues[0] ?? 0, m = srcValues[1] ?? 0, y = srcValues[2] ?? 0, k = srcValues[3] ?? 0;
336
+ rgb = [(1 - c) * (1 - k), (1 - m) * (1 - k), (1 - y) * (1 - k)];
337
+ break;
338
+ }
339
+ default:
340
+ rgb = [0, 0, 0];
341
+ }
342
+ switch (dstCs.type) {
343
+ case 'GRAY':
344
+ return [0.2126 * rgb[0] + 0.7152 * rgb[1] + 0.0722 * rgb[2]];
345
+ case 'RGB':
346
+ return [...rgb];
347
+ case 'BGR':
348
+ return [rgb[2], rgb[1], rgb[0]];
349
+ case 'CMYK': {
350
+ const k = 1 - Math.max(rgb[0], rgb[1], rgb[2]);
351
+ if (k === 1)
352
+ return [0, 0, 0, 1];
353
+ return [
354
+ (1 - rgb[0] - k) / (1 - k),
355
+ (1 - rgb[1] - k) / (1 - k),
356
+ (1 - rgb[2] - k) / (1 - k),
357
+ k
358
+ ];
359
+ }
360
+ default:
361
+ return [];
362
+ }
363
+ },
364
+ // Pixmap
365
+ createPixmap: (colorspace, width, height, alpha) => {
366
+ const n = colorspace ? colorspace.n + (alpha ? 1 : 0) : alpha ? 1 : 0;
367
+ const stride = width * n;
368
+ return {
369
+ width,
370
+ height,
371
+ n,
372
+ alpha,
373
+ stride,
374
+ samples: new Uint8Array(stride * height)
375
+ };
376
+ },
377
+ pixmapWidth: (pm) => pm.width,
378
+ pixmapHeight: (pm) => pm.height,
379
+ pixmapN: (pm) => pm.n,
380
+ pixmapAlpha: (pm) => pm.alpha,
381
+ pixmapStride: (pm) => pm.stride,
382
+ pixmapSamples: (pm) => pm.samples,
383
+ clearPixmap: (pm) => {
384
+ pm.samples.fill(0);
385
+ },
386
+ clearPixmapWithValue: (pm, value) => {
387
+ pm.samples.fill(value);
388
+ },
389
+ invertPixmap: (pm) => {
390
+ const colorants = pm.alpha ? pm.n - 1 : pm.n;
391
+ for (let y = 0; y < pm.height; y++) {
392
+ for (let x = 0; x < pm.width; x++) {
393
+ const offset = y * pm.stride + x * pm.n;
394
+ for (let i = 0; i < colorants; i++) {
395
+ const idx = offset + i;
396
+ if (idx < pm.samples.length) {
397
+ pm.samples[idx] = 255 - (pm.samples[idx] ?? 0);
398
+ }
399
+ }
400
+ }
401
+ }
402
+ },
403
+ gammaPixmap: (pm, gamma) => {
404
+ const invGamma = 1 / gamma;
405
+ const colorants = pm.alpha ? pm.n - 1 : pm.n;
406
+ for (let y = 0; y < pm.height; y++) {
407
+ for (let x = 0; x < pm.width; x++) {
408
+ const offset = y * pm.stride + x * pm.n;
409
+ for (let i = 0; i < colorants; i++) {
410
+ const idx = offset + i;
411
+ if (idx < pm.samples.length) {
412
+ const normalized = (pm.samples[idx] ?? 0) / 255;
413
+ pm.samples[idx] = Math.round(Math.pow(normalized, invGamma) * 255);
414
+ }
415
+ }
416
+ }
417
+ }
418
+ },
419
+ // Context operations
420
+ createContext: requireFFI('createContext'),
421
+ dropContext: requireFFI('dropContext'),
422
+ // Document operations
423
+ openDocument: requireFFI('openDocument'),
424
+ openDocumentFromPath: requireFFI('openDocumentFromPath'),
425
+ dropDocument: requireFFI('dropDocument'),
426
+ countPages: requireFFI('countPages'),
427
+ loadPage: requireFFI('loadPage'),
428
+ dropPage: requireFFI('dropPage'),
429
+ boundPage: requireFFI('boundPage'),
430
+ getMetadata: requireFFI('getMetadata'),
431
+ setMetadata: requireFFI('setMetadata'),
432
+ saveDocument: requireFFI('saveDocument'),
433
+ writeDocument: requireFFI('writeDocument'),
434
+ // PDF Merging (Enhanced API)
435
+ npMergePDFs: requireFFI('npMergePDFs'),
436
+ // Rendering operations
437
+ renderPage: requireFFI('renderPage'),
438
+ renderPageToPNG: requireFFI('renderPageToPNG'),
439
+ // Text extraction
440
+ extractText: requireFFI('extractText'),
441
+ extractTextBlocks: requireFFI('extractTextBlocks'),
442
+ searchText: requireFFI('searchText'),
443
+ // Structured text
444
+ newSTextPage: requireFFI('newSTextPage'),
445
+ dropSTextPage: requireFFI('dropSTextPage'),
446
+ getSTextAsText: requireFFI('getSTextAsText'),
447
+ searchSTextPage: requireFFI('searchSTextPage'),
448
+ getSTextPageBounds: requireFFI('getSTextPageBounds'),
449
+ // Links
450
+ getPageLinks: requireFFI('getPageLinks'),
451
+ // Authentication
452
+ needsPassword: requireFFI('needsPassword'),
453
+ authenticatePassword: requireFFI('authenticatePassword'),
454
+ hasPermission: requireFFI('hasPermission'),
455
+ resolveLink: requireFFI('resolveLink'),
456
+ // Font operations
457
+ loadFontFromMemory: requireFFI('loadFontFromMemory'),
458
+ loadFontFromFile: requireFFI('loadFontFromFile'),
459
+ dropFont: requireFFI('dropFont'),
460
+ getFontName: requireFFI('getFontName'),
461
+ getFontBBox: requireFFI('getFontBBox'),
462
+ // Image operations
463
+ loadImageFromMemory: requireFFI('loadImageFromMemory'),
464
+ loadImageFromFile: requireFFI('loadImageFromFile'),
465
+ dropImage: requireFFI('dropImage'),
466
+ getImageWidth: requireFFI('getImageWidth'),
467
+ getImageHeight: requireFFI('getImageHeight'),
468
+ getImageColorspace: requireFFI('getImageColorspace'),
469
+ getImagePixmap: requireFFI('getImagePixmap'),
470
+ scalePixmap: requireFFI('scalePixmap'),
471
+ // Output operations
472
+ openOutput: requireFFI('openOutput'),
473
+ dropOutput: requireFFI('dropOutput'),
474
+ writeOutput: requireFFI('writeOutput'),
475
+ tellOutput: requireFFI('tellOutput'),
476
+ seekOutput: requireFFI('seekOutput'),
477
+ // Archive operations
478
+ openArchive: requireFFI('openArchive'),
479
+ openArchiveFromMemory: requireFFI('openArchiveFromMemory'),
480
+ dropArchive: requireFFI('dropArchive'),
481
+ countArchiveEntries: requireFFI('countArchiveEntries'),
482
+ listArchiveEntry: requireFFI('listArchiveEntry'),
483
+ hasArchiveEntry: requireFFI('hasArchiveEntry'),
484
+ readArchiveEntry: requireFFI('readArchiveEntry'),
485
+ // Enhanced API (mp_* functions)
486
+ npAddBlankPage: requireFFI('npAddBlankPage'),
487
+ npAddWatermark: requireFFI('npAddWatermark'),
488
+ npDrawLine: requireFFI('npDrawLine'),
489
+ npDrawRectangle: requireFFI('npDrawRectangle'),
490
+ npDrawCircle: requireFFI('npDrawCircle'),
491
+ npSplitPDF: requireFFI('npSplitPDF'),
492
+ npOptimizePDF: requireFFI('npOptimizePDF'),
493
+ npLinearizePDF: requireFFI('npLinearizePDF')
494
+ };
495
+ }
496
+ // Load native addon or fall back to mock
497
+ let addon;
498
+ const native = tryLoadNative();
499
+ if (native !== null) {
500
+ addon = native;
501
+ }
502
+ else {
503
+ console.warn('MicroPDF: Native addon not found, using mock implementation');
504
+ addon = createMockAddon();
505
+ }
506
+ export const native_addon = addon;
507
+ export const isMock = native === null;
508
+ export { addon as native };
509
+ //# sourceMappingURL=native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}