@cj-tech-master/excelts 9.1.0 → 9.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +16 -1
- package/dist/browser/modules/archive/compression/crc32.js +1 -1
- package/dist/browser/modules/archive/crypto/aes.d.ts +0 -8
- package/dist/browser/modules/archive/crypto/aes.js +1 -20
- package/dist/browser/modules/archive/crypto/index.d.ts +2 -1
- package/dist/browser/modules/archive/crypto/index.js +3 -1
- package/dist/browser/modules/csv/parse/row-processor.d.ts +1 -1
- package/dist/browser/modules/csv/worker/worker-script.generated.js +1 -1
- package/dist/browser/modules/excel/utils/cell-matrix.js +1 -0
- package/dist/browser/modules/excel/utils/encryptor.browser.d.ts +4 -5
- package/dist/browser/modules/excel/utils/encryptor.browser.js +7 -12
- package/dist/browser/modules/excel/utils/encryptor.d.ts +1 -1
- package/dist/browser/modules/excel/utils/encryptor.js +4 -7
- package/dist/browser/modules/pdf/builder/document-builder.d.ts +517 -0
- package/dist/browser/modules/pdf/builder/document-builder.js +1493 -0
- package/dist/browser/modules/pdf/builder/form-appearance.d.ts +56 -0
- package/dist/browser/modules/pdf/builder/form-appearance.js +140 -0
- package/dist/browser/modules/pdf/builder/image-utils.d.ts +39 -0
- package/dist/browser/modules/pdf/builder/image-utils.js +129 -0
- package/dist/browser/modules/pdf/builder/pdf-editor.d.ts +230 -0
- package/dist/browser/modules/pdf/builder/pdf-editor.js +1574 -0
- package/dist/browser/modules/pdf/builder/resource-merger.d.ts +41 -0
- package/dist/browser/modules/pdf/builder/resource-merger.js +258 -0
- package/dist/browser/modules/pdf/core/digital-signature.d.ts +109 -0
- package/dist/browser/modules/pdf/core/digital-signature.js +659 -0
- package/dist/browser/modules/pdf/core/encryption.js +8 -7
- package/dist/browser/modules/pdf/core/pdf-object.d.ts +11 -0
- package/dist/browser/modules/pdf/core/pdf-object.js +38 -0
- package/dist/browser/modules/pdf/core/pdf-stream.d.ts +32 -0
- package/dist/browser/modules/pdf/core/pdf-stream.js +66 -0
- package/dist/browser/modules/pdf/core/pdf-writer.d.ts +55 -1
- package/dist/browser/modules/pdf/core/pdf-writer.js +271 -6
- package/dist/browser/modules/pdf/core/pdfa.d.ts +62 -0
- package/dist/browser/modules/pdf/core/pdfa.js +261 -0
- package/dist/browser/modules/pdf/index.d.ts +11 -0
- package/dist/browser/modules/pdf/index.js +9 -0
- package/dist/browser/modules/pdf/reader/bookmark-extractor.d.ts +35 -0
- package/dist/browser/modules/pdf/reader/bookmark-extractor.js +324 -0
- package/dist/browser/modules/pdf/reader/pdf-decrypt.js +6 -5
- package/dist/browser/modules/pdf/reader/pdf-reader.d.ts +17 -0
- package/dist/browser/modules/pdf/reader/pdf-reader.js +26 -2
- package/dist/browser/modules/pdf/reader/table-extractor.d.ts +69 -0
- package/dist/browser/modules/pdf/reader/table-extractor.js +365 -0
- package/dist/browser/modules/pdf/render/layout-engine.d.ts +21 -1
- package/dist/browser/modules/pdf/render/layout-engine.js +112 -5
- package/dist/browser/modules/pdf/render/page-renderer.d.ts +2 -9
- package/dist/browser/modules/pdf/render/page-renderer.js +62 -103
- package/dist/browser/modules/pdf/render/pdf-exporter.js +2 -61
- package/dist/browser/modules/pdf/render/style-converter.d.ts +4 -0
- package/dist/browser/modules/pdf/render/style-converter.js +1 -1
- package/dist/browser/modules/pdf/types.d.ts +14 -1
- package/dist/browser/modules/stream/browser/readable.js +8 -2
- package/dist/browser/utils/crypto.browser.d.ts +64 -0
- package/dist/browser/{modules/pdf/core/crypto.js → utils/crypto.browser.js} +91 -101
- package/dist/browser/utils/crypto.d.ts +97 -0
- package/dist/browser/utils/crypto.js +209 -0
- package/dist/cjs/modules/archive/compression/crc32.js +1 -1
- package/dist/cjs/modules/archive/crypto/aes.js +2 -23
- package/dist/cjs/modules/archive/crypto/index.js +3 -1
- package/dist/cjs/modules/csv/worker/worker-script.generated.js +1 -1
- package/dist/cjs/modules/excel/utils/cell-matrix.js +1 -0
- package/dist/cjs/modules/excel/utils/encryptor.browser.js +7 -12
- package/dist/cjs/modules/excel/utils/encryptor.js +4 -10
- package/dist/cjs/modules/pdf/builder/document-builder.js +1532 -0
- package/dist/cjs/modules/pdf/builder/form-appearance.js +145 -0
- package/dist/cjs/modules/pdf/builder/image-utils.js +135 -0
- package/dist/cjs/modules/pdf/builder/pdf-editor.js +1612 -0
- package/dist/cjs/modules/pdf/builder/resource-merger.js +263 -0
- package/dist/cjs/modules/pdf/core/digital-signature.js +667 -0
- package/dist/cjs/modules/pdf/core/encryption.js +8 -7
- package/dist/cjs/modules/pdf/core/pdf-object.js +38 -0
- package/dist/cjs/modules/pdf/core/pdf-stream.js +66 -0
- package/dist/cjs/modules/pdf/core/pdf-writer.js +272 -6
- package/dist/cjs/modules/pdf/core/pdfa.js +266 -0
- package/dist/cjs/modules/pdf/index.js +19 -1
- package/dist/cjs/modules/pdf/reader/bookmark-extractor.js +327 -0
- package/dist/cjs/modules/pdf/reader/pdf-decrypt.js +6 -5
- package/dist/cjs/modules/pdf/reader/pdf-reader.js +26 -2
- package/dist/cjs/modules/pdf/reader/table-extractor.js +368 -0
- package/dist/cjs/modules/pdf/render/layout-engine.js +113 -4
- package/dist/cjs/modules/pdf/render/page-renderer.js +63 -105
- package/dist/cjs/modules/pdf/render/pdf-exporter.js +3 -62
- package/dist/cjs/modules/pdf/render/style-converter.js +1 -0
- package/dist/cjs/modules/stream/browser/readable.js +8 -2
- package/dist/cjs/{modules/pdf/core/crypto.js → utils/crypto.browser.js} +95 -102
- package/dist/cjs/utils/crypto.js +228 -0
- package/dist/esm/modules/archive/compression/crc32.js +1 -1
- package/dist/esm/modules/archive/crypto/aes.js +1 -20
- package/dist/esm/modules/archive/crypto/index.js +3 -1
- package/dist/esm/modules/csv/worker/worker-script.generated.js +1 -1
- package/dist/esm/modules/excel/utils/cell-matrix.js +1 -0
- package/dist/esm/modules/excel/utils/encryptor.browser.js +7 -12
- package/dist/esm/modules/excel/utils/encryptor.js +4 -7
- package/dist/esm/modules/pdf/builder/document-builder.js +1493 -0
- package/dist/esm/modules/pdf/builder/form-appearance.js +140 -0
- package/dist/esm/modules/pdf/builder/image-utils.js +129 -0
- package/dist/esm/modules/pdf/builder/pdf-editor.js +1574 -0
- package/dist/esm/modules/pdf/builder/resource-merger.js +258 -0
- package/dist/esm/modules/pdf/core/digital-signature.js +659 -0
- package/dist/esm/modules/pdf/core/encryption.js +8 -7
- package/dist/esm/modules/pdf/core/pdf-object.js +38 -0
- package/dist/esm/modules/pdf/core/pdf-stream.js +66 -0
- package/dist/esm/modules/pdf/core/pdf-writer.js +271 -6
- package/dist/esm/modules/pdf/core/pdfa.js +261 -0
- package/dist/esm/modules/pdf/index.js +9 -0
- package/dist/esm/modules/pdf/reader/bookmark-extractor.js +324 -0
- package/dist/esm/modules/pdf/reader/pdf-decrypt.js +6 -5
- package/dist/esm/modules/pdf/reader/pdf-reader.js +26 -2
- package/dist/esm/modules/pdf/reader/table-extractor.js +365 -0
- package/dist/esm/modules/pdf/render/layout-engine.js +112 -5
- package/dist/esm/modules/pdf/render/page-renderer.js +62 -103
- package/dist/esm/modules/pdf/render/pdf-exporter.js +2 -61
- package/dist/esm/modules/pdf/render/style-converter.js +1 -1
- package/dist/esm/modules/stream/browser/readable.js +8 -2
- package/dist/esm/{modules/pdf/core/crypto.js → utils/crypto.browser.js} +91 -101
- package/dist/esm/utils/crypto.js +209 -0
- package/dist/iife/excelts.iife.js +1248 -1074
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +53 -54
- package/dist/types/modules/archive/crypto/aes.d.ts +0 -8
- package/dist/types/modules/archive/crypto/index.d.ts +2 -1
- package/dist/types/modules/csv/parse/row-processor.d.ts +1 -1
- package/dist/types/modules/excel/utils/encryptor.browser.d.ts +4 -5
- package/dist/types/modules/excel/utils/encryptor.d.ts +1 -1
- package/dist/types/modules/pdf/builder/document-builder.d.ts +517 -0
- package/dist/types/modules/pdf/builder/form-appearance.d.ts +56 -0
- package/dist/types/modules/pdf/builder/image-utils.d.ts +39 -0
- package/dist/types/modules/pdf/builder/pdf-editor.d.ts +230 -0
- package/dist/types/modules/pdf/builder/resource-merger.d.ts +41 -0
- package/dist/types/modules/pdf/core/digital-signature.d.ts +109 -0
- package/dist/types/modules/pdf/core/pdf-object.d.ts +11 -0
- package/dist/types/modules/pdf/core/pdf-stream.d.ts +32 -0
- package/dist/types/modules/pdf/core/pdf-writer.d.ts +55 -1
- package/dist/types/modules/pdf/core/pdfa.d.ts +62 -0
- package/dist/types/modules/pdf/index.d.ts +11 -0
- package/dist/types/modules/pdf/reader/bookmark-extractor.d.ts +35 -0
- package/dist/types/modules/pdf/reader/pdf-reader.d.ts +17 -0
- package/dist/types/modules/pdf/reader/table-extractor.d.ts +69 -0
- package/dist/types/modules/pdf/render/layout-engine.d.ts +21 -1
- package/dist/types/modules/pdf/render/page-renderer.d.ts +2 -9
- package/dist/types/modules/pdf/render/style-converter.d.ts +4 -0
- package/dist/types/modules/pdf/types.d.ts +14 -1
- package/dist/types/utils/crypto.browser.d.ts +64 -0
- package/dist/types/utils/crypto.d.ts +97 -0
- package/package.json +110 -111
- package/dist/browser/modules/pdf/core/crypto.d.ts +0 -65
- package/dist/types/modules/pdf/core/crypto.d.ts +0 -65
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Create, read, and modify Excel spreadsheets with full styling, formulas, images,
|
|
|
29
29
|
|
|
30
30
|
### PDF — Zero-Dependency PDF Engine
|
|
31
31
|
|
|
32
|
-
Full-featured PDF generation and
|
|
32
|
+
Full-featured PDF generation, reading, building, editing, and signing. Write PDFs with font embedding, AES-256 encryption, images, and Excel-to-PDF conversion. Build free-form PDFs with text, vector graphics, SVG paths, annotations, and form fields. Edit existing PDFs with overlays, form filling, page manipulation, and merging. Read any PDF with text, image, annotation, form field, bookmark, and metadata extraction. Verify and create digital signatures with PKCS#7/CMS.
|
|
33
33
|
|
|
34
34
|
- [Documentation](src/modules/pdf/README.md) | [中文](src/modules/pdf/README_zh.md)
|
|
35
35
|
- [Examples](src/modules/pdf/examples/)
|
|
@@ -111,6 +111,21 @@ const result = await readPdf(pdfBytes);
|
|
|
111
111
|
console.log(result.text); // extracted text
|
|
112
112
|
console.log(result.metadata); // title, author, etc.
|
|
113
113
|
|
|
114
|
+
// PDF — build free-form PDFs with text, shapes, SVG paths
|
|
115
|
+
import { PdfDocumentBuilder } from "@cj-tech-master/excelts/pdf";
|
|
116
|
+
const doc = new PdfDocumentBuilder();
|
|
117
|
+
const page = doc.addPage();
|
|
118
|
+
page.drawText("Hello!", { x: 72, y: 770, fontSize: 24 });
|
|
119
|
+
page.drawSvgPath("M10 10 L90 10 L50 80 Z", { fill: { r: 1, g: 0, b: 0 } });
|
|
120
|
+
page.addAnnotation({ type: "Highlight", rect: [72, 765, 150, 785] });
|
|
121
|
+
|
|
122
|
+
// PDF — edit existing PDFs (overlay, merge, fill forms)
|
|
123
|
+
import { PdfEditor } from "@cj-tech-master/excelts/pdf";
|
|
124
|
+
const editor = PdfEditor.load(existingPdf);
|
|
125
|
+
editor.getPage(0).drawText("Stamp", { x: 200, y: 400, fontSize: 36 });
|
|
126
|
+
editor.setFormField("name", "Jane");
|
|
127
|
+
editor.copyPagesFrom(otherPdf);
|
|
128
|
+
|
|
114
129
|
// CSV — parse and format
|
|
115
130
|
import { parseCsv, formatCsv } from "@cj-tech-master/excelts/csv";
|
|
116
131
|
const rows = parseCsv("name,age\nAlice,30", { headers: true });
|
|
@@ -98,14 +98,6 @@ export interface AesEncryptedComponents {
|
|
|
98
98
|
/** HMAC-SHA1 authentication code (10 bytes) */
|
|
99
99
|
storedHmac: Uint8Array;
|
|
100
100
|
}
|
|
101
|
-
/**
|
|
102
|
-
* Get crypto.getRandomValues (works in both Node.js and browsers).
|
|
103
|
-
*/
|
|
104
|
-
export declare function getRandomValues(array: Uint8Array): Uint8Array;
|
|
105
|
-
/**
|
|
106
|
-
* Generate random bytes.
|
|
107
|
-
*/
|
|
108
|
-
export declare function randomBytes(length: number): Uint8Array;
|
|
109
101
|
/**
|
|
110
102
|
* Derive AES keys from password using PBKDF2.
|
|
111
103
|
*
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
* Works in both Node.js and browsers using the Web Crypto API.
|
|
15
15
|
*/
|
|
16
16
|
import { stringToUint8Array as encodeUtf8 } from "../../../utils/binary.js";
|
|
17
|
+
import { randomBytes } from "../../../utils/crypto.browser.js";
|
|
17
18
|
import { toArrayBuffer } from "../shared/text.js";
|
|
18
19
|
/**
|
|
19
20
|
* AES vendor ID for WinZip format.
|
|
@@ -84,26 +85,6 @@ function getWebCrypto() {
|
|
|
84
85
|
}
|
|
85
86
|
throw new Error("Web Crypto API not available");
|
|
86
87
|
}
|
|
87
|
-
/**
|
|
88
|
-
* Get crypto.getRandomValues (works in both Node.js and browsers).
|
|
89
|
-
*/
|
|
90
|
-
export function getRandomValues(array) {
|
|
91
|
-
if (typeof globalThis.crypto?.getRandomValues !== "undefined") {
|
|
92
|
-
// Uint8Array's buffer type (ArrayBufferLike) is wider than what the TS lib
|
|
93
|
-
// definition of getRandomValues expects (ArrayBuffer). The cast is safe
|
|
94
|
-
// because getRandomValues fills the view in-place regardless of buffer type.
|
|
95
|
-
globalThis.crypto.getRandomValues(array);
|
|
96
|
-
return array;
|
|
97
|
-
}
|
|
98
|
-
throw new Error("crypto.getRandomValues not available");
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Generate random bytes.
|
|
102
|
-
*/
|
|
103
|
-
export function randomBytes(length) {
|
|
104
|
-
const bytes = new Uint8Array(length);
|
|
105
|
-
return getRandomValues(bytes);
|
|
106
|
-
}
|
|
107
88
|
/**
|
|
108
89
|
* Derive AES keys from password using PBKDF2.
|
|
109
90
|
*
|
|
@@ -13,5 +13,6 @@
|
|
|
13
13
|
* - aesEncryptedSize, buildAesExtraField, randomBytes
|
|
14
14
|
*/
|
|
15
15
|
export { ZIP_CRYPTO_HEADER_SIZE, zipCryptoInitKeys, zipCryptoDecrypt, zipCryptoEncrypt, zipCryptoCreateHeader, zipCryptoEncryptByte, zipCryptoDecryptByte, zipCryptoCheckPassword as zipCryptoVerifyPassword, type ZipCryptoState } from "./zip-crypto.js";
|
|
16
|
-
export { AES_VENDOR_ID, AES_VERSION_AE1, AES_VERSION_AE2, AES_EXTRA_FIELD_ID, AES_SALT_LENGTH, AES_KEY_LENGTH, AES_AUTH_CODE_LENGTH, AES_PASSWORD_VERIFY_LENGTH, COMPRESSION_METHOD_AES, AES_STRENGTH_FROM_BYTE, aesDecrypt, aesEncrypt, aesEncryptedSize, aesVerifyPassword, buildAesExtraField,
|
|
16
|
+
export { AES_VENDOR_ID, AES_VERSION_AE1, AES_VERSION_AE2, AES_EXTRA_FIELD_ID, AES_SALT_LENGTH, AES_KEY_LENGTH, AES_AUTH_CODE_LENGTH, AES_PASSWORD_VERIFY_LENGTH, COMPRESSION_METHOD_AES, AES_STRENGTH_FROM_BYTE, aesDecrypt, aesEncrypt, aesEncryptedSize, aesVerifyPassword, buildAesExtraField, type AesKeyStrength, type AesExtraFieldInfo } from "./aes.js";
|
|
17
|
+
export { randomBytes } from "../../../utils/crypto.js";
|
|
17
18
|
export { type ZipEncryptionMethod, type ZipEncryptionInfo, type ZipPasswordOptions, type ZipEncryptionOptions, getEncryptionMethodName, isAesEncryption, getAesKeyStrength, encryptionMethodFromAesKeyStrength } from "./types.js";
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
// ZipCrypto (Traditional PKWARE Encryption)
|
|
16
16
|
export { ZIP_CRYPTO_HEADER_SIZE, zipCryptoInitKeys, zipCryptoDecrypt, zipCryptoEncrypt, zipCryptoCreateHeader, zipCryptoEncryptByte, zipCryptoDecryptByte, zipCryptoCheckPassword as zipCryptoVerifyPassword } from "./zip-crypto.js";
|
|
17
17
|
// AES (WinZip AE-1 / AE-2)
|
|
18
|
-
export { AES_VENDOR_ID, AES_VERSION_AE1, AES_VERSION_AE2, AES_EXTRA_FIELD_ID, AES_SALT_LENGTH, AES_KEY_LENGTH, AES_AUTH_CODE_LENGTH, AES_PASSWORD_VERIFY_LENGTH, COMPRESSION_METHOD_AES, AES_STRENGTH_FROM_BYTE, aesDecrypt, aesEncrypt, aesEncryptedSize, aesVerifyPassword, buildAesExtraField
|
|
18
|
+
export { AES_VENDOR_ID, AES_VERSION_AE1, AES_VERSION_AE2, AES_EXTRA_FIELD_ID, AES_SALT_LENGTH, AES_KEY_LENGTH, AES_AUTH_CODE_LENGTH, AES_PASSWORD_VERIFY_LENGTH, COMPRESSION_METHOD_AES, AES_STRENGTH_FROM_BYTE, aesDecrypt, aesEncrypt, aesEncryptedSize, aesVerifyPassword, buildAesExtraField } from "./aes.js";
|
|
19
|
+
// Random bytes — from shared @utils/crypto
|
|
20
|
+
export { randomBytes } from "../../../utils/crypto.browser.js";
|
|
19
21
|
// Types
|
|
20
22
|
export { getEncryptionMethodName, isAesEncryption, getAesKeyStrength, encryptionMethodFromAesKeyStrength } from "./types.js";
|
|
@@ -49,7 +49,7 @@ export declare function buildRecordInfo(state: ParseState, dataRowIndex: number,
|
|
|
49
49
|
/**
|
|
50
50
|
* Convert a raw row to an object record with optional dynamic typing
|
|
51
51
|
*/
|
|
52
|
-
export declare function rowToRecord(row: string[], state: ParseState, config: Pick<ParseConfig, "groupColumnsByName" | "dynamicTyping" | "castDate">): Record<string,
|
|
52
|
+
export declare function rowToRecord(row: string[], state: ParseState, config: Pick<ParseConfig, "groupColumnsByName" | "dynamicTyping" | "castDate">): Record<string, unknown>;
|
|
53
53
|
/**
|
|
54
54
|
* Check if a row should be skipped (comment or empty)
|
|
55
55
|
*/
|