@cj-tech-master/excelts 9.0.0 → 9.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.
- package/dist/browser/index.browser.d.ts +2 -0
- package/dist/browser/index.browser.js +2 -0
- package/dist/browser/index.d.ts +2 -0
- package/dist/browser/index.js +2 -0
- package/dist/browser/modules/excel/image.d.ts +27 -2
- package/dist/browser/modules/excel/image.js +23 -1
- package/dist/browser/modules/excel/stream/worksheet-writer.d.ts +16 -1
- package/dist/browser/modules/excel/stream/worksheet-writer.js +68 -0
- package/dist/browser/modules/excel/types.d.ts +72 -0
- package/dist/browser/modules/excel/utils/drawing-utils.d.ts +4 -0
- package/dist/browser/modules/excel/utils/drawing-utils.js +5 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.d.ts +4 -0
- package/dist/browser/modules/excel/utils/ooxml-paths.js +15 -0
- package/dist/browser/modules/excel/utils/watermark-image.d.ts +67 -0
- package/dist/browser/modules/excel/utils/watermark-image.js +383 -0
- package/dist/browser/modules/excel/worksheet.d.ts +39 -1
- package/dist/browser/modules/excel/worksheet.js +99 -0
- package/dist/browser/modules/excel/xlsx/xform/core/content-types-xform.js +3 -2
- package/dist/browser/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +6 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +0 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +3 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/blip-xform.js +22 -6
- package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +3 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/pic-xform.js +5 -1
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +19 -0
- package/dist/browser/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +103 -4
- package/dist/browser/modules/excel/xlsx/xform/sheet/worksheet-xform.js +135 -8
- package/dist/browser/modules/excel/xlsx/xlsx.browser.d.ts +1 -0
- package/dist/browser/modules/excel/xlsx/xlsx.browser.js +53 -1
- package/dist/browser/modules/pdf/core/pdf-writer.d.ts +1 -1
- package/dist/browser/modules/pdf/core/pdf-writer.js +2 -1
- package/dist/browser/modules/pdf/index.d.ts +1 -1
- package/dist/browser/modules/pdf/render/page-renderer.d.ts +29 -1
- package/dist/browser/modules/pdf/render/page-renderer.js +394 -25
- package/dist/browser/modules/pdf/render/pdf-exporter.js +84 -47
- package/dist/browser/modules/pdf/types.d.ts +235 -0
- package/dist/cjs/index.js +5 -2
- package/dist/cjs/modules/excel/image.js +23 -1
- package/dist/cjs/modules/excel/stream/worksheet-writer.js +68 -0
- package/dist/cjs/modules/excel/utils/drawing-utils.js +5 -0
- package/dist/cjs/modules/excel/utils/ooxml-paths.js +19 -0
- package/dist/cjs/modules/excel/utils/watermark-image.js +386 -0
- package/dist/cjs/modules/excel/worksheet.js +99 -0
- package/dist/cjs/modules/excel/xlsx/xform/core/content-types-xform.js +3 -2
- package/dist/cjs/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +6 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +0 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/blip-xform.js +22 -6
- package/dist/cjs/modules/excel/xlsx/xform/drawing/pic-xform.js +5 -1
- package/dist/cjs/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +103 -4
- package/dist/cjs/modules/excel/xlsx/xform/sheet/worksheet-xform.js +134 -7
- package/dist/cjs/modules/excel/xlsx/xlsx.browser.js +52 -0
- package/dist/cjs/modules/pdf/core/pdf-writer.js +2 -1
- package/dist/cjs/modules/pdf/render/page-renderer.js +396 -25
- package/dist/cjs/modules/pdf/render/pdf-exporter.js +83 -46
- package/dist/esm/index.browser.js +2 -0
- package/dist/esm/index.js +2 -0
- package/dist/esm/modules/excel/image.js +23 -1
- package/dist/esm/modules/excel/stream/worksheet-writer.js +68 -0
- package/dist/esm/modules/excel/utils/drawing-utils.js +5 -0
- package/dist/esm/modules/excel/utils/ooxml-paths.js +15 -0
- package/dist/esm/modules/excel/utils/watermark-image.js +383 -0
- package/dist/esm/modules/excel/worksheet.js +99 -0
- package/dist/esm/modules/excel/xlsx/xform/core/content-types-xform.js +3 -2
- package/dist/esm/modules/excel/xlsx/xform/drawing/base-cell-anchor-xform.js +6 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/blip-fill-xform.js +0 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/blip-xform.js +22 -6
- package/dist/esm/modules/excel/xlsx/xform/drawing/pic-xform.js +5 -1
- package/dist/esm/modules/excel/xlsx/xform/drawing/vml-drawing-xform.js +103 -4
- package/dist/esm/modules/excel/xlsx/xform/sheet/worksheet-xform.js +135 -8
- package/dist/esm/modules/excel/xlsx/xlsx.browser.js +53 -1
- package/dist/esm/modules/pdf/core/pdf-writer.js +2 -1
- package/dist/esm/modules/pdf/render/page-renderer.js +394 -25
- package/dist/esm/modules/pdf/render/pdf-exporter.js +84 -47
- package/dist/iife/excelts.iife.js +2390 -469
- package/dist/iife/excelts.iife.js.map +1 -1
- package/dist/iife/excelts.iife.min.js +47 -47
- package/dist/types/index.browser.d.ts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/modules/excel/image.d.ts +27 -2
- package/dist/types/modules/excel/stream/worksheet-writer.d.ts +16 -1
- package/dist/types/modules/excel/types.d.ts +72 -0
- package/dist/types/modules/excel/utils/drawing-utils.d.ts +4 -0
- package/dist/types/modules/excel/utils/ooxml-paths.d.ts +4 -0
- package/dist/types/modules/excel/utils/watermark-image.d.ts +67 -0
- package/dist/types/modules/excel/worksheet.d.ts +39 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-fill-xform.d.ts +2 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/blip-xform.d.ts +3 -1
- package/dist/types/modules/excel/xlsx/xform/drawing/pic-xform.d.ts +3 -0
- package/dist/types/modules/excel/xlsx/xform/drawing/vml-drawing-xform.d.ts +19 -0
- package/dist/types/modules/excel/xlsx/xlsx.browser.d.ts +1 -0
- package/dist/types/modules/pdf/core/pdf-writer.d.ts +1 -1
- package/dist/types/modules/pdf/index.d.ts +1 -1
- package/dist/types/modules/pdf/render/page-renderer.d.ts +29 -1
- package/dist/types/modules/pdf/types.d.ts +235 -0
- package/package.json +1 -1
|
@@ -339,7 +339,241 @@ export interface PdfExportOptions {
|
|
|
339
339
|
printHighQuality: boolean;
|
|
340
340
|
}>;
|
|
341
341
|
};
|
|
342
|
+
/**
|
|
343
|
+
* Watermark to render on every page.
|
|
344
|
+
* Supports text watermarks (e.g. "CONFIDENTIAL") and image watermarks (e.g. company logo).
|
|
345
|
+
*
|
|
346
|
+
* @example Text watermark:
|
|
347
|
+
* ```typescript
|
|
348
|
+
* watermark: {
|
|
349
|
+
* type: "text",
|
|
350
|
+
* text: "DRAFT",
|
|
351
|
+
* opacity: 0.1,
|
|
352
|
+
* rotation: -45
|
|
353
|
+
* }
|
|
354
|
+
* ```
|
|
355
|
+
*
|
|
356
|
+
* @example Image watermark:
|
|
357
|
+
* ```typescript
|
|
358
|
+
* watermark: {
|
|
359
|
+
* type: "image",
|
|
360
|
+
* data: logoPng,
|
|
361
|
+
* format: "png",
|
|
362
|
+
* opacity: 0.08
|
|
363
|
+
* }
|
|
364
|
+
* ```
|
|
365
|
+
*/
|
|
366
|
+
watermark?: PdfWatermark;
|
|
342
367
|
}
|
|
368
|
+
/**
|
|
369
|
+
* Text watermark configuration for PDF export.
|
|
370
|
+
*
|
|
371
|
+
* Renders semi-transparent text (e.g. "CONFIDENTIAL", "DRAFT") on every page.
|
|
372
|
+
*
|
|
373
|
+
* @example
|
|
374
|
+
* ```typescript
|
|
375
|
+
* const bytes = await pdf(data, {
|
|
376
|
+
* watermark: {
|
|
377
|
+
* type: "text",
|
|
378
|
+
* text: "CONFIDENTIAL",
|
|
379
|
+
* color: { r: 0.8, g: 0, b: 0 },
|
|
380
|
+
* opacity: 0.1,
|
|
381
|
+
* rotation: -45
|
|
382
|
+
* }
|
|
383
|
+
* });
|
|
384
|
+
* ```
|
|
385
|
+
*/
|
|
386
|
+
export interface PdfTextWatermark {
|
|
387
|
+
type: "text";
|
|
388
|
+
/** The watermark text to display. */
|
|
389
|
+
text: string;
|
|
390
|
+
/**
|
|
391
|
+
* Font size in points.
|
|
392
|
+
* @default 54
|
|
393
|
+
*/
|
|
394
|
+
fontSize?: number;
|
|
395
|
+
/**
|
|
396
|
+
* Text color (RGB, each 0-1).
|
|
397
|
+
* @default { r: 0.75, g: 0.75, b: 0.75 }
|
|
398
|
+
*/
|
|
399
|
+
color?: PdfColor;
|
|
400
|
+
/**
|
|
401
|
+
* Opacity (0 = fully transparent, 1 = fully opaque).
|
|
402
|
+
* @default 0.15
|
|
403
|
+
*/
|
|
404
|
+
opacity?: number;
|
|
405
|
+
/**
|
|
406
|
+
* Rotation angle in degrees (positive = counter-clockwise).
|
|
407
|
+
* @default -45
|
|
408
|
+
*/
|
|
409
|
+
rotation?: number;
|
|
410
|
+
/**
|
|
411
|
+
* Font family name. Must be a standard PDF font (Type1) or the embedded font.
|
|
412
|
+
* @default "Helvetica"
|
|
413
|
+
*/
|
|
414
|
+
fontFamily?: string;
|
|
415
|
+
/**
|
|
416
|
+
* Whether to render in bold.
|
|
417
|
+
* @default false
|
|
418
|
+
*/
|
|
419
|
+
bold?: boolean;
|
|
420
|
+
/**
|
|
421
|
+
* Whether to render in italic.
|
|
422
|
+
* @default false
|
|
423
|
+
*/
|
|
424
|
+
italic?: boolean;
|
|
425
|
+
/**
|
|
426
|
+
* Position on the page. `"center"` places the watermark at the geometric center.
|
|
427
|
+
* A custom `{ x, y }` object specifies the **center point** of the watermark
|
|
428
|
+
* in PDF points (origin at bottom-left corner of the page).
|
|
429
|
+
* @default "center"
|
|
430
|
+
*/
|
|
431
|
+
position?: "center" | {
|
|
432
|
+
x: number;
|
|
433
|
+
y: number;
|
|
434
|
+
};
|
|
435
|
+
/**
|
|
436
|
+
* When true, the watermark text is tiled in a repeating grid across the entire page.
|
|
437
|
+
* @default false
|
|
438
|
+
*/
|
|
439
|
+
repeat?: boolean;
|
|
440
|
+
/**
|
|
441
|
+
* Horizontal spacing (in points) between repeated watermark tiles.
|
|
442
|
+
* Only used when `repeat` is true.
|
|
443
|
+
* @default 200
|
|
444
|
+
*/
|
|
445
|
+
repeatSpacingX?: number;
|
|
446
|
+
/**
|
|
447
|
+
* Vertical spacing (in points) between repeated watermark tiles.
|
|
448
|
+
* Only used when `repeat` is true.
|
|
449
|
+
* @default 200
|
|
450
|
+
*/
|
|
451
|
+
repeatSpacingY?: number;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Image watermark configuration for PDF export.
|
|
455
|
+
*
|
|
456
|
+
* Embeds a semi-transparent image (e.g. company logo) on every page.
|
|
457
|
+
*
|
|
458
|
+
* @example
|
|
459
|
+
* ```typescript
|
|
460
|
+
* import { readFileSync } from "fs";
|
|
461
|
+
* const logo = readFileSync("logo.png");
|
|
462
|
+
*
|
|
463
|
+
* const bytes = await pdf(data, {
|
|
464
|
+
* watermark: {
|
|
465
|
+
* type: "image",
|
|
466
|
+
* data: logo,
|
|
467
|
+
* format: "png",
|
|
468
|
+
* opacity: 0.08,
|
|
469
|
+
* scale: 0.4
|
|
470
|
+
* }
|
|
471
|
+
* });
|
|
472
|
+
* ```
|
|
473
|
+
*/
|
|
474
|
+
export interface PdfImageWatermark {
|
|
475
|
+
type: "image";
|
|
476
|
+
/** Raw image bytes (JPEG or PNG). */
|
|
477
|
+
data: Uint8Array;
|
|
478
|
+
/** Image format. */
|
|
479
|
+
format: "jpeg" | "png";
|
|
480
|
+
/**
|
|
481
|
+
* Opacity (0 = fully transparent, 1 = fully opaque).
|
|
482
|
+
* @default 0.15
|
|
483
|
+
*/
|
|
484
|
+
opacity?: number;
|
|
485
|
+
/**
|
|
486
|
+
* Rotation angle in degrees (positive = counter-clockwise).
|
|
487
|
+
* @default 0
|
|
488
|
+
*/
|
|
489
|
+
rotation?: number;
|
|
490
|
+
/**
|
|
491
|
+
* Scale factor relative to the page size.
|
|
492
|
+
* 0.5 means the image's largest dimension will be scaled to
|
|
493
|
+
* 50% of the smaller page dimension (width or height).
|
|
494
|
+
* Ignored when `width` and `height` are explicitly provided.
|
|
495
|
+
* @default 0.5
|
|
496
|
+
*/
|
|
497
|
+
scale?: number;
|
|
498
|
+
/**
|
|
499
|
+
* Explicit image width in PDF points. When set together with `height`,
|
|
500
|
+
* overrides `scale` and renders the image at the exact specified dimensions.
|
|
501
|
+
*/
|
|
502
|
+
width?: number;
|
|
503
|
+
/**
|
|
504
|
+
* Explicit image height in PDF points. When set together with `width`,
|
|
505
|
+
* overrides `scale` and renders the image at the exact specified dimensions.
|
|
506
|
+
*/
|
|
507
|
+
height?: number;
|
|
508
|
+
/**
|
|
509
|
+
* Position on the page. `"center"` places the watermark at the geometric center.
|
|
510
|
+
* A custom `{ x, y }` object specifies the **center point** of the watermark
|
|
511
|
+
* in PDF points (origin at bottom-left corner of the page).
|
|
512
|
+
* @default "center"
|
|
513
|
+
*/
|
|
514
|
+
position?: "center" | {
|
|
515
|
+
x: number;
|
|
516
|
+
y: number;
|
|
517
|
+
};
|
|
518
|
+
/**
|
|
519
|
+
* When true, the watermark image is tiled in a repeating grid across the entire page.
|
|
520
|
+
* @default false
|
|
521
|
+
*/
|
|
522
|
+
repeat?: boolean;
|
|
523
|
+
/**
|
|
524
|
+
* Horizontal spacing (in points) between repeated watermark tiles.
|
|
525
|
+
* Only used when `repeat` is true.
|
|
526
|
+
* @default 200
|
|
527
|
+
*/
|
|
528
|
+
repeatSpacingX?: number;
|
|
529
|
+
/**
|
|
530
|
+
* Vertical spacing (in points) between repeated watermark tiles.
|
|
531
|
+
* Only used when `repeat` is true.
|
|
532
|
+
* @default 200
|
|
533
|
+
*/
|
|
534
|
+
repeatSpacingY?: number;
|
|
535
|
+
}
|
|
536
|
+
/**
|
|
537
|
+
* Common watermark filter and placement options shared by text and image watermarks.
|
|
538
|
+
*/
|
|
539
|
+
export interface PdfWatermarkFilter {
|
|
540
|
+
/**
|
|
541
|
+
* Restrict the watermark to specific page numbers (1-based, document-global).
|
|
542
|
+
* When set, only pages whose number is in this array get the watermark.
|
|
543
|
+
* If omitted, all pages receive the watermark.
|
|
544
|
+
*
|
|
545
|
+
* @example Only on the first page:
|
|
546
|
+
* ```typescript
|
|
547
|
+
* watermark: { type: "text", text: "COVER", pages: [1] }
|
|
548
|
+
* ```
|
|
549
|
+
*/
|
|
550
|
+
pages?: number[];
|
|
551
|
+
/**
|
|
552
|
+
* Restrict the watermark to specific sheet names (case-insensitive).
|
|
553
|
+
* When set, only pages belonging to the named sheets get the watermark.
|
|
554
|
+
* If omitted, all sheets receive the watermark.
|
|
555
|
+
*
|
|
556
|
+
* @example Only on the "Summary" sheet:
|
|
557
|
+
* ```typescript
|
|
558
|
+
* watermark: { type: "text", text: "DRAFT", sheets: ["Summary"] }
|
|
559
|
+
* ```
|
|
560
|
+
*/
|
|
561
|
+
sheets?: string[];
|
|
562
|
+
/**
|
|
563
|
+
* Watermark layering relative to page content.
|
|
564
|
+
*
|
|
565
|
+
* - `"under"` — watermark renders **behind** all page content including
|
|
566
|
+
* cell fills, borders, text, grid lines, headers, and footers (default)
|
|
567
|
+
* - `"over"` — watermark renders **on top of** all page content
|
|
568
|
+
*
|
|
569
|
+
* @default "under"
|
|
570
|
+
*/
|
|
571
|
+
placement?: "under" | "over";
|
|
572
|
+
}
|
|
573
|
+
/**
|
|
574
|
+
* Watermark configuration — either text or image, with optional page/sheet filters.
|
|
575
|
+
*/
|
|
576
|
+
export type PdfWatermark = (PdfTextWatermark | PdfImageWatermark) & PdfWatermarkFilter;
|
|
343
577
|
/**
|
|
344
578
|
* Page margins in PDF points.
|
|
345
579
|
*/
|
|
@@ -369,6 +603,7 @@ export interface ResolvedPdfOptions {
|
|
|
369
603
|
author: string;
|
|
370
604
|
subject: string;
|
|
371
605
|
creator: string;
|
|
606
|
+
watermark?: PdfWatermark;
|
|
372
607
|
}
|
|
373
608
|
/**
|
|
374
609
|
* RGBA color used internally for PDF rendering.
|
package/package.json
CHANGED