@jasy/pdf 1.0.0-alpha.1 → 1.0.0-alpha.3
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 +3 -3
- 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 +8 -8
- package/dist/api/content.js +23 -24
- package/dist/api/descriptor.d.ts +2 -2
- package/dist/api/descriptor.js +75 -31
- package/dist/api/index.d.ts +8 -8
- package/dist/api/index.js +8 -24
- package/dist/api/insets.js +4 -8
- package/dist/api/layout.d.ts +27 -12
- package/dist/api/layout.js +46 -45
- package/dist/api/structure.d.ts +60 -13
- package/dist/api/structure.js +132 -88
- package/dist/api/table.d.ts +5 -5
- package/dist/api/table.js +28 -24
- package/dist/api/text.d.ts +27 -2
- package/dist/api/text.js +45 -27
- package/dist/assets/font-data.d.ts +2 -0
- package/dist/assets/font-data.js +6 -0
- package/dist/assets/font-data.ts +7 -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/elements/container-element.d.ts +4 -4
- package/dist/elements/container-element.js +9 -13
- package/dist/elements/image-element.d.ts +18 -2
- package/dist/elements/image-element.js +81 -105
- package/dist/elements/index.d.ts +12 -10
- package/dist/elements/index.js +12 -28
- 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 +3 -3
- package/dist/elements/layout/expanded-element.js +10 -14
- package/dist/elements/layout/padding-element.d.ts +3 -3
- package/dist/elements/layout/padding-element.js +9 -14
- package/dist/elements/layout/positioned-element.d.ts +44 -0
- package/dist/elements/layout/positioned-element.js +61 -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/sized-container-element.d.ts +2 -2
- package/dist/elements/layout/sized-container-element.js +6 -11
- package/dist/elements/line-element.d.ts +3 -3
- package/dist/elements/line-element.js +5 -10
- package/dist/elements/page-element.d.ts +8 -6
- package/dist/elements/page-element.js +31 -23
- 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 +28 -3
- package/dist/elements/pdf-element.js +10 -19
- package/dist/elements/rectangle-element.d.ts +14 -6
- package/dist/elements/rectangle-element.js +44 -21
- package/dist/elements/row-element.d.ts +3 -3
- package/dist/elements/row-element.js +7 -11
- package/dist/elements/text-element.d.ts +37 -11
- package/dist/elements/text-element.js +64 -39
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -19
- package/dist/ir/display-list.d.ts +22 -3
- package/dist/ir/display-list.js +1 -2
- package/dist/layout/box-constraints.js +2 -6
- package/dist/layout/fragmentation.d.ts +8 -1
- package/dist/layout/fragmentation.js +22 -10
- 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/container-renderer.d.ts +3 -3
- package/dist/renderer/container-renderer.js +12 -27
- 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/expanded-renderer.d.ts +3 -3
- package/dist/renderer/expanded-renderer.js +6 -21
- package/dist/renderer/image-renderer.d.ts +3 -3
- package/dist/renderer/image-renderer.js +77 -75
- package/dist/renderer/index.d.ts +10 -10
- package/dist/renderer/index.js +10 -26
- package/dist/renderer/line-renderer.d.ts +3 -3
- package/dist/renderer/line-renderer.js +13 -28
- package/dist/renderer/padding-renderer.d.ts +3 -3
- package/dist/renderer/padding-renderer.js +6 -21
- package/dist/renderer/page-renderer.d.ts +2 -2
- package/dist/renderer/page-renderer.js +61 -77
- package/dist/renderer/pdf-backend.d.ts +2 -2
- package/dist/renderer/pdf-backend.js +34 -17
- 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 +24 -41
- package/dist/renderer/pdf-document-renderer.d.ts +3 -3
- package/dist/renderer/pdf-document-renderer.js +71 -85
- package/dist/renderer/pdf-renderer.d.ts +2 -2
- package/dist/renderer/pdf-renderer.js +83 -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 +45 -44
- package/dist/renderer/repeating-header-renderer.d.ts +3 -3
- package/dist/renderer/repeating-header-renderer.js +11 -26
- package/dist/renderer/row-renderer.d.ts +3 -3
- package/dist/renderer/row-renderer.js +12 -27
- package/dist/renderer/text-renderer.d.ts +6 -5
- package/dist/renderer/text-renderer.js +33 -42
- package/dist/text/line-breaker.d.ts +8 -5
- package/dist/text/line-breaker.js +67 -16
- package/dist/text/text-style.d.ts +25 -0
- package/dist/text/text-style.js +29 -0
- package/dist/utils/afm-parser.js +3 -13
- package/dist/utils/bytes.d.ts +24 -0
- package/dist/utils/bytes.js +76 -0
- package/dist/utils/flex-layout.d.ts +2 -2
- package/dist/utils/flex-layout.js +15 -20
- package/dist/utils/font-metrics.d.ts +1 -1
- package/dist/utils/font-metrics.js +1 -2
- package/dist/utils/font-path.js +3 -6
- package/dist/utils/image-helper.d.ts +6 -5
- package/dist/utils/image-helper.js +101 -111
- package/dist/utils/md5.d.ts +4 -0
- package/dist/utils/md5.js +80 -0
- package/dist/utils/pdf-object-manager.d.ts +10 -6
- package/dist/utils/pdf-object-manager.js +89 -94
- package/dist/utils/renderer-registry.js +1 -5
- package/dist/utils/ttf-parser.d.ts +2 -2
- package/dist/utils/ttf-parser.js +32 -36
- package/dist/utils/ttf-subsetter.d.ts +1 -1
- package/dist/utils/ttf-subsetter.js +40 -42
- package/dist/utils/utf8-to-windows1252-encoder.js +1 -4
- package/dist/validators/element-validator.d.ts +2 -2
- package/dist/validators/element-validator.js +17 -23
- package/package.json +14 -2
package/dist/api/text.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { TextElement, TextSegment } from "../elements/text-element";
|
|
2
|
-
import {
|
|
1
|
+
import { TextElement, TextSegment } from "../elements/text-element.js";
|
|
2
|
+
import { TextOverflow } from "../text/line-breaker.js";
|
|
3
|
+
import { ResolvedTextStyle } from "../text/text-style.js";
|
|
4
|
+
import { ColorInput } from "./color.js";
|
|
5
|
+
export type { TextOverflow };
|
|
3
6
|
/** Text styling shared by `Text`, `Paragraph` and `span`. `bold`/`italic` are booleans
|
|
4
7
|
* (locked §7.3) and combine into one engine `FontStyle`. */
|
|
5
8
|
export interface TextStyle {
|
|
@@ -12,6 +15,14 @@ export interface TextStyle {
|
|
|
12
15
|
export interface TextOptions extends TextStyle {
|
|
13
16
|
/** Text-internal alignment (left/center/right) - independent of a parent's `cross` (§5). */
|
|
14
17
|
align?: "left" | "center" | "right";
|
|
18
|
+
/** Cap the number of wrapped lines (default: unlimited - the text grows down as far as it needs,
|
|
19
|
+
* paginating onto the next page). Needs a bounded width (a Column/Expanded/`Box({ width })`). */
|
|
20
|
+
maxLines?: number;
|
|
21
|
+
/** What happens past `maxLines`: `"clip"` (default) cuts hard, `"ellipsis"` ends with "…". */
|
|
22
|
+
overflow?: TextOverflow;
|
|
23
|
+
/** Line-height multiplier (default `1`). `1.4` gives roomier body copy; each line is
|
|
24
|
+
* `size * lineHeight` tall. */
|
|
25
|
+
lineHeight?: number;
|
|
15
26
|
}
|
|
16
27
|
/**
|
|
17
28
|
* An inline run for mixed-style `Text` (`Text([span("a", {bold:true}), span("b")])`). Each
|
|
@@ -26,3 +37,17 @@ export declare function span(text: string, style?: TextStyle): TextSegment;
|
|
|
26
37
|
export declare function Text(content: string | TextSegment[], opts?: TextOptions): TextElement;
|
|
27
38
|
/** `Text` with body-paragraph defaults (same options; a separate name reads as intent). */
|
|
28
39
|
export declare function Paragraph(content: string | TextSegment[], opts?: TextOptions): TextElement;
|
|
40
|
+
/** The inheritable text defaults a `Document` can set, using the same option names as `Text`.
|
|
41
|
+
* Unset fields stay out so they keep inheriting. */
|
|
42
|
+
export interface TextDefaults {
|
|
43
|
+
size?: number;
|
|
44
|
+
font?: string;
|
|
45
|
+
bold?: boolean;
|
|
46
|
+
italic?: boolean;
|
|
47
|
+
color?: ColorInput;
|
|
48
|
+
align?: "left" | "center" | "right";
|
|
49
|
+
lineHeight?: number;
|
|
50
|
+
}
|
|
51
|
+
/** Maps the `Text`-style option names onto a partial engine `ResolvedTextStyle` (only the set
|
|
52
|
+
* fields), for seeding the inheritance cascade. */
|
|
53
|
+
export declare function toTextStyleOverride(opts: TextDefaults): Partial<ResolvedTextStyle>;
|
package/dist/api/text.js
CHANGED
|
@@ -1,34 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
exports.Paragraph = Paragraph;
|
|
6
|
-
const text_element_1 = require("../elements/text-element");
|
|
7
|
-
const pdf_element_1 = require("../elements/pdf-element");
|
|
8
|
-
const pdf_object_manager_1 = require("../utils/pdf-object-manager");
|
|
9
|
-
const color_1 = require("./color");
|
|
10
|
-
/** Body-text default size when none is given (matches the engine default font). */
|
|
11
|
-
const DEFAULT_SIZE = 12;
|
|
1
|
+
import { TextElement } from "../elements/text-element.js";
|
|
2
|
+
import { HorizontalAlignment } from "../elements/pdf-element.js";
|
|
3
|
+
import { FontStyle } from "../utils/pdf-object-manager.js";
|
|
4
|
+
import { toColor } from "./color.js";
|
|
12
5
|
/** bold + italic → the single engine `FontStyle`. */
|
|
13
6
|
function toFontStyle(bold, italic) {
|
|
14
7
|
if (bold && italic)
|
|
15
|
-
return
|
|
8
|
+
return FontStyle.BoldItalic;
|
|
16
9
|
if (bold)
|
|
17
|
-
return
|
|
10
|
+
return FontStyle.Bold;
|
|
18
11
|
if (italic)
|
|
19
|
-
return
|
|
20
|
-
return
|
|
12
|
+
return FontStyle.Italic;
|
|
13
|
+
return FontStyle.Normal;
|
|
21
14
|
}
|
|
22
15
|
const ALIGN = {
|
|
23
|
-
left:
|
|
24
|
-
center:
|
|
25
|
-
right:
|
|
16
|
+
left: HorizontalAlignment.left,
|
|
17
|
+
center: HorizontalAlignment.center,
|
|
18
|
+
right: HorizontalAlignment.right,
|
|
26
19
|
};
|
|
27
20
|
/**
|
|
28
21
|
* An inline run for mixed-style `Text` (`Text([span("a", {bold:true}), span("b")])`). Each
|
|
29
22
|
* field overrides the enclosing `Text`'s defaults for just this run; omitted fields inherit.
|
|
30
23
|
*/
|
|
31
|
-
function span(text, style = {}) {
|
|
24
|
+
export function span(text, style = {}) {
|
|
32
25
|
return {
|
|
33
26
|
content: text,
|
|
34
27
|
fontSize: style.size,
|
|
@@ -36,7 +29,7 @@ function span(text, style = {}) {
|
|
|
36
29
|
fontStyle: style.bold !== undefined || style.italic !== undefined
|
|
37
30
|
? toFontStyle(style.bold, style.italic)
|
|
38
31
|
: undefined,
|
|
39
|
-
fontColor: style.color !== undefined ?
|
|
32
|
+
fontColor: style.color !== undefined ? toColor(style.color) : undefined,
|
|
40
33
|
};
|
|
41
34
|
}
|
|
42
35
|
/**
|
|
@@ -44,18 +37,43 @@ function span(text, style = {}) {
|
|
|
44
37
|
* options set the defaults (size/font/style/color) that any spans inherit, plus the
|
|
45
38
|
* text-internal `align`.
|
|
46
39
|
*/
|
|
47
|
-
function Text(content, opts = {}) {
|
|
48
|
-
|
|
49
|
-
|
|
40
|
+
export function Text(content, opts = {}) {
|
|
41
|
+
// Unset properties are left undefined so they inherit the cascaded TextStyle (Document default /
|
|
42
|
+
// built-in). Only bold/italic that the caller actually set become an explicit FontStyle.
|
|
43
|
+
return new TextElement({
|
|
50
44
|
content,
|
|
51
|
-
fontSize:
|
|
45
|
+
fontSize: opts.size,
|
|
52
46
|
fontFamily: opts.font,
|
|
53
|
-
fontStyle:
|
|
54
|
-
|
|
47
|
+
fontStyle: opts.bold !== undefined || opts.italic !== undefined
|
|
48
|
+
? toFontStyle(opts.bold, opts.italic)
|
|
49
|
+
: undefined,
|
|
50
|
+
color: opts.color !== undefined ? toColor(opts.color) : undefined,
|
|
55
51
|
textAlignment: opts.align ? ALIGN[opts.align] : undefined,
|
|
52
|
+
maxLines: opts.maxLines,
|
|
53
|
+
overflow: opts.overflow,
|
|
54
|
+
lineHeight: opts.lineHeight,
|
|
56
55
|
});
|
|
57
56
|
}
|
|
58
57
|
/** `Text` with body-paragraph defaults (same options; a separate name reads as intent). */
|
|
59
|
-
function Paragraph(content, opts = {}) {
|
|
58
|
+
export function Paragraph(content, opts = {}) {
|
|
60
59
|
return Text(content, opts);
|
|
61
60
|
}
|
|
61
|
+
/** Maps the `Text`-style option names onto a partial engine `ResolvedTextStyle` (only the set
|
|
62
|
+
* fields), for seeding the inheritance cascade. */
|
|
63
|
+
export function toTextStyleOverride(opts) {
|
|
64
|
+
const style = {};
|
|
65
|
+
if (opts.size !== undefined)
|
|
66
|
+
style.fontSize = opts.size;
|
|
67
|
+
if (opts.font !== undefined)
|
|
68
|
+
style.fontFamily = opts.font;
|
|
69
|
+
if (opts.bold !== undefined || opts.italic !== undefined) {
|
|
70
|
+
style.fontStyle = toFontStyle(opts.bold, opts.italic);
|
|
71
|
+
}
|
|
72
|
+
if (opts.color !== undefined)
|
|
73
|
+
style.color = toColor(opts.color);
|
|
74
|
+
if (opts.align !== undefined)
|
|
75
|
+
style.textAlignment = ALIGN[opts.align];
|
|
76
|
+
if (opts.lineHeight !== undefined)
|
|
77
|
+
style.lineHeight = opts.lineHeight;
|
|
78
|
+
return style;
|
|
79
|
+
}
|