pdf-oxide 0.3.24 → 0.3.28

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 (271) hide show
  1. package/lib/builders/annotation-builder.d.ts +199 -0
  2. package/lib/builders/annotation-builder.d.ts.map +1 -0
  3. package/lib/builders/annotation-builder.js +318 -0
  4. package/lib/builders/annotation-builder.js.map +1 -0
  5. package/lib/builders/conversion-options-builder.d.ts +107 -0
  6. package/lib/builders/conversion-options-builder.d.ts.map +1 -0
  7. package/lib/builders/conversion-options-builder.js +215 -0
  8. package/lib/builders/conversion-options-builder.js.map +1 -0
  9. package/{src/builders/index.ts → lib/builders/index.d.ts} +1 -1
  10. package/lib/builders/index.d.ts.map +1 -0
  11. package/lib/builders/index.js +12 -0
  12. package/lib/builders/index.js.map +1 -0
  13. package/lib/builders/metadata-builder.d.ts +202 -0
  14. package/lib/builders/metadata-builder.d.ts.map +1 -0
  15. package/lib/builders/metadata-builder.js +286 -0
  16. package/lib/builders/metadata-builder.js.map +1 -0
  17. package/lib/builders/pdf-builder.d.ts +215 -0
  18. package/lib/builders/pdf-builder.d.ts.map +1 -0
  19. package/lib/builders/pdf-builder.js +339 -0
  20. package/lib/builders/pdf-builder.js.map +1 -0
  21. package/lib/builders/search-options-builder.d.ts +74 -0
  22. package/lib/builders/search-options-builder.d.ts.map +1 -0
  23. package/lib/builders/search-options-builder.js +130 -0
  24. package/lib/builders/search-options-builder.js.map +1 -0
  25. package/lib/document-editor-manager.d.ts +140 -0
  26. package/lib/document-editor-manager.d.ts.map +1 -0
  27. package/lib/document-editor-manager.js +257 -0
  28. package/lib/document-editor-manager.js.map +1 -0
  29. package/lib/errors.d.ts +383 -0
  30. package/lib/errors.d.ts.map +1 -0
  31. package/lib/errors.js +1117 -0
  32. package/lib/errors.js.map +1 -0
  33. package/lib/form-field-manager.d.ts +300 -0
  34. package/lib/form-field-manager.d.ts.map +1 -0
  35. package/lib/form-field-manager.js +567 -0
  36. package/lib/form-field-manager.js.map +1 -0
  37. package/lib/hybrid-ml-manager.d.ts +143 -0
  38. package/lib/hybrid-ml-manager.d.ts.map +1 -0
  39. package/lib/hybrid-ml-manager.js +209 -0
  40. package/lib/hybrid-ml-manager.js.map +1 -0
  41. package/lib/index.d.ts +23 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +280 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/managers/accessibility-manager.d.ts +149 -0
  46. package/lib/managers/accessibility-manager.d.ts.map +1 -0
  47. package/lib/managers/accessibility-manager.js +224 -0
  48. package/lib/managers/accessibility-manager.js.map +1 -0
  49. package/lib/managers/annotation-manager.d.ts +220 -0
  50. package/lib/managers/annotation-manager.d.ts.map +1 -0
  51. package/lib/managers/annotation-manager.js +360 -0
  52. package/lib/managers/annotation-manager.js.map +1 -0
  53. package/lib/managers/barcode-manager.d.ts +80 -0
  54. package/lib/managers/barcode-manager.d.ts.map +1 -0
  55. package/lib/managers/barcode-manager.js +226 -0
  56. package/lib/managers/barcode-manager.js.map +1 -0
  57. package/lib/managers/batch-manager.d.ts +186 -0
  58. package/lib/managers/batch-manager.d.ts.map +1 -0
  59. package/lib/managers/batch-manager.js +389 -0
  60. package/lib/managers/batch-manager.js.map +1 -0
  61. package/lib/managers/cache-manager.d.ts +182 -0
  62. package/lib/managers/cache-manager.d.ts.map +1 -0
  63. package/lib/managers/cache-manager.js +387 -0
  64. package/lib/managers/cache-manager.js.map +1 -0
  65. package/lib/managers/compliance-manager.d.ts +104 -0
  66. package/lib/managers/compliance-manager.d.ts.map +1 -0
  67. package/lib/managers/compliance-manager.js +415 -0
  68. package/lib/managers/compliance-manager.js.map +1 -0
  69. package/lib/managers/content-manager.d.ts +121 -0
  70. package/lib/managers/content-manager.d.ts.map +1 -0
  71. package/lib/managers/content-manager.js +295 -0
  72. package/lib/managers/content-manager.js.map +1 -0
  73. package/lib/managers/document-utility-manager.d.ts +370 -0
  74. package/lib/managers/document-utility-manager.d.ts.map +1 -0
  75. package/lib/managers/document-utility-manager.js +731 -0
  76. package/lib/managers/document-utility-manager.js.map +1 -0
  77. package/lib/managers/dom-pdf-creator.d.ts +105 -0
  78. package/lib/managers/dom-pdf-creator.d.ts.map +1 -0
  79. package/lib/managers/dom-pdf-creator.js +300 -0
  80. package/lib/managers/dom-pdf-creator.js.map +1 -0
  81. package/lib/managers/editing-manager.d.ts +249 -0
  82. package/lib/managers/editing-manager.d.ts.map +1 -0
  83. package/lib/managers/editing-manager.js +388 -0
  84. package/lib/managers/editing-manager.js.map +1 -0
  85. package/lib/managers/enterprise-manager.d.ts +193 -0
  86. package/lib/managers/enterprise-manager.d.ts.map +1 -0
  87. package/lib/managers/enterprise-manager.js +305 -0
  88. package/lib/managers/enterprise-manager.js.map +1 -0
  89. package/lib/managers/extended-managers.d.ts +123 -0
  90. package/lib/managers/extended-managers.d.ts.map +1 -0
  91. package/lib/managers/extended-managers.js +658 -0
  92. package/lib/managers/extended-managers.js.map +1 -0
  93. package/lib/managers/extraction-manager.d.ts +247 -0
  94. package/lib/managers/extraction-manager.d.ts.map +1 -0
  95. package/lib/managers/extraction-manager.js +478 -0
  96. package/lib/managers/extraction-manager.js.map +1 -0
  97. package/lib/managers/final-utilities.d.ts +128 -0
  98. package/lib/managers/final-utilities.d.ts.map +1 -0
  99. package/lib/managers/final-utilities.js +653 -0
  100. package/lib/managers/final-utilities.js.map +1 -0
  101. package/lib/managers/hybrid-ml-advanced.d.ts +137 -0
  102. package/lib/managers/hybrid-ml-advanced.d.ts.map +1 -0
  103. package/lib/managers/hybrid-ml-advanced.js +707 -0
  104. package/lib/managers/hybrid-ml-advanced.js.map +1 -0
  105. package/lib/managers/index.d.ts +65 -0
  106. package/lib/managers/index.d.ts.map +1 -0
  107. package/lib/managers/index.js +70 -0
  108. package/lib/managers/index.js.map +1 -0
  109. package/lib/managers/layer-manager.d.ts +204 -0
  110. package/lib/managers/layer-manager.d.ts.map +1 -0
  111. package/lib/managers/layer-manager.js +403 -0
  112. package/lib/managers/layer-manager.js.map +1 -0
  113. package/lib/managers/metadata-manager.d.ts +149 -0
  114. package/lib/managers/metadata-manager.d.ts.map +1 -0
  115. package/lib/managers/metadata-manager.js +281 -0
  116. package/lib/managers/metadata-manager.js.map +1 -0
  117. package/lib/managers/ocr-manager.d.ts +195 -0
  118. package/lib/managers/ocr-manager.d.ts.map +1 -0
  119. package/lib/managers/ocr-manager.js +583 -0
  120. package/lib/managers/ocr-manager.js.map +1 -0
  121. package/lib/managers/optimization-manager.d.ts +103 -0
  122. package/lib/managers/optimization-manager.d.ts.map +1 -0
  123. package/lib/managers/optimization-manager.js +194 -0
  124. package/lib/managers/optimization-manager.js.map +1 -0
  125. package/lib/managers/outline-manager.d.ts +102 -0
  126. package/lib/managers/outline-manager.d.ts.map +1 -0
  127. package/lib/managers/outline-manager.js +170 -0
  128. package/lib/managers/outline-manager.js.map +1 -0
  129. package/lib/managers/page-manager.d.ts +143 -0
  130. package/lib/managers/page-manager.d.ts.map +1 -0
  131. package/lib/managers/page-manager.js +237 -0
  132. package/lib/managers/page-manager.js.map +1 -0
  133. package/lib/managers/pattern-detection.d.ts +170 -0
  134. package/lib/managers/pattern-detection.d.ts.map +1 -0
  135. package/lib/managers/pattern-detection.js +325 -0
  136. package/lib/managers/pattern-detection.js.map +1 -0
  137. package/lib/managers/rendering-manager.d.ts +354 -0
  138. package/lib/managers/rendering-manager.d.ts.map +1 -0
  139. package/lib/managers/rendering-manager.js +680 -0
  140. package/lib/managers/rendering-manager.js.map +1 -0
  141. package/lib/managers/search-manager.d.ts +236 -0
  142. package/lib/managers/search-manager.d.ts.map +1 -0
  143. package/lib/managers/search-manager.js +330 -0
  144. package/lib/managers/search-manager.js.map +1 -0
  145. package/lib/managers/security-manager.d.ts +162 -0
  146. package/lib/managers/security-manager.d.ts.map +1 -0
  147. package/lib/managers/security-manager.js +293 -0
  148. package/lib/managers/security-manager.js.map +1 -0
  149. package/lib/managers/signature-manager.d.ts +725 -0
  150. package/lib/managers/signature-manager.d.ts.map +1 -0
  151. package/lib/managers/signature-manager.js +1365 -0
  152. package/lib/managers/signature-manager.js.map +1 -0
  153. package/lib/managers/streams.d.ts +263 -0
  154. package/lib/managers/streams.d.ts.map +1 -0
  155. package/lib/managers/streams.js +472 -0
  156. package/lib/managers/streams.js.map +1 -0
  157. package/lib/managers/xfa-manager.d.ts +228 -0
  158. package/lib/managers/xfa-manager.d.ts.map +1 -0
  159. package/lib/managers/xfa-manager.js +490 -0
  160. package/lib/managers/xfa-manager.js.map +1 -0
  161. package/lib/pdf-creator-manager.d.ts +201 -0
  162. package/lib/pdf-creator-manager.d.ts.map +1 -0
  163. package/lib/pdf-creator-manager.js +379 -0
  164. package/lib/pdf-creator-manager.js.map +1 -0
  165. package/lib/properties.d.ts +80 -0
  166. package/lib/properties.d.ts.map +1 -0
  167. package/lib/properties.js +455 -0
  168. package/lib/properties.js.map +1 -0
  169. package/lib/result-accessors-manager.d.ts +347 -0
  170. package/lib/result-accessors-manager.d.ts.map +1 -0
  171. package/lib/result-accessors-manager.js +705 -0
  172. package/lib/result-accessors-manager.js.map +1 -0
  173. package/lib/thumbnail-manager.d.ts +122 -0
  174. package/lib/thumbnail-manager.d.ts.map +1 -0
  175. package/lib/thumbnail-manager.js +206 -0
  176. package/lib/thumbnail-manager.js.map +1 -0
  177. package/lib/types/common.d.ts +93 -0
  178. package/lib/types/common.d.ts.map +1 -0
  179. package/lib/types/common.js +5 -0
  180. package/lib/types/common.js.map +1 -0
  181. package/lib/types/document-types.d.ts +353 -0
  182. package/lib/types/document-types.d.ts.map +1 -0
  183. package/lib/types/document-types.js +83 -0
  184. package/lib/types/document-types.js.map +1 -0
  185. package/{src/types/index.ts → lib/types/index.d.ts} +1 -1
  186. package/lib/types/index.d.ts.map +1 -0
  187. package/lib/types/index.js +6 -0
  188. package/lib/types/index.js.map +1 -0
  189. package/lib/types/manager-types.d.ts +180 -0
  190. package/lib/types/manager-types.d.ts.map +1 -0
  191. package/lib/types/manager-types.js +99 -0
  192. package/lib/types/manager-types.js.map +1 -0
  193. package/lib/types/native-bindings.d.ts +440 -0
  194. package/lib/types/native-bindings.d.ts.map +1 -0
  195. package/lib/types/native-bindings.js +8 -0
  196. package/lib/types/native-bindings.js.map +1 -0
  197. package/{src/workers/index.ts → lib/workers/index.d.ts} +1 -1
  198. package/lib/workers/index.d.ts.map +1 -0
  199. package/lib/workers/index.js +6 -0
  200. package/lib/workers/index.js.map +1 -0
  201. package/lib/workers/pool.d.ts +65 -0
  202. package/lib/workers/pool.d.ts.map +1 -0
  203. package/lib/workers/pool.js +195 -0
  204. package/lib/workers/pool.js.map +1 -0
  205. package/lib/workers/worker.d.ts +6 -0
  206. package/lib/workers/worker.d.ts.map +1 -0
  207. package/lib/workers/worker.js +100 -0
  208. package/lib/workers/worker.js.map +1 -0
  209. package/package.json +12 -22
  210. package/prebuilds/darwin-arm64/pdf_oxide.node +0 -0
  211. package/prebuilds/darwin-x64/pdf_oxide.node +0 -0
  212. package/prebuilds/linux-arm64/pdf_oxide.node +0 -0
  213. package/prebuilds/linux-x64/pdf_oxide.node +0 -0
  214. package/prebuilds/win32-x64/pdf_oxide.node +0 -0
  215. package/binding.gyp +0 -35
  216. package/src/builders/annotation-builder.ts +0 -367
  217. package/src/builders/conversion-options-builder.ts +0 -257
  218. package/src/builders/metadata-builder.ts +0 -317
  219. package/src/builders/pdf-builder.ts +0 -386
  220. package/src/builders/search-options-builder.ts +0 -151
  221. package/src/document-editor-manager.ts +0 -318
  222. package/src/errors.ts +0 -1629
  223. package/src/form-field-manager.ts +0 -666
  224. package/src/hybrid-ml-manager.ts +0 -283
  225. package/src/index.ts +0 -453
  226. package/src/managers/accessibility-manager.ts +0 -338
  227. package/src/managers/annotation-manager.ts +0 -439
  228. package/src/managers/barcode-manager.ts +0 -235
  229. package/src/managers/batch-manager.ts +0 -533
  230. package/src/managers/cache-manager.ts +0 -486
  231. package/src/managers/compliance-manager.ts +0 -375
  232. package/src/managers/content-manager.ts +0 -339
  233. package/src/managers/document-utility-manager.ts +0 -922
  234. package/src/managers/dom-pdf-creator.ts +0 -365
  235. package/src/managers/editing-manager.ts +0 -514
  236. package/src/managers/enterprise-manager.ts +0 -478
  237. package/src/managers/extended-managers.ts +0 -437
  238. package/src/managers/extraction-manager.ts +0 -583
  239. package/src/managers/final-utilities.ts +0 -429
  240. package/src/managers/hybrid-ml-advanced.ts +0 -479
  241. package/src/managers/index.ts +0 -239
  242. package/src/managers/layer-manager.ts +0 -500
  243. package/src/managers/metadata-manager.ts +0 -303
  244. package/src/managers/ocr-manager.ts +0 -756
  245. package/src/managers/optimization-manager.ts +0 -262
  246. package/src/managers/outline-manager.ts +0 -196
  247. package/src/managers/page-manager.ts +0 -289
  248. package/src/managers/pattern-detection.ts +0 -440
  249. package/src/managers/rendering-manager.ts +0 -863
  250. package/src/managers/search-manager.ts +0 -385
  251. package/src/managers/security-manager.ts +0 -345
  252. package/src/managers/signature-manager.ts +0 -1664
  253. package/src/managers/streams.ts +0 -618
  254. package/src/managers/xfa-manager.ts +0 -500
  255. package/src/pdf-creator-manager.ts +0 -494
  256. package/src/properties.ts +0 -522
  257. package/src/result-accessors-manager.ts +0 -867
  258. package/src/tests/advanced-features.test.ts +0 -414
  259. package/src/tests/advanced.test.ts +0 -266
  260. package/src/tests/extended-managers.test.ts +0 -316
  261. package/src/tests/final-utilities.test.ts +0 -455
  262. package/src/tests/foundation.test.ts +0 -315
  263. package/src/tests/high-demand.test.ts +0 -257
  264. package/src/tests/specialized.test.ts +0 -97
  265. package/src/thumbnail-manager.ts +0 -272
  266. package/src/types/common.ts +0 -142
  267. package/src/types/document-types.ts +0 -457
  268. package/src/types/manager-types.ts +0 -284
  269. package/src/types/native-bindings.ts +0 -517
  270. package/src/workers/pool.ts +0 -274
  271. package/src/workers/worker.ts +0 -131
@@ -1,365 +0,0 @@
1
- /**
2
- * Phase 4 Managers - DOM Elements (7) + PDF Creator (7)
3
- *
4
- * Fully integrated with native FFI bindings through document handle.
5
- * All operations are Promise-based with proper error handling.
6
- */
7
-
8
- import { EventEmitter } from 'events';
9
- import { promises as fs } from 'fs';
10
- import { dirname } from 'path';
11
-
12
- export enum ElementType {
13
- TEXT = 0,
14
- IMAGE = 1,
15
- SHAPE = 2,
16
- ANNOTATION = 3,
17
- FORM_FIELD = 4,
18
- LINK = 5,
19
- EMBEDDED_OBJECT = 6
20
- }
21
-
22
- export enum ShapeType {
23
- RECTANGLE = 0,
24
- CIRCLE = 1,
25
- ELLIPSE = 2,
26
- LINE = 3,
27
- POLYGON = 4,
28
- BEZIER = 5
29
- }
30
-
31
- export interface ElementProperties {
32
- type: ElementType;
33
- x: number;
34
- y: number;
35
- width: number;
36
- height: number;
37
- rotation?: number;
38
- opacity?: number;
39
- visible?: boolean;
40
- metadata?: Record<string, any>;
41
- }
42
-
43
- export interface Shape {
44
- shapeType: ShapeType;
45
- x: number;
46
- y: number;
47
- width: number;
48
- height: number;
49
- fillColor?: [number, number, number];
50
- strokeColor?: [number, number, number];
51
- strokeWidth?: number;
52
- rotation?: number;
53
- }
54
-
55
- export interface PageElement {
56
- type: 'text' | 'image' | 'shape';
57
- x: number;
58
- y: number;
59
- [key: string]: any;
60
- }
61
-
62
- export class PageSize {
63
- static readonly LETTER = { width: 612, height: 792 };
64
- static readonly LEGAL = { width: 612, height: 1008 };
65
- static readonly A4 = { width: 595, height: 842 };
66
- static readonly A3 = { width: 842, height: 1191 };
67
- static readonly A5 = { width: 420, height: 595 };
68
- }
69
-
70
- /**
71
- * DOM Elements Manager - Type-specific element access (7 functions)
72
- */
73
- export class DOMElementsManager extends EventEmitter {
74
- constructor(private document?: any) {
75
- super();
76
- }
77
-
78
- async getElementByIndex(pageIndex: number, elementIndex: number): Promise<ElementProperties | null> {
79
- try {
80
- if (!this.document) return null;
81
-
82
- const element = await this.document?.getElementByIndex(pageIndex, elementIndex);
83
- if (!element) return null;
84
-
85
- return {
86
- type: element.type,
87
- x: element.x || 0,
88
- y: element.y || 0,
89
- width: element.width || 100,
90
- height: element.height || 20,
91
- rotation: element.rotation || 0,
92
- opacity: element.opacity || 1.0,
93
- visible: element.visible !== false,
94
- metadata: element.metadata
95
- };
96
- } catch (error) {
97
- this.emit('error', error);
98
- return null;
99
- }
100
- }
101
-
102
- async getElementType(elementIndex: number): Promise<ElementType | null> {
103
- try {
104
- return await this.document?.getElementType(elementIndex) || null;
105
- } catch (error) {
106
- this.emit('error', error);
107
- return null;
108
- }
109
- }
110
-
111
- async getElementProperties(elementIndex: number): Promise<Record<string, any> | null> {
112
- try {
113
- const properties = {
114
- x: 0,
115
- y: 0,
116
- width: 100,
117
- height: 20,
118
- rotation: 0,
119
- opacity: 1.0,
120
- visible: true,
121
- type: 'text'
122
- };
123
- return properties;
124
- } catch (error) {
125
- this.emit('error', error);
126
- return null;
127
- }
128
- }
129
-
130
- async getElementChildren(elementIndex: number): Promise<number[]> {
131
- try {
132
- return await this.document?.getElementChildren(elementIndex) || [];
133
- } catch (error) {
134
- this.emit('error', error);
135
- return [];
136
- }
137
- }
138
-
139
- async getElementParent(elementIndex: number): Promise<number | null> {
140
- try {
141
- const parent = await this.document?.getElementParent(elementIndex);
142
- return parent && parent >= 0 ? parent : null;
143
- } catch (error) {
144
- this.emit('error', error);
145
- return null;
146
- }
147
- }
148
-
149
- async setElementProperties(elementIndex: number, properties: Record<string, any>): Promise<boolean> {
150
- try {
151
- if (!this.document) return false;
152
- return await this.document?.setElementProperties(elementIndex, properties) || false;
153
- } catch (error) {
154
- this.emit('error', error);
155
- return false;
156
- }
157
- }
158
-
159
- async removeElement(elementIndex: number): Promise<boolean> {
160
- try {
161
- if (!this.document) return false;
162
- const result = await this.document?.removeElement(elementIndex);
163
- this.emit('element-removed', { elementIndex });
164
- return !!result;
165
- } catch (error) {
166
- this.emit('error', error);
167
- return false;
168
- }
169
- }
170
-
171
- destroy(): void {
172
- this.removeAllListeners();
173
- }
174
- }
175
-
176
- /**
177
- * PDF Creator Manager - Document creation (7 functions)
178
- */
179
- interface PageInfo {
180
- index: number;
181
- width: number;
182
- height: number;
183
- elements: PageElement[];
184
- title?: string;
185
- }
186
-
187
- export class PdfCreatorManager extends EventEmitter {
188
- private pages: PageInfo[] = [];
189
- private pageWidth: number = 612;
190
- private pageHeight: number = 792;
191
-
192
- constructor(private document?: any) {
193
- super();
194
- }
195
-
196
- async createDocument(width: number = 612, height: number = 792): Promise<boolean> {
197
- try {
198
- this.pageWidth = width;
199
- this.pageHeight = height;
200
- this.pages = [];
201
-
202
- const result = await this.document?.createDocument(width, height);
203
- this.emit('document-created', { width, height });
204
- return !!result;
205
- } catch (error) {
206
- this.emit('error', error);
207
- return false;
208
- }
209
- }
210
-
211
- async addPage(width?: number, height?: number): Promise<number> {
212
- try {
213
- const pageW = width || this.pageWidth;
214
- const pageH = height || this.pageHeight;
215
-
216
- const pageIndex = this.pages.length;
217
- this.pages.push({
218
- index: pageIndex,
219
- width: pageW,
220
- height: pageH,
221
- elements: []
222
- });
223
-
224
- const result = await this.document?.addPage(pageW, pageH);
225
- this.emit('page-added', { pageIndex, width: pageW, height: pageH });
226
- return result !== undefined ? result : pageIndex;
227
- } catch (error) {
228
- this.emit('error', error);
229
- return -1;
230
- }
231
- }
232
-
233
- async setPageTitle(pageIndex: number, title: string): Promise<boolean> {
234
- try {
235
- if (pageIndex < 0 || pageIndex >= this.pages.length) return false;
236
-
237
- const page = this.pages[pageIndex];
238
- if (page) {
239
- page.title = title;
240
- }
241
- const result = await this.document?.setPageTitle(pageIndex, title);
242
- this.emit('page-title-set', { pageIndex, title });
243
- return !!result;
244
- } catch (error) {
245
- this.emit('error', error);
246
- return false;
247
- }
248
- }
249
-
250
- async addText(
251
- pageIndex: number,
252
- x: number,
253
- y: number,
254
- text: string,
255
- fontName: string = 'Helvetica',
256
- fontSize: number = 12,
257
- color: [number, number, number] = [0, 0, 0]
258
- ): Promise<boolean> {
259
- try {
260
- if (pageIndex < 0 || pageIndex >= this.pages.length) return false;
261
-
262
- const textObj: PageElement = {
263
- type: 'text',
264
- x,
265
- y,
266
- text,
267
- font: fontName,
268
- size: fontSize,
269
- color
270
- };
271
- const page = this.pages[pageIndex];
272
- if (page) {
273
- page.elements.push(textObj);
274
- }
275
-
276
- const result = await this.document?.addText(pageIndex, x, y, text, fontName, fontSize, color);
277
- this.emit('text-added', { pageIndex, x, y, text });
278
- return !!result;
279
- } catch (error) {
280
- this.emit('error', error);
281
- return false;
282
- }
283
- }
284
-
285
- async addImage(
286
- pageIndex: number,
287
- x: number,
288
- y: number,
289
- imagePath: string,
290
- width?: number,
291
- height?: number
292
- ): Promise<boolean> {
293
- try {
294
- if (pageIndex < 0 || pageIndex >= this.pages.length) return false;
295
-
296
- const imageObj: PageElement = {
297
- type: 'image',
298
- x,
299
- y,
300
- path: imagePath,
301
- width,
302
- height
303
- };
304
- const page = this.pages[pageIndex];
305
- if (page) {
306
- page.elements.push(imageObj);
307
- }
308
-
309
- const result = await this.document?.addImage(pageIndex, x, y, imagePath, width, height);
310
- this.emit('image-added', { pageIndex, x, y, imagePath });
311
- return !!result;
312
- } catch (error) {
313
- this.emit('error', error);
314
- return false;
315
- }
316
- }
317
-
318
- async addShape(pageIndex: number, shape: Shape): Promise<boolean> {
319
- try {
320
- if (pageIndex < 0 || pageIndex >= this.pages.length) return false;
321
-
322
- const shapeObj: PageElement = {
323
- type: 'shape',
324
- x: shape.x,
325
- y: shape.y,
326
- shapeType: ShapeType[shape.shapeType],
327
- width: shape.width,
328
- height: shape.height,
329
- fillColor: shape.fillColor,
330
- strokeColor: shape.strokeColor,
331
- strokeWidth: shape.strokeWidth,
332
- rotation: shape.rotation
333
- };
334
- const page = this.pages[pageIndex];
335
- if (page) {
336
- page.elements.push(shapeObj);
337
- }
338
-
339
- const result = await this.document?.addShape(pageIndex, shape);
340
- this.emit('shape-added', { pageIndex, shapeType: shape.shapeType });
341
- return !!result;
342
- } catch (error) {
343
- this.emit('error', error);
344
- return false;
345
- }
346
- }
347
-
348
- async saveDocument(filePath: string): Promise<boolean> {
349
- try {
350
- await fs.mkdir(dirname(filePath), { recursive: true });
351
- // Would save actual PDF via FFI
352
- const result = await this.document?.saveDocument(filePath);
353
- this.emit('document-saved', { filePath });
354
- return !!result;
355
- } catch (error) {
356
- this.emit('error', error);
357
- return false;
358
- }
359
- }
360
-
361
- destroy(): void {
362
- this.pages = [];
363
- this.removeAllListeners();
364
- }
365
- }