@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
@@ -0,0 +1,229 @@
1
+ /**
2
+ * MicroPDF Output Bindings
3
+ *
4
+ * N-API bindings for output operations.
5
+ * Outputs provide sequential data writing to files or memory.
6
+ */
7
+
8
+ #include <napi.h>
9
+ #include "include/mupdf_minimal.h"
10
+
11
+ /**
12
+ * Create output to file
13
+ *
14
+ * @param ctx - Context handle
15
+ * @param filename - Path to file
16
+ * @param append - Append mode (0=overwrite, 1=append)
17
+ * @returns Output handle
18
+ */
19
+ Napi::BigInt NewOutputWithPath(const Napi::CallbackInfo& info) {
20
+ Napi::Env env = info.Env();
21
+
22
+ if (info.Length() < 3) {
23
+ Napi::TypeError::New(env, "Expected 3 arguments: ctx, filename, append")
24
+ .ThrowAsJavaScriptException();
25
+ return Napi::BigInt::New(env, static_cast<uint64_t>(0));
26
+ }
27
+
28
+ bool lossless;
29
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
30
+ std::string filename = info[1].As<Napi::String>().Utf8Value();
31
+ int32_t append = info[2].As<Napi::Boolean>().Value() ? 1 : 0;
32
+
33
+ uint64_t output_handle = fz_new_output_with_path(ctx_handle, filename.c_str(), append);
34
+
35
+ return Napi::BigInt::New(env, output_handle);
36
+ }
37
+
38
+ /**
39
+ * Create output to buffer
40
+ *
41
+ * @param ctx - Context handle
42
+ * @param buffer - Buffer handle
43
+ * @returns Output handle
44
+ */
45
+ Napi::BigInt NewOutputWithBuffer(const Napi::CallbackInfo& info) {
46
+ Napi::Env env = info.Env();
47
+
48
+ if (info.Length() < 2) {
49
+ Napi::TypeError::New(env, "Expected 2 arguments: ctx, buffer")
50
+ .ThrowAsJavaScriptException();
51
+ return Napi::BigInt::New(env, static_cast<uint64_t>(0));
52
+ }
53
+
54
+ bool lossless;
55
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
56
+ uint64_t buffer_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
57
+
58
+ uint64_t output_handle = fz_new_output_with_buffer(ctx_handle, buffer_handle);
59
+
60
+ return Napi::BigInt::New(env, output_handle);
61
+ }
62
+
63
+ /**
64
+ * Drop output handle
65
+ *
66
+ * @param ctx - Context handle
67
+ * @param output - Output handle
68
+ */
69
+ Napi::Value DropOutput(const Napi::CallbackInfo& info) {
70
+ Napi::Env env = info.Env();
71
+
72
+ if (info.Length() < 2) {
73
+ Napi::TypeError::New(env, "Expected 2 arguments: ctx, output")
74
+ .ThrowAsJavaScriptException();
75
+ return env.Undefined();
76
+ }
77
+
78
+ bool lossless;
79
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
80
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
81
+
82
+ fz_drop_output(ctx_handle, output_handle);
83
+
84
+ return env.Undefined();
85
+ }
86
+
87
+ /**
88
+ * Write data to output
89
+ *
90
+ * @param ctx - Context handle
91
+ * @param output - Output handle
92
+ * @param data - Buffer containing data to write
93
+ */
94
+ Napi::Value WriteData(const Napi::CallbackInfo& info) {
95
+ Napi::Env env = info.Env();
96
+
97
+ if (info.Length() < 3) {
98
+ Napi::TypeError::New(env, "Expected 3 arguments: ctx, output, data")
99
+ .ThrowAsJavaScriptException();
100
+ return env.Undefined();
101
+ }
102
+
103
+ bool lossless;
104
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
105
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
106
+ Napi::Buffer<uint8_t> buffer = info[2].As<Napi::Buffer<uint8_t>>();
107
+
108
+ fz_write_data(ctx_handle, output_handle, buffer.Data(), buffer.Length());
109
+
110
+ return env.Undefined();
111
+ }
112
+
113
+ /**
114
+ * Write string to output
115
+ *
116
+ * @param ctx - Context handle
117
+ * @param output - Output handle
118
+ * @param str - String to write
119
+ */
120
+ Napi::Value WriteString(const Napi::CallbackInfo& info) {
121
+ Napi::Env env = info.Env();
122
+
123
+ if (info.Length() < 3) {
124
+ Napi::TypeError::New(env, "Expected 3 arguments: ctx, output, str")
125
+ .ThrowAsJavaScriptException();
126
+ return env.Undefined();
127
+ }
128
+
129
+ bool lossless;
130
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
131
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
132
+ std::string str = info[2].As<Napi::String>().Utf8Value();
133
+
134
+ fz_write_string(ctx_handle, output_handle, str.c_str());
135
+
136
+ return env.Undefined();
137
+ }
138
+
139
+ /**
140
+ * Write single byte to output
141
+ *
142
+ * @param ctx - Context handle
143
+ * @param output - Output handle
144
+ * @param byte - Byte value (0-255)
145
+ */
146
+ Napi::Value WriteByte(const Napi::CallbackInfo& info) {
147
+ Napi::Env env = info.Env();
148
+
149
+ if (info.Length() < 3) {
150
+ Napi::TypeError::New(env, "Expected 3 arguments: ctx, output, byte")
151
+ .ThrowAsJavaScriptException();
152
+ return env.Undefined();
153
+ }
154
+
155
+ bool lossless;
156
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
157
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
158
+ uint8_t byte = static_cast<uint8_t>(info[2].As<Napi::Number>().Uint32Value());
159
+
160
+ fz_write_byte(ctx_handle, output_handle, byte);
161
+
162
+ return env.Undefined();
163
+ }
164
+
165
+ /**
166
+ * Close output (flush and close file)
167
+ *
168
+ * @param ctx - Context handle
169
+ * @param output - Output handle
170
+ */
171
+ Napi::Value CloseOutput(const Napi::CallbackInfo& info) {
172
+ Napi::Env env = info.Env();
173
+
174
+ if (info.Length() < 2) {
175
+ Napi::TypeError::New(env, "Expected 2 arguments: ctx, output")
176
+ .ThrowAsJavaScriptException();
177
+ return env.Undefined();
178
+ }
179
+
180
+ bool lossless;
181
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
182
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
183
+
184
+ fz_close_output(ctx_handle, output_handle);
185
+
186
+ return env.Undefined();
187
+ }
188
+
189
+ /**
190
+ * Tell current position in output
191
+ *
192
+ * @param ctx - Context handle
193
+ * @param output - Output handle
194
+ * @returns Current position
195
+ */
196
+ Napi::Number TellOutput(const Napi::CallbackInfo& info) {
197
+ Napi::Env env = info.Env();
198
+
199
+ if (info.Length() < 2) {
200
+ Napi::TypeError::New(env, "Expected 2 arguments: ctx, output")
201
+ .ThrowAsJavaScriptException();
202
+ return Napi::Number::New(env, 0);
203
+ }
204
+
205
+ bool lossless;
206
+ uint64_t ctx_handle = info[0].As<Napi::BigInt>().Uint64Value(&lossless);
207
+ uint64_t output_handle = info[1].As<Napi::BigInt>().Uint64Value(&lossless);
208
+
209
+ int64_t position = fz_tell_output(ctx_handle, output_handle);
210
+
211
+ return Napi::Number::New(env, position);
212
+ }
213
+
214
+ /**
215
+ * Initialize Output module exports
216
+ */
217
+ Napi::Object InitOutput(Napi::Env env, Napi::Object exports) {
218
+ exports.Set("newOutputWithPath", Napi::Function::New(env, NewOutputWithPath));
219
+ exports.Set("newOutputWithBuffer", Napi::Function::New(env, NewOutputWithBuffer));
220
+ exports.Set("dropOutput", Napi::Function::New(env, DropOutput));
221
+ exports.Set("writeData", Napi::Function::New(env, WriteData));
222
+ exports.Set("writeString", Napi::Function::New(env, WriteString));
223
+ exports.Set("writeByte", Napi::Function::New(env, WriteByte));
224
+ exports.Set("closeOutput", Napi::Function::New(env, CloseOutput));
225
+ exports.Set("tellOutput", Napi::Function::New(env, TellOutput));
226
+
227
+ return exports;
228
+ }
229
+