@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
package/native/output.cc
ADDED
|
@@ -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
|
+
|