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
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Manager for page-level content analysis
3
+ *
4
+ * Provides methods to analyze content type, complexity, and characteristics of PDF pages.
5
+ * This manager operates on a specific page, unlike document-level managers.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { ContentManager } from 'pdf_oxide';
10
+ *
11
+ * const doc = PdfDocument.open('document.pdf');
12
+ * const contentManager = new ContentManager(doc, 0);
13
+ *
14
+ * if (!contentManager.isBlank()) {
15
+ * console.log(contentManager.getContentSummary());
16
+ * }
17
+ * ```
18
+ */
19
+ export class ContentManager {
20
+ /**
21
+ * Creates a new ContentManager for a specific page
22
+ * @param document - The PDF document
23
+ * @param pageIndex - Page index to analyze (0-based)
24
+ * @throws Error if document is null or undefined
25
+ */
26
+ constructor(document, pageIndex) {
27
+ if (!document) {
28
+ throw new Error('Document is required');
29
+ }
30
+ if (typeof pageIndex !== 'number' || pageIndex < 0) {
31
+ throw new Error('Page index must be a non-negative number');
32
+ }
33
+ this._document = document;
34
+ this._pageIndex = pageIndex;
35
+ this._cache = new Map();
36
+ }
37
+ /**
38
+ * Gets the page index this manager operates on
39
+ * @returns Page index
40
+ */
41
+ get pageIndex() {
42
+ return this._pageIndex;
43
+ }
44
+ /**
45
+ * Clears the content cache
46
+ */
47
+ clearCache() {
48
+ this._cache.clear();
49
+ }
50
+ /**
51
+ * Checks if the page has any content
52
+ * @returns True if the page has content
53
+ */
54
+ hasContent() {
55
+ const cacheKey = `content:has:${this._pageIndex}`;
56
+ if (this._cache.has(cacheKey)) {
57
+ return this._cache.get(cacheKey);
58
+ }
59
+ try {
60
+ // Placeholder - would check via FFI
61
+ const has = true;
62
+ this._cache.set(cacheKey, has);
63
+ return has;
64
+ }
65
+ catch (error) {
66
+ return true;
67
+ }
68
+ }
69
+ /**
70
+ * Gets the approximate size of the content stream in bytes
71
+ * @returns Content size in bytes
72
+ */
73
+ getContentSize() {
74
+ const cacheKey = `content:size:${this._pageIndex}`;
75
+ if (this._cache.has(cacheKey)) {
76
+ return this._cache.get(cacheKey);
77
+ }
78
+ try {
79
+ // Placeholder - would call FFI
80
+ const size = 0;
81
+ this._cache.set(cacheKey, size);
82
+ return size;
83
+ }
84
+ catch (error) {
85
+ return 0;
86
+ }
87
+ }
88
+ /**
89
+ * Checks if the page appears to be blank (no visible content)
90
+ * @returns True if the page is blank
91
+ */
92
+ isBlank() {
93
+ const cacheKey = `content:blank:${this._pageIndex}`;
94
+ if (this._cache.has(cacheKey)) {
95
+ return this._cache.get(cacheKey);
96
+ }
97
+ try {
98
+ // Placeholder - would call FFI
99
+ const blank = false;
100
+ this._cache.set(cacheKey, blank);
101
+ return blank;
102
+ }
103
+ catch (error) {
104
+ return false;
105
+ }
106
+ }
107
+ /**
108
+ * Gets a complexity score for the page (0-100)
109
+ * Higher scores indicate more complex content.
110
+ * @returns Complexity score from 0 to 100
111
+ */
112
+ getComplexityScore() {
113
+ const cacheKey = `content:complexity:${this._pageIndex}`;
114
+ if (this._cache.has(cacheKey)) {
115
+ return this._cache.get(cacheKey);
116
+ }
117
+ try {
118
+ // Placeholder - would call FFI
119
+ const score = 0;
120
+ this._cache.set(cacheKey, score);
121
+ return score;
122
+ }
123
+ catch (error) {
124
+ return 0;
125
+ }
126
+ }
127
+ /**
128
+ * Gets a human-readable summary of page dimensions
129
+ * @returns Formatted dimensions string
130
+ */
131
+ getDimensionsSummary() {
132
+ const cacheKey = `content:dimensions:${this._pageIndex}`;
133
+ if (this._cache.has(cacheKey)) {
134
+ return this._cache.get(cacheKey);
135
+ }
136
+ try {
137
+ const page = this._document.getPage(this._pageIndex);
138
+ const width = page?.width || 612;
139
+ const height = page?.height || 792;
140
+ // Convert points to inches and mm
141
+ const widthInches = width / 72;
142
+ const heightInches = height / 72;
143
+ const widthMm = width * 0.352778;
144
+ const heightMm = height * 0.352778;
145
+ const summary = `${width.toFixed(0)} x ${height.toFixed(0)} pt ` +
146
+ `(${widthInches.toFixed(2)} x ${heightInches.toFixed(2)} in, ` +
147
+ `${widthMm.toFixed(0)} x ${heightMm.toFixed(0)} mm)`;
148
+ this._cache.set(cacheKey, summary);
149
+ return summary;
150
+ }
151
+ catch (error) {
152
+ return '0 x 0 pt';
153
+ }
154
+ }
155
+ /**
156
+ * Checks if the page likely contains form fields
157
+ * @returns True if the page likely has forms
158
+ */
159
+ likelyHasForms() {
160
+ const cacheKey = `content:likely_forms:${this._pageIndex}`;
161
+ if (this._cache.has(cacheKey)) {
162
+ return this._cache.get(cacheKey);
163
+ }
164
+ try {
165
+ // Placeholder - would call FFI
166
+ const has = false;
167
+ this._cache.set(cacheKey, has);
168
+ return has;
169
+ }
170
+ catch (error) {
171
+ return false;
172
+ }
173
+ }
174
+ /**
175
+ * Checks if the page likely contains tables
176
+ * @returns True if the page likely has tables
177
+ */
178
+ likelyHasTables() {
179
+ const cacheKey = `content:likely_tables:${this._pageIndex}`;
180
+ if (this._cache.has(cacheKey)) {
181
+ return this._cache.get(cacheKey);
182
+ }
183
+ try {
184
+ // Placeholder - would call FFI
185
+ const has = false;
186
+ this._cache.set(cacheKey, has);
187
+ return has;
188
+ }
189
+ catch (error) {
190
+ return false;
191
+ }
192
+ }
193
+ /**
194
+ * Checks if the page likely contains images
195
+ * @returns True if the page likely has images
196
+ */
197
+ likelyHasImages() {
198
+ const cacheKey = `content:likely_images:${this._pageIndex}`;
199
+ if (this._cache.has(cacheKey)) {
200
+ return this._cache.get(cacheKey);
201
+ }
202
+ try {
203
+ // Placeholder - would call FFI
204
+ const has = false;
205
+ this._cache.set(cacheKey, has);
206
+ return has;
207
+ }
208
+ catch (error) {
209
+ return false;
210
+ }
211
+ }
212
+ /**
213
+ * Gets a list of content types detected on the page
214
+ * @returns Array of content type strings
215
+ *
216
+ * @example
217
+ * ```typescript
218
+ * const types = manager.getContentTypes();
219
+ * console.log(`Content types: ${types.join(', ')}`);
220
+ * ```
221
+ */
222
+ getContentTypes() {
223
+ const cacheKey = `content:types:${this._pageIndex}`;
224
+ if (this._cache.has(cacheKey)) {
225
+ return this._cache.get(cacheKey);
226
+ }
227
+ const types = [];
228
+ if (!this.hasContent()) {
229
+ types.push('empty');
230
+ }
231
+ else {
232
+ types.push('text'); // Most pages have text
233
+ if (this.likelyHasImages()) {
234
+ types.push('images');
235
+ }
236
+ if (this.likelyHasTables()) {
237
+ types.push('tables');
238
+ }
239
+ if (this.likelyHasForms()) {
240
+ types.push('forms');
241
+ }
242
+ }
243
+ this._cache.set(cacheKey, types);
244
+ return types;
245
+ }
246
+ /**
247
+ * Gets a human-readable summary of the page content
248
+ * @returns Formatted content summary string
249
+ *
250
+ * @example
251
+ * ```typescript
252
+ * const summary = manager.getContentSummary();
253
+ * console.log(summary);
254
+ * // Output: "Dimensions: 612 x 792 pt; Content: text, images; Complexity: 45/100"
255
+ * ```
256
+ */
257
+ getContentSummary() {
258
+ const cacheKey = `content:summary:${this._pageIndex}`;
259
+ if (this._cache.has(cacheKey)) {
260
+ return this._cache.get(cacheKey);
261
+ }
262
+ if (this.isBlank()) {
263
+ return 'Blank page';
264
+ }
265
+ const parts = [];
266
+ const dimensions = this.getDimensionsSummary();
267
+ parts.push(`Dimensions: ${dimensions}`);
268
+ const contentTypes = this.getContentTypes();
269
+ parts.push(`Content: ${contentTypes.join(', ')}`);
270
+ const complexity = this.getComplexityScore();
271
+ parts.push(`Complexity: ${complexity}/100`);
272
+ const summary = parts.join('; ');
273
+ this._cache.set(cacheKey, summary);
274
+ return summary;
275
+ }
276
+ /**
277
+ * Analyzes page content thoroughly
278
+ * @returns Detailed content analysis
279
+ */
280
+ analyze() {
281
+ return {
282
+ pageIndex: this._pageIndex,
283
+ hasContent: this.hasContent(),
284
+ isBlank: this.isBlank(),
285
+ contentSize: this.getContentSize(),
286
+ complexityScore: this.getComplexityScore(),
287
+ dimensions: this.getDimensionsSummary(),
288
+ contentTypes: this.getContentTypes(),
289
+ likelyHasForms: this.likelyHasForms(),
290
+ likelyHasTables: this.likelyHasTables(),
291
+ likelyHasImages: this.likelyHasImages(),
292
+ };
293
+ }
294
+ }
295
+ //# sourceMappingURL=content-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-manager.js","sourceRoot":"","sources":["../../src/managers/content-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,370 @@
1
+ /**
2
+ * Document Utility Manager - Document optimization and manipulation utilities
3
+ *
4
+ * Provides comprehensive document utilities:
5
+ * - Document optimization and compression
6
+ * - PDF linearization (fast web view)
7
+ * - Font optimization and subsetting
8
+ * - Image optimization and recompression
9
+ * - Page manipulation utilities
10
+ * - Document repair
11
+ * - Resource cleanup
12
+ *
13
+ * This completes the document utility coverage for 100% FFI parity.
14
+ */
15
+ import { EventEmitter } from 'events';
16
+ /**
17
+ * Optimization level enumeration
18
+ */
19
+ export declare enum OptimizationLevel {
20
+ /** No optimization */
21
+ NONE = "none",
22
+ /** Light optimization - fast, minimal size reduction */
23
+ LIGHT = "light",
24
+ /** Balanced optimization - good balance of speed and size */
25
+ BALANCED = "balanced",
26
+ /** Aggressive optimization - maximum size reduction, slower */
27
+ AGGRESSIVE = "aggressive",
28
+ /** Maximum optimization - smallest possible size */
29
+ MAXIMUM = "maximum"
30
+ }
31
+ /**
32
+ * Image compression type
33
+ */
34
+ export declare enum ImageCompressionType {
35
+ NONE = "none",
36
+ JPEG = "jpeg",
37
+ JPEG2000 = "jpeg2000",
38
+ JBIG2 = "jbig2",
39
+ FLATE = "flate",
40
+ LZW = "lzw",
41
+ RUN_LENGTH = "run_length",
42
+ CCITT_FAX = "ccitt_fax"
43
+ }
44
+ /**
45
+ * Color space type
46
+ */
47
+ export declare enum ColorSpaceType {
48
+ RGB = "rgb",
49
+ CMYK = "cmyk",
50
+ GRAYSCALE = "grayscale",
51
+ INDEXED = "indexed"
52
+ }
53
+ /**
54
+ * Font embedding mode
55
+ */
56
+ export declare enum FontEmbeddingMode {
57
+ /** Embed full fonts */
58
+ FULL = "full",
59
+ /** Embed subset of used glyphs only */
60
+ SUBSET = "subset",
61
+ /** Remove all font embedding */
62
+ REMOVE = "remove"
63
+ }
64
+ /**
65
+ * Page range specification
66
+ */
67
+ export interface PageRange {
68
+ readonly start: number;
69
+ readonly end: number;
70
+ }
71
+ /**
72
+ * Optimization options
73
+ */
74
+ export interface OptimizationOptions {
75
+ readonly level?: OptimizationLevel;
76
+ readonly compressImages?: boolean;
77
+ readonly imageQuality?: number;
78
+ readonly imageCompression?: ImageCompressionType;
79
+ readonly downsampleImages?: boolean;
80
+ readonly maxImageDpi?: number;
81
+ readonly removeUnusedObjects?: boolean;
82
+ readonly removeMetadata?: boolean;
83
+ readonly removeThumbnails?: boolean;
84
+ readonly removeBookmarks?: boolean;
85
+ readonly removeAnnotations?: boolean;
86
+ readonly removeJavaScript?: boolean;
87
+ readonly removeFormFields?: boolean;
88
+ readonly removeEmbeddedFiles?: boolean;
89
+ readonly linearize?: boolean;
90
+ readonly fontEmbedding?: FontEmbeddingMode;
91
+ readonly convertColorSpace?: ColorSpaceType;
92
+ readonly flattenTransparency?: boolean;
93
+ }
94
+ /**
95
+ * Compression options
96
+ */
97
+ export interface CompressionOptions {
98
+ readonly compressStreams?: boolean;
99
+ readonly compressObjects?: boolean;
100
+ readonly algorithm?: 'flate' | 'lzw' | 'none';
101
+ readonly level?: number;
102
+ }
103
+ /**
104
+ * Image optimization options
105
+ */
106
+ export interface ImageOptimizationOptions {
107
+ readonly maxDpi?: number;
108
+ readonly minDpi?: number;
109
+ readonly targetQuality?: number;
110
+ readonly targetFormat?: ImageCompressionType;
111
+ readonly convertColor?: ColorSpaceType;
112
+ readonly removeIccProfiles?: boolean;
113
+ }
114
+ /**
115
+ * Font optimization options
116
+ */
117
+ export interface FontOptimizationOptions {
118
+ readonly mode?: FontEmbeddingMode;
119
+ readonly removeUnusedFonts?: boolean;
120
+ readonly mergeSubsets?: boolean;
121
+ readonly convertToType1?: boolean;
122
+ readonly convertToOpenType?: boolean;
123
+ }
124
+ /**
125
+ * Linearization options
126
+ */
127
+ export interface LinearizationOptions {
128
+ readonly firstPageEnd?: number;
129
+ readonly primaryHint?: boolean;
130
+ readonly overflowHint?: boolean;
131
+ }
132
+ /**
133
+ * Optimization result
134
+ */
135
+ export interface OptimizationResult {
136
+ readonly success: boolean;
137
+ readonly originalSize: number;
138
+ readonly optimizedSize: number;
139
+ readonly reductionPercent: number;
140
+ readonly reductionBytes: number;
141
+ readonly duration: number;
142
+ readonly details?: {
143
+ readonly imagesOptimized?: number;
144
+ readonly fontsOptimized?: number;
145
+ readonly objectsRemoved?: number;
146
+ readonly streamsCompressed?: number;
147
+ };
148
+ readonly error?: string;
149
+ readonly warnings?: readonly string[];
150
+ }
151
+ /**
152
+ * Document repair result
153
+ */
154
+ export interface RepairResult {
155
+ readonly success: boolean;
156
+ readonly issuesFound: number;
157
+ readonly issuesFixed: number;
158
+ readonly issues: readonly string[];
159
+ readonly error?: string;
160
+ }
161
+ /**
162
+ * Document statistics
163
+ */
164
+ export interface DocumentStatistics {
165
+ readonly pageCount: number;
166
+ readonly fileSize: number;
167
+ readonly objectCount: number;
168
+ readonly streamCount: number;
169
+ readonly imageCount: number;
170
+ readonly fontCount: number;
171
+ readonly annotationCount: number;
172
+ readonly bookmarkCount: number;
173
+ readonly embeddedFileCount: number;
174
+ readonly formFieldCount: number;
175
+ readonly signatureCount: number;
176
+ readonly hasJavaScript: boolean;
177
+ readonly hasXfa: boolean;
178
+ readonly isLinearized: boolean;
179
+ readonly isEncrypted: boolean;
180
+ readonly pdfVersion: string;
181
+ }
182
+ /**
183
+ * Page information
184
+ */
185
+ export interface PageInfo {
186
+ readonly index: number;
187
+ readonly width: number;
188
+ readonly height: number;
189
+ readonly rotation: number;
190
+ readonly hasAnnotations: boolean;
191
+ readonly hasText: boolean;
192
+ readonly hasImages: boolean;
193
+ readonly mediaBox: readonly [number, number, number, number];
194
+ readonly cropBox?: readonly [number, number, number, number];
195
+ }
196
+ /**
197
+ * Document Utility Manager - Complete document optimization and manipulation
198
+ *
199
+ * Provides 35 functions for document utilities.
200
+ *
201
+ * @example
202
+ * ```typescript
203
+ * const doc = await PdfDocument.open('large-document.pdf');
204
+ * const utilityManager = new DocumentUtilityManager(doc);
205
+ *
206
+ * // Optimize document
207
+ * const result = await utilityManager.optimizeDocument({
208
+ * level: OptimizationLevel.AGGRESSIVE,
209
+ * compressImages: true,
210
+ * imageQuality: 75,
211
+ * linearize: true,
212
+ * });
213
+ *
214
+ * console.log(`Reduced by ${result.reductionPercent}%`);
215
+ *
216
+ * // Save optimized document
217
+ * await utilityManager.saveOptimized('optimized.pdf');
218
+ * ```
219
+ */
220
+ export declare class DocumentUtilityManager extends EventEmitter {
221
+ private readonly document;
222
+ private lastOptimizationResult;
223
+ constructor(document: any);
224
+ /**
225
+ * Optimizes the document with specified options
226
+ */
227
+ optimizeDocument(options?: OptimizationOptions): Promise<OptimizationResult>;
228
+ /**
229
+ * Compresses document streams
230
+ */
231
+ compressStreams(options?: CompressionOptions): Promise<boolean>;
232
+ /**
233
+ * Optimizes images in the document
234
+ */
235
+ optimizeImages(options?: ImageOptimizationOptions): Promise<number>;
236
+ /**
237
+ * Optimizes fonts in the document
238
+ */
239
+ optimizeFonts(options?: FontOptimizationOptions): Promise<number>;
240
+ /**
241
+ * Linearizes the document for fast web view
242
+ */
243
+ linearize(options?: LinearizationOptions): Promise<boolean>;
244
+ /**
245
+ * Removes unused objects from the document
246
+ */
247
+ removeUnusedObjects(): Promise<number>;
248
+ /**
249
+ * Flattens transparency in the document
250
+ */
251
+ flattenTransparency(): Promise<boolean>;
252
+ /**
253
+ * Converts color space
254
+ */
255
+ convertColorSpace(targetColorSpace: ColorSpaceType): Promise<boolean>;
256
+ /**
257
+ * Rotates pages
258
+ */
259
+ rotatePages(pageRange: PageRange | 'all', degrees: 90 | 180 | 270): Promise<number>;
260
+ /**
261
+ * Scales pages
262
+ */
263
+ scalePages(pageRange: PageRange | 'all', scaleX: number, scaleY: number): Promise<number>;
264
+ /**
265
+ * Crops pages
266
+ */
267
+ cropPages(pageRange: PageRange | 'all', cropBox: readonly [number, number, number, number]): Promise<number>;
268
+ /**
269
+ * Removes pages
270
+ */
271
+ removePages(pageIndices: readonly number[]): Promise<boolean>;
272
+ /**
273
+ * Reorders pages
274
+ */
275
+ reorderPages(newOrder: readonly number[]): Promise<boolean>;
276
+ /**
277
+ * Duplicates pages
278
+ */
279
+ duplicatePages(pageIndices: readonly number[], times?: number): Promise<boolean>;
280
+ /**
281
+ * Extracts pages to a new document
282
+ */
283
+ extractPages(pageIndices: readonly number[]): Promise<Buffer | null>;
284
+ /**
285
+ * Inserts blank pages
286
+ */
287
+ insertBlankPages(afterPageIndex: number, count: number, width?: number, height?: number): Promise<boolean>;
288
+ /**
289
+ * Gets document statistics
290
+ */
291
+ getDocumentStatistics(): Promise<DocumentStatistics | null>;
292
+ /**
293
+ * Gets page information
294
+ */
295
+ getPageInfo(pageIndex: number): Promise<PageInfo | null>;
296
+ /**
297
+ * Gets page count
298
+ */
299
+ getPageCount(): Promise<number>;
300
+ /**
301
+ * Gets file size in bytes
302
+ */
303
+ getFileSize(): Promise<number>;
304
+ /**
305
+ * Checks if document is linearized
306
+ */
307
+ isLinearized(): Promise<boolean>;
308
+ /**
309
+ * Gets last optimization result
310
+ */
311
+ getLastOptimizationResult(): OptimizationResult | null;
312
+ /**
313
+ * Repairs the document
314
+ */
315
+ repairDocument(): Promise<RepairResult>;
316
+ /**
317
+ * Removes all metadata
318
+ */
319
+ removeAllMetadata(): Promise<boolean>;
320
+ /**
321
+ * Removes all JavaScript
322
+ */
323
+ removeAllJavaScript(): Promise<boolean>;
324
+ /**
325
+ * Removes all annotations
326
+ */
327
+ removeAllAnnotations(): Promise<number>;
328
+ /**
329
+ * Removes all embedded files
330
+ */
331
+ removeAllEmbeddedFiles(): Promise<number>;
332
+ /**
333
+ * Saves the optimized document to a file
334
+ */
335
+ saveOptimized(filePath: string): Promise<boolean>;
336
+ /**
337
+ * Saves the document to bytes
338
+ */
339
+ saveToBytes(): Promise<Buffer | null>;
340
+ /**
341
+ * Saves with incremental update
342
+ */
343
+ saveIncremental(filePath: string): Promise<boolean>;
344
+ /**
345
+ * Saves with specific PDF version
346
+ */
347
+ saveWithVersion(filePath: string, version: string): Promise<boolean>;
348
+ /**
349
+ * Exports pages as separate PDFs
350
+ */
351
+ exportPagesAsSeparateFiles(outputDir: string, prefix?: string): Promise<number>;
352
+ /**
353
+ * Merges another PDF into this document
354
+ */
355
+ mergePdf(otherPdfBuffer: Buffer, atPageIndex?: number): Promise<boolean>;
356
+ /**
357
+ * Merges multiple PDFs
358
+ */
359
+ mergeMultiplePdfs(pdfBuffers: readonly Buffer[]): Promise<boolean>;
360
+ /**
361
+ * Appends pages from another PDF
362
+ */
363
+ appendPagesFromPdf(otherPdfBuffer: Buffer, pageIndices?: readonly number[]): Promise<boolean>;
364
+ /**
365
+ * Cleanup resources
366
+ */
367
+ destroy(): void;
368
+ }
369
+ export default DocumentUtilityManager;
370
+ //# sourceMappingURL=document-utility-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-utility-manager.d.ts","sourceRoot":"","sources":["../../src/managers/document-utility-manager.ts"],"names":[],"mappings":"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"}