@pdfluent/node-win32-x64-msvc 1.0.0 → 1.1.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.
@@ -0,0 +1,220 @@
1
+ PDFluent Commercial Licence
2
+ ===========================
3
+
4
+ Version 3.0 — 6 September 2026
5
+ Innovation Trigger B.V., trading as PDFluent, Netherlands.
6
+
7
+ This licence replaces version 2.0 of 31 August 2026, which described the same
8
+ rights sold as a perpetual licence through a signed order form. The rights are
9
+ unchanged. What changed on 6 September 2026 is how the licence is bought and how
10
+ long it runs: four self-service prices, yearly, bought on the website in a
11
+ minute. Version 1.0 of 2 May 2026, which described licence keys, tiers and an
12
+ expiring evaluation, described a product that no longer exists.
13
+
14
+ Licences granted under version 2.0 or earlier were perpetual for the versions
15
+ they named and remain so. Nothing in this text withdraws or replaces them.
16
+
17
+
18
+ 1. Why this licence exists
19
+ --------------------------
20
+
21
+ PDFluent is published under the GNU AGPLv3 (the LICENSE file). That is the
22
+ default, and it is the complete product: no feature is withheld, no key is
23
+ required, nothing expires.
24
+
25
+ The AGPL asks something in return. If you convey the software, or let users
26
+ interact with a modified version over a network, you must offer those users the
27
+ corresponding source under the same licence. For many organisations that is
28
+ fine. For some it is impossible — because the surrounding product is closed, or
29
+ a customer contract forbids it, or the legal department will not accept a
30
+ copyleft obligation in a shipped binary.
31
+
32
+ This licence is the alternative for exactly that case. You are not buying
33
+ features. You are buying the right not to publish your own source.
34
+
35
+
36
+ 2. What you get
37
+ ---------------
38
+
39
+ On payment of the fee, PDFluent grants the licensee a non-exclusive, worldwide
40
+ licence, for the term in section 8, to use, modify and distribute the PDFluent
41
+ software in the licensee's own products, without the obligations of the AGPL.
42
+ What the licensee conveyed to its own customers during the term stays covered
43
+ after it: the term bounds which releases may be taken under this licence, never
44
+ how long what was already shipped may be used.
45
+
46
+ Specifically:
47
+
48
+ a. Distribution of the software as part of a compiled product, without
49
+ supplying source to the recipients.
50
+ b. Operation as a network service, without the AGPL section 13 obligation.
51
+ c. Internal use of any kind.
52
+ d. Deployment in environments without network access. Nothing in the software
53
+ contacts a server, so this needs no permission and costs nothing extra.
54
+
55
+ The scope of one licence and its price are in section 2a below. Nothing in the
56
+ software distinguishes a licensed build from an unlicensed one, so nothing stops
57
+ working when a licence ends: see sections 5 and 8.
58
+
59
+
60
+ 2a. The four prices
61
+ -------------------
62
+
63
+ All yearly, in euro, excluding VAT, bought at https://pdfluent.com/sdk/pricing
64
+ and cancellable at any time in the billing portal there.
65
+
66
+ Commercial 999 per organisation. Grants b and c, and a for a product
67
+ the licensee does not sell PDF functionality from.
68
+ Unlimited developers.
69
+ OEM Startup 2,499 per product. Grants a, b and c without that limit, for
70
+ an organisation whose revenue is below EUR 1,000,000,
71
+ declared by the licensee at the time of purchase. Above
72
+ that threshold the OEM price applies from the next
73
+ renewal.
74
+ OEM 9,999 per product. The same grants, every other organisation.
75
+ Priority 4,999 Not a licence. A support subscription: a reply within
76
+ support one working day, on working days. Section 6 otherwise
77
+ applies.
78
+
79
+ The rule that decides Commercial from OEM, which is the only distinction
80
+ between them that matters:
81
+
82
+ If your customers pay you for PDF functionality that PDFluent provides — a
83
+ conversion API, a PDF/A service, an OCR service, hosted PDF tooling — that is
84
+ OEM, not Commercial.
85
+
86
+ Building PDF handling into your own product is Commercial. Selling PDF handling
87
+ to your customers is OEM. A licence covers one organisation or one named
88
+ product, as stated above; a second product is a second licence.
89
+
90
+
91
+ 3. What is not covered
92
+ ----------------------
93
+
94
+ Several components in the repository are forks of third-party open-source
95
+ projects and remain under their own permissive licences. They are not PDFluent's
96
+ to relicense and need no licence from PDFluent. `NOTICE` records which they are;
97
+ `docs/licensing/boundary.toml` is the machine-readable version.
98
+
99
+ This licence covers the components on PDFluent's side of that boundary.
100
+
101
+ Optional model files and runtime libraries that the software downloads on
102
+ your explicit request (for example with `pdfluent models install`) are
103
+ licensed as follows. Model files trained by PDFluent are licensed under
104
+ the same terms as the software. Third-party model files and runtime
105
+ libraries are licensed to you under their own terms, listed in the notice
106
+ that accompanies them, and are provided as-is; PDFluent gives no warranty
107
+ or indemnity for them.
108
+
109
+
110
+ 4. Attribution
111
+ --------------
112
+
113
+ Documents produced by the software carry "PDFluent" in the PDF `/Producer` entry
114
+ and in XMP metadata. Under this licence you may remove or replace that string in
115
+ your build. So may an AGPL licensee: the attribution term that once required
116
+ that string to be preserved was withdrawn with the move to AGPL-3.0-only, and
117
+ nothing replaced it. What a commercial licence changes is the copyleft, not
118
+ the branding.
119
+
120
+
121
+ 5. What this licence does not contain, and why
122
+ ----------------------------------------------
123
+
124
+ No telemetry, no licence key, and no check of any kind in the software.
125
+
126
+ Stated accurately rather than aspirationally: until 6 September 2026 the build
127
+ still carried tier checks from the previous model, so an unlicensed binary
128
+ reported `Tier::Trial` and refused some capabilities. Those checks are gone
129
+ (issue #226). No code in the software reads a key, refuses a capability, or
130
+ marks output, and `scripts/ci/no_licence_key_in_a_binding.py` refuses a change
131
+ that puts one back. It was never a condition of this licence — a commercial
132
+ licensee's rights come from this agreement, not from a check in the binary.
133
+
134
+ This is deliberate, not an omission. Published source means any technical check
135
+ can be removed by anyone who has the code, in minutes, so such a check would
136
+ only ever inconvenience the people who intended to pay. The obligation here is
137
+ contractual, and it is enforceable in the ordinary way.
138
+
139
+ Consequently there is nothing to install, nothing to activate, and nothing that
140
+ can break in production because a file expired or a server was unreachable. A
141
+ licence that lapses is a change in what the licensee may do, never a change in
142
+ what the software does.
143
+
144
+ What a licensee receives is the order confirmation issued at purchase and a
145
+ licence document naming the licensee, the licence, the product where one
146
+ applies, and the term. Those two together are the licence, and they are the
147
+ deliverables. A signed order form is available for a licensee whose procurement
148
+ requires one; it is not the ordinary route and it changes nothing about the
149
+ rights.
150
+
151
+
152
+ 6. Support and updates
153
+ ----------------------
154
+
155
+ This licence grants rights to the software. It is not a support contract and
156
+ does not promise response times or fixes. Every release published during the
157
+ term may be taken under it, which is what a licensee is buying when they renew.
158
+
159
+ A response time is promised only where priority support is bought (section 2a),
160
+ or where a separate services agreement says so; either prevails over this
161
+ section.
162
+
163
+
164
+ 7. Warranty and liability
165
+ -------------------------
166
+
167
+ The software is provided "as is", without warranty of any kind, express or
168
+ implied, including but not limited to the warranties of merchantability, fitness
169
+ for a particular purpose and non-infringement.
170
+
171
+ To the maximum extent permitted by applicable law, PDFluent's aggregate
172
+ liability under or in connection with this licence shall not exceed the fees
173
+ paid by the licensee for it. Nothing in this licence excludes or limits
174
+ liability that cannot lawfully be excluded or limited, including liability for
175
+ intentional misconduct or gross negligence.
176
+
177
+
178
+ 8. Term and termination
179
+ -----------------------
180
+
181
+ The licence runs for the term paid for and renews yearly until the licensee
182
+ cancels. Cancellation takes effect at the end of the paid term.
183
+
184
+ When the term ends, the licensee's rights under section 2 end with it. Nothing
185
+ breaks: no release stops working, nothing already shipped is affected, and no
186
+ code in the software consults this agreement. What ends is the right to convey
187
+ or operate releases under this licence rather than under the AGPL. Rights
188
+ already granted to the licensee's own customers for versions already shipped are
189
+ not affected, and neither is anything the licensee shipped during the term.
190
+
191
+ The licence also terminates on a material breach that the licensee has not
192
+ remedied within 30 days of written notice.
193
+
194
+
195
+ 9. Law and forum
196
+ ----------------
197
+
198
+ This licence is governed by the laws of the Netherlands. Disputes are submitted
199
+ to the competent court in the district where PDFluent has its registered seat,
200
+ without prejudice to any mandatory consumer or statutory forum.
201
+
202
+
203
+ 10. The agreement
204
+ -----------------
205
+
206
+ For a self-service purchase, the agreement is this text together with the order
207
+ confirmation and the licence document described in section 5. Those record the
208
+ licensee, the licensed scope, the product where one applies, the term and the
209
+ fee. Where they conflict with this text, they prevail for the facts they state.
210
+
211
+ Where a licensee's procurement requires a signed order form, the licensee, the
212
+ licensed scope, the fee and any agreed support are recorded in one signed by
213
+ both parties, and that form and this text together are the agreement. Where they
214
+ conflict, the order form prevails.
215
+
216
+ The template is `docs/licensing/order-form.md`. It is a template and not an
217
+ agreement: an order form binds only once it is filled in and signed by both
218
+ parties.
219
+
220
+ Contact: sales@pdfluent.com
package/LICENSE-OFFER ADDED
@@ -0,0 +1,45 @@
1
+ SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-PDFluent-Commercial
2
+
3
+ PDFluent is available under two licences, at your option
4
+ =======================================================
5
+
6
+ 1. The GNU Affero General Public License, version 3.
7
+
8
+ LICENSE the FSF text, verbatim
9
+
10
+ 2. The PDFluent Commercial Licence.
11
+
12
+ LICENSE-COMMERCIAL
13
+
14
+ Choose either. You do not need permission to choose the first.
15
+
16
+ The AGPL is the default. No key is required to receive it, nothing expires, and
17
+ the rights it grants are not conditional on anything we do. It asks something in
18
+ return: if you convey the software, or let users interact with a modified
19
+ version over a network, you must offer those users the corresponding source
20
+ under the same licence.
21
+
22
+ If that is impossible for you -- a closed surrounding product, a customer
23
+ contract, a legal department that will not accept copyleft in a shipped
24
+ binary -- the commercial licence is the alternative. Under it you are not buying
25
+ features. You are buying the right not to publish your own source. It is sold at
26
+ https://pdfluent.com/sdk/pricing; enquiries go to sales@pdfluent.com.
27
+
28
+
29
+ Why this file exists, and what it is not
30
+ ----------------------------------------
31
+
32
+ It is not a licence and it grants nothing. It is the statement of the offer, for
33
+ the two channels that cannot spell the offer in their own metadata.
34
+
35
+ npm rejects a LicenseRef expression outright -- measured with
36
+ validate-npm-package-license 3.0.4, the library npm itself uses -- and
37
+ nuget.org refuses one with NU5124. Both offer the same way out: point at a file.
38
+ Until 07-09-2026 that pointer resolved to LICENSE, because LICENSE then opened
39
+ with this same statement. Since then LICENSE holds the AGPL text and nothing
40
+ else, so that a licence scanner reading it sees the AGPL rather than prose it
41
+ cannot classify -- which is the whole point of that change, and it is why the
42
+ pointer needs a file of its own rather than a sentence bolted onto the licence.
43
+
44
+ The full explanation, with the history and what the build currently does, is the
45
+ Licence section of README.md.
package/NOTICE CHANGED
@@ -71,6 +71,9 @@ that. See https://pdfluent.com/sdk/pricing.
71
71
 
72
72
  pdfluent — the unified facade SDK
73
73
  pdf-engine — orchestration and document model
74
+ (the TATR post-processing behind `ort-tables` is a port of
75
+ Microsoft's table-transformer, © Microsoft Corporation,
76
+ MIT; that notice ships inside the crate as THIRD_PARTY.md)
74
77
  pdf-manip — page-level manipulation (merge, split, rotate, etc.)
75
78
  (six unmodified Adobe CMap resources, compiled in
76
79
  to read the character codes of a predefined CMap;
@@ -81,11 +84,14 @@ that. See https://pdfluent.com/sdk/pricing.
81
84
  pdfluent-sign — digital signatures (PAdES, S/MIME)
82
85
  pdf-compliance — PDF/A, PDF/UA, PDF/X validation and conversion
83
86
  pdfluent-extract — text and image extraction
87
+ epub-extract — EPUB content extraction
84
88
  pdfluent-forms — AcroForm support
85
89
  pdf-annot — annotations
86
90
  pdf-docx — DOCX export
87
91
  pdf-xlsx — XLSX export and table extraction
92
+ xlsx-extract — XLSX workbook extraction to engine blocks
88
93
  pdf-pptx — PowerPoint PPTX export
94
+ pptx-extract — PowerPoint PPTX extraction to blocks
89
95
  pdf-invoice — FDF/XFDF form data exchange and ZUGFeRD/Factur-X
90
96
  pdf-text-format — text run formatting
91
97
  pdf-standard-fonts — the Standard 14 font programs, compiled in
@@ -107,6 +113,7 @@ that. See https://pdfluent.com/sdk/pricing.
107
113
  xfa-js-sandboxed — sandboxed JavaScript runtime for XFA scripts
108
114
  formcalc-interpreter — FormCalc evaluation
109
115
  xfa-json — XFA JSON conversion
116
+ pdfluent-cli — command-line interface over the facade
110
117
 
111
118
  The Software produces the same output whether or not a commercial licence is
112
119
  held: there is no licence key, nothing is withheld and no marker is added
package/README.md CHANGED
@@ -122,6 +122,11 @@ const blocks = doc.extractTextBlocks(0); // TextBlockInfo[] with x/y/fontSize
122
122
  const hits = doc.searchText('invoice'); // number[] of page indices
123
123
  ```
124
124
 
125
+ `extractMarkdown` runs in the `fast` tier by default and takes
126
+ `quality: "balanced"` for the preview model tier, with `modelDir` and
127
+ `tableModelDir` pointing it at directories outside the default. See
128
+ [Quality tiers](../../docs/STRUCTURED_EXTRACTION.md#quality-tiers).
129
+
125
130
  #### Forms (AcroForm)
126
131
 
127
132
  ```js
@@ -234,6 +239,30 @@ const report = validatePdfa('document.pdf', '2b');
234
239
  console.log(report.compliant, report.errorCount);
235
240
  ```
236
241
 
242
+ ### Errors
243
+
244
+ Every failing call throws a `PdfluentError` (a rejected promise for the async
245
+ ones). Branch on `.code`, never on `.message`: the codes are stable, the
246
+ wording is not.
247
+
248
+ ```js
249
+ const { PdfDocument, PdfluentError } = require('@pdfluent/node');
250
+
251
+ try {
252
+ PdfDocument.openWithPassword(bytes, password);
253
+ } catch (e) {
254
+ if (e instanceof PdfluentError && e.code === 'E-SECURITY-DECRYPTION-FAILED') {
255
+ // ask for the password again
256
+ } else {
257
+ throw e;
258
+ }
259
+ }
260
+ ```
261
+
262
+ `.operation` names the call that failed (`"openWithPassword"`), `.cause` is
263
+ `null` or a detail string. The codes are listed at
264
+ <https://pdfluent.com/errors>.
265
+
237
266
  ### Integration with Sharp
238
267
 
239
268
  ```js
@@ -731,6 +731,114 @@ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
731
731
  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
732
732
  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
733
733
 
734
+ ================================================================================
735
+ tract — ONNX inference for the optional vision layer (#636)
736
+ https://github.com/sonos/tract
737
+ ================================================================================
738
+
739
+ The `vision` cargo feature of pdf-engine (off by default; passthrough in
740
+ pdfluent) runs ONNX models through tract-onnx 0.23 (default-features off, so
741
+ without the `transformers` op-set). No trained model ships; the only ONNX
742
+ bytes in the tree are the 152-byte identity fixture the tests run.
743
+
744
+ Copyright (c) Mathieu Poumeyrol and the tract contributors.
745
+
746
+ Dual-licensed under MIT and Apache-2.0, at our option. The crates as resolved
747
+ (tract-onnx, tract-onnx-opl, tract-hir, tract-core, tract-data,
748
+ tract-extra, tract-nnef, tract-linalg and their transitive dependencies
749
+ bytes, derive-new, log, memmap2, nom, nom-language, num-integer,
750
+ num-rational, num-traits, prost, smallvec and the tract-*-sys/metal
751
+ helpers) each declare MIT OR Apache-2.0 and are covered by the texts below;
752
+ both are permissive and impose no copyleft obligation on the product. This
753
+ entry stands outside the `cargo license 2026-05-26` list above because that
754
+ list predates the dependency; the next regeneration absorbs these crates.
755
+
756
+ --- MIT License ---
757
+
758
+ Permission is hereby granted, free of charge, to any person obtaining a copy
759
+ of this software and associated documentation files (the "Software"), to deal
760
+ in the Software without restriction, including without limitation the rights
761
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
762
+ copies of the Software, and to permit persons to whom the Software is
763
+ furnished to do so, subject to the following conditions:
764
+
765
+ The above copyright notice and this permission notice shall be included in all
766
+ copies or substantial portions of the Software.
767
+
768
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
769
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
770
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
771
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
772
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
773
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
774
+ SOFTWARE.
775
+
776
+ --- Apache License, Version 2.0 ---
777
+
778
+ Licensed under the Apache License, Version 2.0 (the "License");
779
+ you may not use this file except in compliance with the License.
780
+ You may obtain a copy of the License at
781
+
782
+ http://www.apache.org/licenses/LICENSE-2.0
783
+
784
+ Unless required by applicable law or agreed to in writing, software
785
+ distributed under the License is distributed on an "AS IS" BASIS,
786
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
787
+ See the License for the specific language governing permissions and
788
+ limitations under the License.
789
+
790
+ ================================================================================
791
+ table-transformer — Table Transformer structure post-processing (MIT)
792
+ https://github.com/microsoft/table-transformer
793
+ commit 16d124f616109746b7785f03085100f1f6247575
794
+ ================================================================================
795
+
796
+ Copyright (c) Microsoft Corporation.
797
+
798
+ What is used, in two forms:
799
+
800
+ crates/pdf-engine/src/learned/tables_tatr.rs a Rust port of the
801
+ publisher's row/column/header/spanning-cell reconciliation and
802
+ grid-cell construction (`objects_to_cells` and everything it
803
+ calls), behind the `ort-tables` feature of pdf-engine. Same
804
+ thresholds, same refinement, same cells; the parity test feeds
805
+ raw ONNX outputs and requires the Python-decoded cells, value
806
+ for value.
807
+ scripts/extraction/tables_b/tatr_postprocess.py the Python original,
808
+ `src/postprocess.py` at the commit above, vendored verbatim
809
+ (see the header in that file). The zero-shot eval runs TATR
810
+ through it rather than through a reimplementation, so a TATR
811
+ number is the publisher's reading of its own boxes.
812
+
813
+ MIT is permissive, no copyleft: the licence text below is that commit's
814
+ LICENSE, word for word. The same copyright line and text ship inside the
815
+ pdf-engine crate as THIRD_PARTY.md, because a crates.io reader has this
816
+ file's section in front of them only through the repository.
817
+
818
+ --- MIT License ---
819
+
820
+ MIT License
821
+
822
+ Copyright (c) Microsoft Corporation.
823
+
824
+ Permission is hereby granted, free of charge, to any person obtaining a copy
825
+ of this software and associated documentation files (the "Software"), to deal
826
+ in the Software without restriction, including without limitation the rights
827
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
828
+ copies of the Software, and to permit persons to whom the Software is
829
+ furnished to do so, subject to the following conditions:
830
+
831
+ The above copyright notice and this permission notice shall be included in all
832
+ copies or substantial portions of the Software.
833
+
834
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
835
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
836
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
837
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
838
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
839
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
840
+ SOFTWARE
841
+
734
842
  ================================================================================
735
843
  END OF THIRD PARTY LICENSES
736
844
  ================================================================================
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pdfluent/node-win32-x64-msvc",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "os": [
5
5
  "win32"
6
6
  ],
@@ -11,6 +11,8 @@
11
11
  "files": [
12
12
  "index.win32-x64-msvc.node",
13
13
  "LICENSE",
14
+ "LICENSE-COMMERCIAL",
15
+ "LICENSE-OFFER",
14
16
  "NOTICE",
15
17
  "THIRD_PARTY_LICENSES.txt",
16
18
  "README.md"
@@ -36,7 +38,7 @@
36
38
  "napi",
37
39
  "pdfluent"
38
40
  ],
39
- "homepage": "https://pdfluent.com",
41
+ "homepage": "https://pdfluent.com/sdk/",
40
42
  "license": "SEE LICENSE IN LICENSE-OFFER",
41
43
  "engines": {
42
44
  "node": ">= 18"
@@ -49,6 +51,6 @@
49
51
  "url": "https://github.com/pdfluent/pdfluent-sdk"
50
52
  },
51
53
  "bugs": {
52
- "url": "https://pdfluent.com/support"
54
+ "url": "https://github.com/pdfluent/pdfluent-sdk/issues"
53
55
  }
54
56
  }