pdf-oxide 0.3.24 → 0.3.29

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
@@ -0,0 +1,140 @@
1
+ /**
2
+ * DocumentEditorManager for PDF document editing operations
3
+ *
4
+ * Provides methods to edit and modify PDF documents including page operations,
5
+ * content manipulation, and document merging. API is consistent with Python,
6
+ * Java, C#, Go, and Swift implementations.
7
+ */
8
+ import { EventEmitter } from 'events';
9
+ /**
10
+ * Page rotation options
11
+ */
12
+ export declare enum PageRotation {
13
+ None = 0,
14
+ Rotate90 = 90,
15
+ Rotate180 = 180,
16
+ Rotate270 = 270
17
+ }
18
+ /**
19
+ * Configuration for page insertion
20
+ */
21
+ export interface InsertConfig {
22
+ pageIndex: number;
23
+ width?: number;
24
+ height?: number;
25
+ content?: Buffer;
26
+ }
27
+ /**
28
+ * Configuration for page extraction
29
+ */
30
+ export interface ExtractConfig {
31
+ startPage: number;
32
+ endPage: number;
33
+ outputPath?: string;
34
+ }
35
+ /**
36
+ * Configuration for document merging
37
+ */
38
+ export interface MergeConfig {
39
+ documents: any[];
40
+ outputPath?: string;
41
+ preserveOutlines?: boolean;
42
+ preserveAnnotations?: boolean;
43
+ }
44
+ /**
45
+ * Edit operation record
46
+ */
47
+ export interface EditOperation {
48
+ type: string;
49
+ timestamp: Date;
50
+ details: Record<string, any>;
51
+ }
52
+ /**
53
+ * Document Editor Manager for document manipulation
54
+ *
55
+ * Provides methods to:
56
+ * - Delete, insert, and reorder pages
57
+ * - Rotate pages
58
+ * - Extract page ranges to new documents
59
+ * - Merge multiple documents
60
+ * - Track edit history
61
+ */
62
+ export declare class DocumentEditorManager extends EventEmitter {
63
+ private document;
64
+ private editHistory;
65
+ private hasUnsavedChanges;
66
+ constructor(document: any);
67
+ /**
68
+ * Deletes a page from the document
69
+ * Matches: Python deletePage(), Java deletePage(), C# DeletePage()
70
+ */
71
+ deletePage(pageIndex: number): Promise<void>;
72
+ /**
73
+ * Deletes multiple pages from the document
74
+ * Matches: Python deletePages(), Java deletePages(), C# DeletePages()
75
+ */
76
+ deletePages(pageIndices: number[]): Promise<void>;
77
+ /**
78
+ * Inserts a blank page at the specified position
79
+ * Matches: Python insertBlankPage(), Java insertBlankPage(), C# InsertBlankPage()
80
+ */
81
+ insertBlankPage(pageIndex: number, width?: number, height?: number): Promise<void>;
82
+ /**
83
+ * Rotates a page by the specified angle
84
+ * Matches: Python rotatePage(), Java rotatePage(), C# RotatePage()
85
+ */
86
+ rotatePage(pageIndex: number, rotation: PageRotation): Promise<void>;
87
+ /**
88
+ * Rotates multiple pages
89
+ * Matches: Python rotatePages(), Java rotatePages(), C# RotatePages()
90
+ */
91
+ rotatePages(pageIndices: number[], rotation: PageRotation): Promise<void>;
92
+ /**
93
+ * Moves a page to a new position
94
+ * Matches: Python movePage(), Java movePage(), C# MovePage()
95
+ */
96
+ movePage(fromIndex: number, toIndex: number): Promise<void>;
97
+ /**
98
+ * Extracts pages to a new document
99
+ * Matches: Python extractPages(), Java extractPages(), C# ExtractPages()
100
+ */
101
+ extractPages(config: ExtractConfig): Promise<any>;
102
+ /**
103
+ * Merges multiple documents into one
104
+ * Matches: Python mergeDocuments(), Java mergeDocuments(), C# MergeDocuments()
105
+ */
106
+ static mergeDocuments(config: MergeConfig): Promise<any>;
107
+ /**
108
+ * Saves the document with all modifications
109
+ * Matches: Python save(), Java save(), C# Save()
110
+ */
111
+ save(outputPath?: string): Promise<void>;
112
+ /**
113
+ * Gets the edit history
114
+ * Matches: Python getEditHistory(), Java getEditHistory(), C# GetEditHistory()
115
+ */
116
+ getEditHistory(): EditOperation[];
117
+ /**
118
+ * Checks if there are unsaved changes
119
+ * Matches: Python hasUnsavedChanges(), Java hasUnsavedChanges(), C# HasUnsavedChanges()
120
+ */
121
+ hasChanges(): boolean;
122
+ /**
123
+ * Undoes the last operation (if supported)
124
+ * Matches: Python undo(), Java undo(), C# Undo()
125
+ */
126
+ undo(): Promise<boolean>;
127
+ /**
128
+ * Clears the edit history
129
+ * Matches: Python clearHistory(), Java clearHistory(), C# ClearHistory()
130
+ */
131
+ clearHistory(): void;
132
+ /**
133
+ * Gets the page count after modifications
134
+ */
135
+ getPageCount(): number;
136
+ private validatePageIndex;
137
+ private recordOperation;
138
+ }
139
+ export default DocumentEditorManager;
140
+ //# sourceMappingURL=document-editor-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-editor-manager.d.ts","sourceRoot":"","sources":["../src/document-editor-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,oBAAY,YAAY;IACtB,IAAI,IAAI;IACR,QAAQ,KAAK;IACb,SAAS,MAAM;IACf,SAAS,MAAM;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,GAAG,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED;;;;;;;;;GASG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,iBAAiB,CAAS;gBAEtB,QAAQ,EAAE,GAAG;IAQzB;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAelD;;;OAGG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASvD;;;OAGG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,SAAM,EAAE,MAAM,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAalF;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAe1E;;;OAGG;IACG,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM/E;;;OAGG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBjE;;;OAGG;IACG,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC;IAcvD;;;OAGG;WACU,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAa9D;;;OAGG;IACG,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB9C;;;OAGG;IACH,cAAc,IAAI,aAAa,EAAE;IAIjC;;;OAGG;IACH,UAAU,IAAI,OAAO;IAIrB;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC;IAW9B;;;OAGG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,YAAY,IAAI,MAAM;IAStB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,eAAe;CAQxB;AAED,eAAe,qBAAqB,CAAC"}
@@ -0,0 +1,257 @@
1
+ /**
2
+ * DocumentEditorManager for PDF document editing operations
3
+ *
4
+ * Provides methods to edit and modify PDF documents including page operations,
5
+ * content manipulation, and document merging. API is consistent with Python,
6
+ * Java, C#, Go, and Swift implementations.
7
+ */
8
+ import { EventEmitter } from 'events';
9
+ /**
10
+ * Page rotation options
11
+ */
12
+ export var PageRotation;
13
+ (function (PageRotation) {
14
+ PageRotation[PageRotation["None"] = 0] = "None";
15
+ PageRotation[PageRotation["Rotate90"] = 90] = "Rotate90";
16
+ PageRotation[PageRotation["Rotate180"] = 180] = "Rotate180";
17
+ PageRotation[PageRotation["Rotate270"] = 270] = "Rotate270";
18
+ })(PageRotation || (PageRotation = {}));
19
+ /**
20
+ * Document Editor Manager for document manipulation
21
+ *
22
+ * Provides methods to:
23
+ * - Delete, insert, and reorder pages
24
+ * - Rotate pages
25
+ * - Extract page ranges to new documents
26
+ * - Merge multiple documents
27
+ * - Track edit history
28
+ */
29
+ export class DocumentEditorManager extends EventEmitter {
30
+ constructor(document) {
31
+ super();
32
+ this.editHistory = [];
33
+ this.hasUnsavedChanges = false;
34
+ if (!document) {
35
+ throw new Error('Document is required');
36
+ }
37
+ this.document = document;
38
+ }
39
+ /**
40
+ * Deletes a page from the document
41
+ * Matches: Python deletePage(), Java deletePage(), C# DeletePage()
42
+ */
43
+ async deletePage(pageIndex) {
44
+ this.validatePageIndex(pageIndex);
45
+ try {
46
+ if (this.document?.removePage) {
47
+ this.document.removePage(pageIndex);
48
+ }
49
+ this.recordOperation('deletePage', { pageIndex });
50
+ this.emit('pageDeleted', pageIndex);
51
+ }
52
+ catch (error) {
53
+ this.emit('error', error);
54
+ throw error;
55
+ }
56
+ }
57
+ /**
58
+ * Deletes multiple pages from the document
59
+ * Matches: Python deletePages(), Java deletePages(), C# DeletePages()
60
+ */
61
+ async deletePages(pageIndices) {
62
+ // Sort in descending order to avoid index shifting issues
63
+ const sorted = [...pageIndices].sort((a, b) => b - a);
64
+ for (const pageIndex of sorted) {
65
+ await this.deletePage(pageIndex);
66
+ }
67
+ }
68
+ /**
69
+ * Inserts a blank page at the specified position
70
+ * Matches: Python insertBlankPage(), Java insertBlankPage(), C# InsertBlankPage()
71
+ */
72
+ async insertBlankPage(pageIndex, width = 612, height = 792) {
73
+ try {
74
+ if (this.document?.insertPage) {
75
+ this.document.insertPage(pageIndex, width, height);
76
+ }
77
+ this.recordOperation('insertBlankPage', { pageIndex, width, height });
78
+ this.emit('pageInserted', pageIndex);
79
+ }
80
+ catch (error) {
81
+ this.emit('error', error);
82
+ throw error;
83
+ }
84
+ }
85
+ /**
86
+ * Rotates a page by the specified angle
87
+ * Matches: Python rotatePage(), Java rotatePage(), C# RotatePage()
88
+ */
89
+ async rotatePage(pageIndex, rotation) {
90
+ this.validatePageIndex(pageIndex);
91
+ try {
92
+ if (this.document?.rotatePage) {
93
+ this.document.rotatePage(pageIndex, rotation);
94
+ }
95
+ this.recordOperation('rotatePage', { pageIndex, rotation });
96
+ this.emit('pageRotated', pageIndex, rotation);
97
+ }
98
+ catch (error) {
99
+ this.emit('error', error);
100
+ throw error;
101
+ }
102
+ }
103
+ /**
104
+ * Rotates multiple pages
105
+ * Matches: Python rotatePages(), Java rotatePages(), C# RotatePages()
106
+ */
107
+ async rotatePages(pageIndices, rotation) {
108
+ for (const pageIndex of pageIndices) {
109
+ await this.rotatePage(pageIndex, rotation);
110
+ }
111
+ }
112
+ /**
113
+ * Moves a page to a new position
114
+ * Matches: Python movePage(), Java movePage(), C# MovePage()
115
+ */
116
+ async movePage(fromIndex, toIndex) {
117
+ this.validatePageIndex(fromIndex);
118
+ this.validatePageIndex(toIndex);
119
+ try {
120
+ // Implement move by extracting and re-inserting
121
+ if (this.document?.getPage && this.document?.removePage && this.document?.insertPage) {
122
+ const page = this.document.getPage(fromIndex);
123
+ this.document.removePage(fromIndex);
124
+ // Note: After removal, toIndex may need adjustment
125
+ const adjustedIndex = toIndex > fromIndex ? toIndex - 1 : toIndex;
126
+ if (page) {
127
+ this.document.insertPage(adjustedIndex, page.getWidth?.(), page.getHeight?.());
128
+ }
129
+ }
130
+ this.recordOperation('movePage', { fromIndex, toIndex });
131
+ this.emit('pageMoved', fromIndex, toIndex);
132
+ }
133
+ catch (error) {
134
+ this.emit('error', error);
135
+ throw error;
136
+ }
137
+ }
138
+ /**
139
+ * Extracts pages to a new document
140
+ * Matches: Python extractPages(), Java extractPages(), C# ExtractPages()
141
+ */
142
+ async extractPages(config) {
143
+ const { startPage, endPage } = config;
144
+ this.validatePageIndex(startPage);
145
+ this.validatePageIndex(endPage);
146
+ // FFI call placeholder
147
+ // const newDoc = await FFI.extractPages(this.document.handle, startPage, endPage);
148
+ this.recordOperation('extractPages', { startPage, endPage });
149
+ this.emit('pagesExtracted', startPage, endPage);
150
+ return null; // Placeholder - would return new document
151
+ }
152
+ /**
153
+ * Merges multiple documents into one
154
+ * Matches: Python mergeDocuments(), Java mergeDocuments(), C# MergeDocuments()
155
+ */
156
+ static async mergeDocuments(config) {
157
+ const { documents, preserveOutlines = true, preserveAnnotations = true } = config;
158
+ if (!documents || documents.length === 0) {
159
+ throw new Error('At least one document is required for merging');
160
+ }
161
+ // FFI call placeholder
162
+ // const merged = await FFI.mergeDocuments(documents, preserveOutlines, preserveAnnotations);
163
+ return null; // Placeholder - would return merged document
164
+ }
165
+ /**
166
+ * Saves the document with all modifications
167
+ * Matches: Python save(), Java save(), C# Save()
168
+ */
169
+ async save(outputPath) {
170
+ try {
171
+ if (outputPath) {
172
+ // Save to file path
173
+ if (this.document?.save_async) {
174
+ await this.document.save_async(outputPath);
175
+ }
176
+ else if (this.document?.saveToPath) {
177
+ this.document.saveToPath(outputPath);
178
+ }
179
+ }
180
+ else {
181
+ // Save changes to current document
182
+ if (this.document?.save_async) {
183
+ await this.document.save_async(this.document.filePath || 'output.pdf');
184
+ }
185
+ }
186
+ this.hasUnsavedChanges = false;
187
+ this.emit('saved', outputPath);
188
+ }
189
+ catch (error) {
190
+ this.emit('error', error);
191
+ throw error;
192
+ }
193
+ }
194
+ /**
195
+ * Gets the edit history
196
+ * Matches: Python getEditHistory(), Java getEditHistory(), C# GetEditHistory()
197
+ */
198
+ getEditHistory() {
199
+ return [...this.editHistory];
200
+ }
201
+ /**
202
+ * Checks if there are unsaved changes
203
+ * Matches: Python hasUnsavedChanges(), Java hasUnsavedChanges(), C# HasUnsavedChanges()
204
+ */
205
+ hasChanges() {
206
+ return this.hasUnsavedChanges;
207
+ }
208
+ /**
209
+ * Undoes the last operation (if supported)
210
+ * Matches: Python undo(), Java undo(), C# Undo()
211
+ */
212
+ async undo() {
213
+ if (this.editHistory.length === 0) {
214
+ return false;
215
+ }
216
+ // Placeholder - would implement undo logic
217
+ this.editHistory.pop();
218
+ this.emit('undone');
219
+ return true;
220
+ }
221
+ /**
222
+ * Clears the edit history
223
+ * Matches: Python clearHistory(), Java clearHistory(), C# ClearHistory()
224
+ */
225
+ clearHistory() {
226
+ this.editHistory = [];
227
+ this.emit('historyCleared');
228
+ }
229
+ /**
230
+ * Gets the page count after modifications
231
+ */
232
+ getPageCount() {
233
+ try {
234
+ return this.document.pageCount || 0;
235
+ }
236
+ catch {
237
+ return 0;
238
+ }
239
+ }
240
+ // Private helper methods
241
+ validatePageIndex(pageIndex) {
242
+ const count = this.getPageCount();
243
+ if (pageIndex < 0 || pageIndex >= count) {
244
+ throw new Error(`Invalid page index: ${pageIndex}. Document has ${count} pages.`);
245
+ }
246
+ }
247
+ recordOperation(type, details) {
248
+ this.editHistory.push({
249
+ type,
250
+ timestamp: new Date(),
251
+ details,
252
+ });
253
+ this.hasUnsavedChanges = true;
254
+ }
255
+ }
256
+ export default DocumentEditorManager;
257
+ //# sourceMappingURL=document-editor-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-editor-manager.js","sourceRoot":"","sources":["../src/document-editor-manager.ts"],"names":[],"mappings":"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"}