@jasy/pdf 1.0.0-alpha.1 → 1.0.0-alpha.10
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/LICENSE +21 -0
- package/README.md +35 -21
- package/dist/api/args.d.ts +1 -1
- package/dist/api/args.js +2 -5
- package/dist/api/color.d.ts +4 -4
- package/dist/api/color.js +11 -17
- package/dist/api/content.d.ts +20 -13
- package/dist/api/content.js +44 -29
- package/dist/api/descriptor.d.ts +2 -2
- package/dist/api/descriptor.js +121 -31
- package/dist/api/dimension.d.ts +76 -0
- package/dist/api/dimension.js +43 -0
- package/dist/api/font-url.d.ts +28 -0
- package/dist/api/font-url.js +134 -0
- package/dist/api/forms.d.ts +347 -0
- package/dist/api/forms.js +189 -0
- package/dist/api/gradient.d.ts +53 -0
- package/dist/api/gradient.js +97 -0
- package/dist/api/index.d.ts +13 -8
- package/dist/api/index.js +13 -24
- package/dist/api/insets.d.ts +19 -12
- package/dist/api/insets.js +19 -12
- package/dist/api/layout.d.ts +149 -25
- package/dist/api/layout.js +182 -51
- package/dist/api/page-builder.d.ts +40 -0
- package/dist/api/page-builder.js +44 -0
- package/dist/api/structure.d.ts +100 -13
- package/dist/api/structure.js +179 -88
- package/dist/api/table.d.ts +5 -5
- package/dist/api/table.js +38 -26
- package/dist/api/text.d.ts +90 -4
- package/dist/api/text.js +116 -31
- package/dist/assets/font-data.d.ts +2 -0
- package/dist/assets/font-data.js +21 -0
- package/dist/assets/font-data.ts +37 -0
- package/dist/common/color.js +1 -5
- package/dist/constants/page-sizes.js +3 -6
- package/dist/constants/pdf-parts.js +1 -4
- package/dist/crypto/legacy-handler.d.ts +43 -0
- package/dist/crypto/legacy-handler.js +145 -0
- package/dist/crypto/security-handler.d.ts +62 -0
- package/dist/crypto/security-handler.js +155 -0
- package/dist/crypto/webcrypto.d.ts +11 -0
- package/dist/crypto/webcrypto.js +62 -0
- package/dist/edit/acroform-reader.d.ts +70 -0
- package/dist/edit/acroform-reader.js +126 -0
- package/dist/edit/appearance.d.ts +47 -0
- package/dist/edit/appearance.js +171 -0
- package/dist/edit/document.d.ts +145 -0
- package/dist/edit/document.js +642 -0
- package/dist/edit/fill.d.ts +65 -0
- package/dist/edit/fill.js +424 -0
- package/dist/edit/flatten.d.ts +54 -0
- package/dist/edit/flatten.js +462 -0
- package/dist/edit/index.d.ts +20 -0
- package/dist/edit/index.js +18 -0
- package/dist/edit/lexer.d.ts +30 -0
- package/dist/edit/lexer.js +285 -0
- package/dist/edit/objects.d.ts +68 -0
- package/dist/edit/objects.js +83 -0
- package/dist/edit/writer.d.ts +60 -0
- package/dist/edit/writer.js +283 -0
- package/dist/elements/container-element.d.ts +50 -5
- package/dist/elements/container-element.js +100 -39
- package/dist/elements/forms/checkbox-element.d.ts +51 -0
- package/dist/elements/forms/checkbox-element.js +48 -0
- package/dist/elements/forms/choice-element.d.ts +53 -0
- package/dist/elements/forms/choice-element.js +59 -0
- package/dist/elements/forms/push-button-element.d.ts +56 -0
- package/dist/elements/forms/push-button-element.js +49 -0
- package/dist/elements/forms/radio-element.d.ts +52 -0
- package/dist/elements/forms/radio-element.js +49 -0
- package/dist/elements/forms/signature-element.d.ts +54 -0
- package/dist/elements/forms/signature-element.js +47 -0
- package/dist/elements/forms/text-field-element.d.ts +61 -0
- package/dist/elements/forms/text-field-element.js +54 -0
- package/dist/elements/image-element.d.ts +58 -6
- package/dist/elements/image-element.js +145 -111
- package/dist/elements/index.d.ts +26 -10
- package/dist/elements/index.js +26 -28
- package/dist/elements/layout/anchor-element.d.ts +23 -0
- package/dist/elements/layout/anchor-element.js +27 -0
- package/dist/elements/layout/bookmark-element.d.ts +27 -0
- package/dist/elements/layout/bookmark-element.js +30 -0
- package/dist/elements/layout/default-text-style-element.d.ts +30 -0
- package/dist/elements/layout/default-text-style-element.js +47 -0
- package/dist/elements/layout/deferred-element.d.ts +3 -3
- package/dist/elements/layout/deferred-element.js +4 -8
- package/dist/elements/layout/expanded-element.d.ts +6 -4
- package/dist/elements/layout/expanded-element.js +22 -17
- package/dist/elements/layout/keep-together-element.d.ts +42 -0
- package/dist/elements/layout/keep-together-element.js +85 -0
- package/dist/elements/layout/link-element.d.ts +33 -0
- package/dist/elements/layout/link-element.js +39 -0
- package/dist/elements/layout/padding-element.d.ts +10 -5
- package/dist/elements/layout/padding-element.js +25 -16
- package/dist/elements/layout/page-break-element.d.ts +17 -0
- package/dist/elements/layout/page-break-element.js +24 -0
- package/dist/elements/layout/page-builder-element.d.ts +32 -0
- package/dist/elements/layout/page-builder-element.js +45 -0
- package/dist/elements/layout/positioned-element.d.ts +47 -0
- package/dist/elements/layout/positioned-element.js +73 -0
- package/dist/elements/layout/repeating-header-element.d.ts +3 -3
- package/dist/elements/layout/repeating-header-element.js +8 -12
- package/dist/elements/layout/rotated-box-element.d.ts +35 -0
- package/dist/elements/layout/rotated-box-element.js +54 -0
- package/dist/elements/layout/rotated-element.d.ts +32 -0
- package/dist/elements/layout/rotated-element.js +41 -0
- package/dist/elements/layout/sized-container-element.d.ts +2 -2
- package/dist/elements/layout/sized-container-element.js +6 -11
- package/dist/elements/layout/struct-group.d.ts +28 -0
- package/dist/elements/layout/struct-group.js +42 -0
- package/dist/elements/line-element.d.ts +3 -3
- package/dist/elements/line-element.js +5 -10
- package/dist/elements/page-element.d.ts +26 -6
- package/dist/elements/page-element.js +72 -27
- package/dist/elements/pdf-document-element.d.ts +10 -4
- package/dist/elements/pdf-document-element.js +11 -10
- package/dist/elements/pdf-element.d.ts +150 -4
- package/dist/elements/pdf-element.js +138 -20
- package/dist/elements/rectangle-element.d.ts +52 -11
- package/dist/elements/rectangle-element.js +129 -36
- package/dist/elements/row-element.d.ts +45 -4
- package/dist/elements/row-element.js +66 -18
- package/dist/elements/text-element.d.ts +132 -11
- package/dist/elements/text-element.js +206 -56
- package/dist/forms/acroform.d.ts +63 -0
- package/dist/forms/acroform.js +427 -0
- package/dist/forms/appearance.d.ts +58 -0
- package/dist/forms/appearance.js +204 -0
- package/dist/forms/field.d.ts +164 -0
- package/dist/forms/field.js +1 -0
- package/dist/forms/pdf.d.ts +19 -0
- package/dist/forms/pdf.js +28 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -19
- package/dist/ir/display-list.d.ts +197 -8
- package/dist/ir/display-list.js +8 -2
- package/dist/layout/alignment.d.ts +10 -0
- package/dist/layout/alignment.js +6 -0
- package/dist/layout/box-constraints.d.ts +61 -0
- package/dist/layout/box-constraints.js +88 -6
- package/dist/layout/collect-images.d.ts +9 -0
- package/dist/layout/collect-images.js +34 -0
- package/dist/layout/fragmentation.d.ts +20 -1
- package/dist/layout/fragmentation.js +74 -18
- package/dist/layout/insets.d.ts +28 -0
- package/dist/layout/insets.js +20 -0
- package/dist/platform/browser-fs.d.ts +2 -0
- package/dist/platform/browser-fs.js +9 -0
- package/dist/platform/browser-image.d.ts +5 -0
- package/dist/platform/browser-image.js +13 -0
- package/dist/platform/node-fs.d.ts +2 -0
- package/dist/platform/node-fs.js +10 -0
- package/dist/platform/node-image.d.ts +5 -0
- package/dist/platform/node-image.js +9 -0
- package/dist/renderer/anchor-renderer.d.ts +6 -0
- package/dist/renderer/anchor-renderer.js +11 -0
- package/dist/renderer/bookmark-renderer.d.ts +6 -0
- package/dist/renderer/bookmark-renderer.js +11 -0
- package/dist/renderer/container-renderer.d.ts +3 -3
- package/dist/renderer/container-renderer.js +11 -28
- package/dist/renderer/default-text-style-renderer.d.ts +6 -0
- package/dist/renderer/default-text-style-renderer.js +10 -0
- package/dist/renderer/deferred-renderer.d.ts +3 -3
- package/dist/renderer/deferred-renderer.js +8 -23
- package/dist/renderer/emoji-image.d.ts +9 -0
- package/dist/renderer/emoji-image.js +68 -0
- package/dist/renderer/expanded-renderer.d.ts +3 -3
- package/dist/renderer/expanded-renderer.js +6 -21
- package/dist/renderer/form-field-renderer.d.ts +20 -0
- package/dist/renderer/form-field-renderer.js +12 -0
- package/dist/renderer/image-renderer.d.ts +4 -4
- package/dist/renderer/image-renderer.js +86 -75
- package/dist/renderer/index.d.ts +10 -10
- package/dist/renderer/index.js +10 -26
- package/dist/renderer/keep-together-renderer.d.ts +10 -0
- package/dist/renderer/keep-together-renderer.js +12 -0
- package/dist/renderer/line-renderer.d.ts +3 -3
- package/dist/renderer/line-renderer.js +13 -28
- package/dist/renderer/link-renderer.d.ts +6 -0
- package/dist/renderer/link-renderer.js +11 -0
- package/dist/renderer/padding-renderer.d.ts +3 -3
- package/dist/renderer/padding-renderer.js +6 -21
- package/dist/renderer/page-break-renderer.d.ts +14 -0
- package/dist/renderer/page-break-renderer.js +15 -0
- package/dist/renderer/page-builder-renderer.d.ts +6 -0
- package/dist/renderer/page-builder-renderer.js +11 -0
- package/dist/renderer/page-renderer.d.ts +2 -2
- package/dist/renderer/page-renderer.js +115 -77
- package/dist/renderer/pdf-backend.d.ts +31 -4
- package/dist/renderer/pdf-backend.js +287 -49
- package/dist/renderer/pdf-config.js +4 -7
- package/dist/renderer/pdf-document-class.d.ts +5 -5
- package/dist/renderer/pdf-document-class.js +27 -41
- package/dist/renderer/pdf-document-renderer.d.ts +19 -10
- package/dist/renderer/pdf-document-renderer.js +135 -91
- package/dist/renderer/pdf-renderer.d.ts +2 -2
- package/dist/renderer/pdf-renderer.js +165 -90
- package/dist/renderer/positioned-renderer.d.ts +6 -0
- package/dist/renderer/positioned-renderer.js +10 -0
- package/dist/renderer/rectangle-renderer.d.ts +3 -3
- package/dist/renderer/rectangle-renderer.js +49 -44
- package/dist/renderer/repeating-header-renderer.d.ts +3 -3
- package/dist/renderer/repeating-header-renderer.js +10 -26
- package/dist/renderer/rotated-renderer.d.ts +7 -0
- package/dist/renderer/rotated-renderer.js +29 -0
- package/dist/renderer/row-renderer.d.ts +3 -3
- package/dist/renderer/row-renderer.js +11 -28
- package/dist/renderer/struct-group-renderer.d.ts +10 -0
- package/dist/renderer/struct-group-renderer.js +24 -0
- package/dist/renderer/text-renderer.d.ts +9 -5
- package/dist/renderer/text-renderer.js +437 -89
- package/dist/text/advance.d.ts +34 -0
- package/dist/text/advance.js +45 -0
- package/dist/text/arabic.d.ts +20 -0
- package/dist/text/arabic.js +101 -0
- package/dist/text/bidi.d.ts +33 -0
- package/dist/text/bidi.js +94 -0
- package/dist/text/emoji-codepoints.d.ts +1 -0
- package/dist/text/emoji-codepoints.js +29 -0
- package/dist/text/font-fallback.d.ts +25 -0
- package/dist/text/font-fallback.js +38 -0
- package/dist/text/line-breaker.d.ts +50 -12
- package/dist/text/line-breaker.js +158 -37
- package/dist/text/line-metrics.d.ts +49 -0
- package/dist/text/line-metrics.js +57 -0
- package/dist/text/orphans-widows.d.ts +27 -0
- package/dist/text/orphans-widows.js +53 -0
- package/dist/text/shape.d.ts +29 -0
- package/dist/text/shape.js +67 -0
- package/dist/text/text-decoration.d.ts +50 -0
- package/dist/text/text-decoration.js +62 -0
- package/dist/text/text-style.d.ts +60 -0
- package/dist/text/text-style.js +79 -0
- package/dist/utils/afm-parser.d.ts +34 -0
- package/dist/utils/afm-parser.js +76 -17
- package/dist/utils/bytes.d.ts +24 -0
- package/dist/utils/bytes.js +76 -0
- package/dist/utils/dest-registry.d.ts +22 -0
- package/dist/utils/dest-registry.js +32 -0
- package/dist/utils/flex-layout.d.ts +36 -9
- package/dist/utils/flex-layout.js +207 -30
- package/dist/utils/font-metrics.d.ts +20 -1
- package/dist/utils/font-metrics.js +1 -2
- package/dist/utils/font-path.js +3 -6
- package/dist/utils/gsub.d.ts +36 -0
- package/dist/utils/gsub.js +178 -0
- package/dist/utils/image-helper.d.ts +6 -5
- package/dist/utils/image-helper.js +101 -111
- package/dist/utils/inflate.d.ts +16 -0
- package/dist/utils/inflate.js +52 -0
- package/dist/utils/md5.d.ts +4 -0
- package/dist/utils/md5.js +79 -0
- package/dist/utils/outline.d.ts +21 -0
- package/dist/utils/outline.js +79 -0
- package/dist/utils/pdf-object-manager.d.ts +110 -8
- package/dist/utils/pdf-object-manager.js +583 -141
- package/dist/utils/renderer-registry.d.ts +13 -1
- package/dist/utils/renderer-registry.js +23 -6
- package/dist/utils/struct-tree.d.ts +44 -0
- package/dist/utils/struct-tree.js +129 -0
- package/dist/utils/ttf-parser.d.ts +134 -2
- package/dist/utils/ttf-parser.js +873 -50
- package/dist/utils/ttf-subsetter.d.ts +1 -1
- package/dist/utils/ttf-subsetter.js +40 -42
- package/dist/utils/ua-xmp.d.ts +9 -0
- package/dist/utils/ua-xmp.js +32 -0
- package/dist/utils/utf8-to-windows1252-encoder.d.ts +6 -0
- package/dist/utils/utf8-to-windows1252-encoder.js +11 -4
- package/dist/utils/woff.d.ts +10 -0
- package/dist/utils/woff.js +116 -0
- package/dist/validators/element-validator.d.ts +2 -2
- package/dist/validators/element-validator.js +31 -26
- package/package.json +22 -2
|
@@ -1,74 +1,78 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
1
|
+
import { BoxFit } from "../elements/image-element.js";
|
|
2
|
+
import { bytesFromLatin1 } from "../utils/bytes.js";
|
|
3
|
+
import { applyContainFit, applyCoverFit, applyFillFit, applyFitNone, decodePngToRgbFlate, } from "../utils/image-helper.js";
|
|
4
|
+
import { isRounded } from "../ir/display-list.js";
|
|
5
|
+
export class ImageRenderer {
|
|
6
|
+
static async render(imageElement, objectManager) {
|
|
7
|
+
// Load the image and convert it in a binary string
|
|
8
|
+
let { x, y, width, height, image, fit, radius, alt } = imageElement.getProps();
|
|
9
|
+
await image.init(); // Load and initialize the image
|
|
10
|
+
const imageType = await image.getImageType(); // For the moment we can handle `png` and `jpg/jpeg` files
|
|
11
|
+
const fileData = await image.getFileData();
|
|
12
|
+
const dimensions = await image.getImageDimensions();
|
|
13
|
+
if (!fileData) {
|
|
14
|
+
throw new Error("File data cannot be `null`");
|
|
15
|
+
}
|
|
16
|
+
// JPEG embeds raw (PDF decodes DCTDecode natively). PNG is not a valid Flate stream,
|
|
17
|
+
// so decode it to raw DeviceRGB samples that the FlateDecode XObject path expects.
|
|
18
|
+
let embedData = fileData;
|
|
19
|
+
let smask;
|
|
20
|
+
if (imageType === "FlateDecode") {
|
|
21
|
+
const decoded = await decodePngToRgbFlate(bytesFromLatin1(fileData));
|
|
22
|
+
embedData = decoded.data;
|
|
23
|
+
smask = decoded.smask;
|
|
24
|
+
}
|
|
25
|
+
// Now we check the `fit` property and changing the dimensions of the image
|
|
26
|
+
// Optionally we must add an overflow container
|
|
27
|
+
let mustCreateOverflowContainer = false;
|
|
28
|
+
const containerDimensions = JSON.parse(JSON.stringify({ x, y, width, height })); // Deep clone images dimensions
|
|
29
|
+
switch (fit) {
|
|
30
|
+
case BoxFit.cover:
|
|
31
|
+
mustCreateOverflowContainer = true;
|
|
32
|
+
const fitCoverResult = applyCoverFit(dimensions.width, dimensions.height, width ?? 0, height ?? 0);
|
|
33
|
+
x += fitCoverResult.offsetX;
|
|
34
|
+
y += fitCoverResult.offsetY;
|
|
35
|
+
width = fitCoverResult.width;
|
|
36
|
+
height = fitCoverResult.height;
|
|
37
|
+
break;
|
|
38
|
+
case BoxFit.contain:
|
|
39
|
+
mustCreateOverflowContainer = true;
|
|
40
|
+
const fitContainResult = applyContainFit(dimensions.width, dimensions.height, width ?? 0, height ?? 0);
|
|
41
|
+
x += fitContainResult.offsetX;
|
|
42
|
+
y += fitContainResult.offsetY;
|
|
43
|
+
width = fitContainResult.width;
|
|
44
|
+
height = fitContainResult.height;
|
|
45
|
+
break;
|
|
46
|
+
case BoxFit.none:
|
|
47
|
+
const fitNoneResult = applyFitNone(dimensions.width, dimensions.height, width ?? 0, height ?? 0);
|
|
48
|
+
x += fitNoneResult.offsetX;
|
|
49
|
+
y += fitNoneResult.offsetY;
|
|
50
|
+
width = fitNoneResult.width;
|
|
51
|
+
height = fitNoneResult.height;
|
|
52
|
+
break;
|
|
53
|
+
case BoxFit.fill:
|
|
54
|
+
const fitFillResult = applyFillFit(width ?? 0, height ?? 0);
|
|
55
|
+
width = fitFillResult.width;
|
|
56
|
+
height = fitFillResult.height;
|
|
57
|
+
}
|
|
58
|
+
// A radius rounds the image BOX (the element frame), so it clips to that frame too -
|
|
59
|
+
// independent of the cover/contain overflow clip.
|
|
60
|
+
const wantsClip = mustCreateOverflowContainer || isRounded(radius);
|
|
61
|
+
// The fitted geometry becomes a display-list primitive; the backend registers
|
|
62
|
+
// the XObject and emits the placement (+ clip, rounded when a radius is set).
|
|
63
|
+
const node = {
|
|
64
|
+
type: "image",
|
|
65
|
+
x,
|
|
66
|
+
y,
|
|
67
|
+
width: width,
|
|
68
|
+
height: height,
|
|
69
|
+
intrinsicWidth: dimensions.width,
|
|
70
|
+
intrinsicHeight: dimensions.height,
|
|
71
|
+
data: embedData,
|
|
72
|
+
imageType,
|
|
73
|
+
...(smask ? { smask } : {}),
|
|
74
|
+
...(radius ? { radius } : {}),
|
|
75
|
+
...(wantsClip
|
|
72
76
|
? {
|
|
73
77
|
clip: {
|
|
74
78
|
x: containerDimensions.x,
|
|
@@ -77,9 +81,16 @@ class ImageRenderer {
|
|
|
77
81
|
height: containerDimensions.height,
|
|
78
82
|
},
|
|
79
83
|
}
|
|
80
|
-
: {})
|
|
81
|
-
|
|
82
|
-
|
|
84
|
+
: {}),
|
|
85
|
+
};
|
|
86
|
+
// Accessible tagging: an image WITH alt text is a Figure; without, it stays untagged and the backend
|
|
87
|
+
// treats it as decoration (an Artifact). One struct element per image.
|
|
88
|
+
if (objectManager.struct.enabled && alt) {
|
|
89
|
+
node.tag = {
|
|
90
|
+
role: "Figure",
|
|
91
|
+
key: objectManager.struct.openElement(imageElement.structId, "Figure", { alt }),
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return [node];
|
|
83
95
|
}
|
|
84
96
|
}
|
|
85
|
-
exports.ImageRenderer = ImageRenderer;
|
package/dist/renderer/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export * from "./container-renderer";
|
|
2
|
-
export * from "./page-renderer";
|
|
3
|
-
export * from "./pdf-document-class";
|
|
4
|
-
export * from "./pdf-document-renderer";
|
|
5
|
-
export * from "./pdf-renderer";
|
|
6
|
-
export * from "./rectangle-renderer";
|
|
7
|
-
export * from "./text-renderer";
|
|
8
|
-
export * from "./expanded-renderer";
|
|
9
|
-
export * from "./line-renderer";
|
|
10
|
-
export * from "./row-renderer";
|
|
1
|
+
export * from "./container-renderer.js";
|
|
2
|
+
export * from "./page-renderer.js";
|
|
3
|
+
export * from "./pdf-document-class.js";
|
|
4
|
+
export * from "./pdf-document-renderer.js";
|
|
5
|
+
export * from "./pdf-renderer.js";
|
|
6
|
+
export * from "./rectangle-renderer.js";
|
|
7
|
+
export * from "./text-renderer.js";
|
|
8
|
+
export * from "./expanded-renderer.js";
|
|
9
|
+
export * from "./line-renderer.js";
|
|
10
|
+
export * from "./row-renderer.js";
|
package/dist/renderer/index.js
CHANGED
|
@@ -1,26 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./container-renderer"), exports);
|
|
18
|
-
__exportStar(require("./page-renderer"), exports);
|
|
19
|
-
__exportStar(require("./pdf-document-class"), exports);
|
|
20
|
-
__exportStar(require("./pdf-document-renderer"), exports);
|
|
21
|
-
__exportStar(require("./pdf-renderer"), exports);
|
|
22
|
-
__exportStar(require("./rectangle-renderer"), exports);
|
|
23
|
-
__exportStar(require("./text-renderer"), exports);
|
|
24
|
-
__exportStar(require("./expanded-renderer"), exports);
|
|
25
|
-
__exportStar(require("./line-renderer"), exports);
|
|
26
|
-
__exportStar(require("./row-renderer"), exports);
|
|
1
|
+
export * from "./container-renderer.js";
|
|
2
|
+
export * from "./page-renderer.js";
|
|
3
|
+
export * from "./pdf-document-class.js";
|
|
4
|
+
export * from "./pdf-document-renderer.js";
|
|
5
|
+
export * from "./pdf-renderer.js";
|
|
6
|
+
export * from "./rectangle-renderer.js";
|
|
7
|
+
export * from "./text-renderer.js";
|
|
8
|
+
export * from "./expanded-renderer.js";
|
|
9
|
+
export * from "./line-renderer.js";
|
|
10
|
+
export * from "./row-renderer.js";
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { KeepTogetherElement } from "../elements/layout/keep-together-element.js";
|
|
2
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
|
+
/**
|
|
5
|
+
* A `keepTogether` is layout-transparent: it just renders its child. All of its work happens in the
|
|
6
|
+
* layout pass (`fragment`), never here.
|
|
7
|
+
*/
|
|
8
|
+
export declare class KeepTogetherRenderer {
|
|
9
|
+
static render(group: KeepTogetherElement, objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RendererRegistry } from "../utils/renderer-registry.js";
|
|
2
|
+
/**
|
|
3
|
+
* A `keepTogether` is layout-transparent: it just renders its child. All of its work happens in the
|
|
4
|
+
* layout pass (`fragment`), never here.
|
|
5
|
+
*/
|
|
6
|
+
export class KeepTogetherRenderer {
|
|
7
|
+
static async render(group, objectManager) {
|
|
8
|
+
const { child } = group.getProps();
|
|
9
|
+
const renderer = RendererRegistry.getRenderer(child);
|
|
10
|
+
return renderer(child, objectManager);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PDFObjectManager } from "../utils/pdf-object-manager";
|
|
2
|
-
import { LineElement } from "../elements";
|
|
3
|
-
import { IRNode } from "../ir/display-list";
|
|
1
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
2
|
+
import { LineElement } from "../elements/index.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
4
|
export declare class LineRenderer {
|
|
5
5
|
static render(lineElement: LineElement, _objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
6
6
|
}
|
|
@@ -1,30 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
static render(lineElement, _objectManager) {
|
|
15
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
16
|
-
const { x, y, xEnd, yEnd, color, strokeWidth } = lineElement.getProps();
|
|
17
|
-
const node = {
|
|
18
|
-
type: "line",
|
|
19
|
-
x1: x,
|
|
20
|
-
y1: y,
|
|
21
|
-
x2: xEnd,
|
|
22
|
-
y2: yEnd,
|
|
23
|
-
stroke: color,
|
|
24
|
-
strokeWidth: strokeWidth,
|
|
25
|
-
};
|
|
26
|
-
return [node];
|
|
27
|
-
});
|
|
1
|
+
export class LineRenderer {
|
|
2
|
+
static async render(lineElement, _objectManager) {
|
|
3
|
+
const { x, y, xEnd, yEnd, color, strokeWidth } = lineElement.getProps();
|
|
4
|
+
const node = {
|
|
5
|
+
type: "line",
|
|
6
|
+
x1: x,
|
|
7
|
+
y1: y,
|
|
8
|
+
x2: xEnd,
|
|
9
|
+
y2: yEnd,
|
|
10
|
+
stroke: color,
|
|
11
|
+
strokeWidth: strokeWidth,
|
|
12
|
+
};
|
|
13
|
+
return [node];
|
|
28
14
|
}
|
|
29
15
|
}
|
|
30
|
-
exports.LineRenderer = LineRenderer;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
2
|
+
import { LinkElement } from "../elements/layout/link-element.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
|
+
export declare class LinkRenderer {
|
|
5
|
+
static render(element: LinkElement, objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RendererRegistry } from "../utils/renderer-registry.js";
|
|
2
|
+
export class LinkRenderer {
|
|
3
|
+
static async render(element, objectManager) {
|
|
4
|
+
const { href, dest, child, x, y, width, height } = element.getProps();
|
|
5
|
+
const renderer = RendererRegistry.getRenderer(child);
|
|
6
|
+
const childNodes = await renderer(child, objectManager);
|
|
7
|
+
// The child draws normally; a Link IR node carries the clickable rect + target (external href or
|
|
8
|
+
// internal dest) for the page renderer to emit as a /Link annotation (no content-stream ops itself).
|
|
9
|
+
return [...childNodes, { type: "link", x, y, width, height, href, dest }];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PDFObjectManager } from "../utils/pdf-object-manager";
|
|
2
|
-
import { PaddingElement } from "../elements/layout/padding-element";
|
|
3
|
-
import { IRNode } from "../ir/display-list";
|
|
1
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
2
|
+
import { PaddingElement } from "../elements/layout/padding-element.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
4
|
export declare class PaddingRenderer {
|
|
5
5
|
static render(paddingElement: PaddingElement, objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
6
6
|
}
|
|
@@ -1,23 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.PaddingRenderer = void 0;
|
|
13
|
-
const renderer_registry_1 = require("../utils/renderer-registry");
|
|
14
|
-
class PaddingRenderer {
|
|
15
|
-
static render(paddingElement, objectManager) {
|
|
16
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
17
|
-
const { child } = paddingElement.getProps();
|
|
18
|
-
const renderer = renderer_registry_1.RendererRegistry.getRenderer(child);
|
|
19
|
-
return renderer ? yield renderer(child, objectManager) : [];
|
|
20
|
-
});
|
|
1
|
+
import { RendererRegistry } from "../utils/renderer-registry.js";
|
|
2
|
+
export class PaddingRenderer {
|
|
3
|
+
static async render(paddingElement, objectManager) {
|
|
4
|
+
const { child } = paddingElement.getProps();
|
|
5
|
+
const renderer = RendererRegistry.getRenderer(child);
|
|
6
|
+
return renderer(child, objectManager);
|
|
21
7
|
}
|
|
22
8
|
}
|
|
23
|
-
exports.PaddingRenderer = PaddingRenderer;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
2
|
+
import { PageBreakElement } from "../elements/layout/page-break-element.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
|
+
/**
|
|
5
|
+
* A `PageBreak` draws nothing - the pagination packer consumes it at the cut, so in a vertical flow it
|
|
6
|
+
* never reaches this pass. Reaching it therefore means the break was ineffective: it sat somewhere that
|
|
7
|
+
* does not paginate, like inside a horizontal `Row` (a row is one line, you cannot split it across
|
|
8
|
+
* pages - CSS and react-pdf ignore a forced break there too). We degrade to drawing nothing, but warn
|
|
9
|
+
* once so the mistake is not silent. This one choke-point catches every ineffective break; no element
|
|
10
|
+
* needs a special case.
|
|
11
|
+
*/
|
|
12
|
+
export declare class PageBreakRenderer {
|
|
13
|
+
static render(_element: PageBreakElement, _objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A `PageBreak` draws nothing - the pagination packer consumes it at the cut, so in a vertical flow it
|
|
3
|
+
* never reaches this pass. Reaching it therefore means the break was ineffective: it sat somewhere that
|
|
4
|
+
* does not paginate, like inside a horizontal `Row` (a row is one line, you cannot split it across
|
|
5
|
+
* pages - CSS and react-pdf ignore a forced break there too). We degrade to drawing nothing, but warn
|
|
6
|
+
* once so the mistake is not silent. This one choke-point catches every ineffective break; no element
|
|
7
|
+
* needs a special case.
|
|
8
|
+
*/
|
|
9
|
+
export class PageBreakRenderer {
|
|
10
|
+
static async render(_element, _objectManager) {
|
|
11
|
+
console.warn("PageBreak had no effect: it is not in a paginating flow (e.g. it is inside a Row, which is a " +
|
|
12
|
+
"single horizontal line). Put the break as a sibling in a Column to break after that content.");
|
|
13
|
+
return [];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
2
|
+
import { PageBuilderElement } from "../elements/layout/page-builder-element.js";
|
|
3
|
+
import { IRNode } from "../ir/display-list.js";
|
|
4
|
+
export declare class PageBuilderRenderer {
|
|
5
|
+
static render(element: PageBuilderElement, objectManager: PDFObjectManager): Promise<IRNode[]>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { RendererRegistry } from "../utils/renderer-registry.js";
|
|
2
|
+
export class PageBuilderRenderer {
|
|
3
|
+
static async render(element, objectManager) {
|
|
4
|
+
// `composed` is whatever the closure built for THIS page during the render pass's layout.
|
|
5
|
+
const { composed } = element.getProps();
|
|
6
|
+
if (!composed)
|
|
7
|
+
return [];
|
|
8
|
+
const renderer = RendererRegistry.getRenderer(composed);
|
|
9
|
+
return renderer(composed, objectManager);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { PageElement } from "../elements/page-element";
|
|
2
|
-
import { PDFObjectManager } from "../utils/pdf-object-manager";
|
|
1
|
+
import { PageElement } from "../elements/page-element.js";
|
|
2
|
+
import { PDFObjectManager } from "../utils/pdf-object-manager.js";
|
|
3
3
|
export declare class PageRenderer {
|
|
4
4
|
static render(page: PageElement, objectManager: PDFObjectManager): Promise<number>;
|
|
5
5
|
}
|