@nowline/export-pdf 0.8.6 → 0.9.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/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -1
- package/dist/index.js.map +1 -1
- package/package.json +7 -7
- package/src/index.ts +16 -2
package/dist/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export interface PdfOptions {
|
|
|
10
10
|
author?: string;
|
|
11
11
|
/** Title baked into the PDF Info dict. Defaults to roadmap title. */
|
|
12
12
|
title?: string;
|
|
13
|
-
/** Subject. Defaults to the source filename. */
|
|
13
|
+
/** Subject. Defaults to the source filename (basename, no directory). */
|
|
14
14
|
subject?: string;
|
|
15
15
|
/** Producer string. Defaults to `nowline (m2c)`. */
|
|
16
16
|
producer?: string;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAGH,KAAK,YAAY,EAIpB,MAAM,sBAAsB,CAAC;AAG9B,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAChC,WAAW,CAAC,EAAE,cAAc,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AASD,wBAAsB,SAAS,CAC3B,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,UAAe,GACzB,OAAO,CAAC,UAAU,CAAC,CAsErB;AA8CD,YAAY,EAAE,YAAY,EAAE,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
// (since 0.13), so a fixed CreationDate yields a stable ID.
|
|
22
22
|
// - `pdfVersion: '1.7'` pins the PDF spec.
|
|
23
23
|
// - Producer / Creator strings are explicit, version-stable.
|
|
24
|
+
// - `info.Subject` defaults to the source *basename*, never the absolute
|
|
25
|
+
// `inputs.sourcePath`. The `/ID` hashes the Info dict and every xref
|
|
26
|
+
// offset shifts with its length, so an absolute path would make the bytes
|
|
27
|
+
// depend on where the source lives (and leak the author's filesystem
|
|
28
|
+
// layout into a file they share).
|
|
24
29
|
// - Fonts: registered explicitly via PDFKit `registerFont(name, bytes,
|
|
25
30
|
// family?)` so glyph subsets are byte-identical across hosts.
|
|
26
31
|
// - PDFKit's default Helvetica is never loaded (`font: null` below). PDFKit
|
|
@@ -59,7 +64,7 @@ export async function exportPdf(inputs, svg, options = {}) {
|
|
|
59
64
|
info: {
|
|
60
65
|
Title: options.title ?? (inputs.model.header.title || 'Nowline Roadmap'),
|
|
61
66
|
Author: options.author ?? inputs.model.header.author ?? '',
|
|
62
|
-
Subject: options.subject ?? inputs.sourcePath,
|
|
67
|
+
Subject: options.subject ?? sourceBasename(inputs.sourcePath),
|
|
63
68
|
Producer: options.producer ?? 'nowline (m2c)',
|
|
64
69
|
Creator: options.producer ?? 'nowline (m2c)',
|
|
65
70
|
CreationDate: creationDate,
|
|
@@ -120,6 +125,14 @@ async function resolveFontsFor() {
|
|
|
120
125
|
const result = await resolveFonts();
|
|
121
126
|
return { sans: result.sans, mono: result.mono };
|
|
122
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Final segment of `sourcePath`. Splits on both `/` and `\` rather than using
|
|
130
|
+
* `node:path`, so a Windows path reduces to the same basename on any host.
|
|
131
|
+
*/
|
|
132
|
+
function sourceBasename(sourcePath) {
|
|
133
|
+
const sep = Math.max(sourcePath.lastIndexOf('/'), sourcePath.lastIndexOf('\\'));
|
|
134
|
+
return sourcePath.slice(sep + 1);
|
|
135
|
+
}
|
|
123
136
|
function bufferOf(bytes) {
|
|
124
137
|
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
125
138
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,EAAE;AACF,2EAA2E;AAC3E,2EAA2E;AAC3E,4EAA4E;AAC5E,8DAA8D;AAC9D,EAAE;AACF,4EAA4E;AAC5E,sEAAsE;AACtE,iBAAiB;AACjB,4EAA4E;AAC5E,4EAA4E;AAC5E,qDAAqD;AACrD,EAAE;AACF,wBAAwB;AACxB,8EAA8E;AAC9E,0BAA0B;AAC1B,0EAA0E;AAC1E,gEAAgE;AAChE,6CAA6C;AAC7C,+DAA+D;AAC/D,yEAAyE;AACzE,kEAAkE;AAClE,8EAA8E;AAC9E,yEAAyE;AACzE,0EAA0E;AAC1E,iEAAiE;AAEjE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,QAAQ,MAAM,sBAAsB,CAAC;AAO5C,OAAO,EACH,UAAU,EACV,aAAa,EAEb,YAAY,EACZ,WAAW,EACX,cAAc,GACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,WAAW,MAAM,QAAQ,CAAC;AA+BjC,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,MAAoB,EACpB,GAAW,EACX,OAAO,GAAe,EAAE;IAExB,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,IAAI,GAAG,WAAW,CAAC;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QAClC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC9B,CAAC,CAAC;IACH,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAExC,MAAM,GAAG,GAAG,UAAU,CAAC;QACnB,IAAI;QACJ,cAAc,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK;QAClC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;QACpC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC9B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;IAC7F,MAAM,YAAY,GAAG,IAAI,IAAI,CACzB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACxF,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;QACxB,aAAa,EAAE,KAAK;QACpB,uEAAuE;QACvE,6DAA6D;QAC7D,IAAI,EAAE,IAAyB;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;QAClC,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE;YACF,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC;YACxE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;YAC1D,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nowline/export-pdf",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Exports a Nowline roadmap as a crisp, vector PDF.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"engines": {
|
|
@@ -22,18 +22,18 @@
|
|
|
22
22
|
],
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@kittl/svg-to-pdfkit": "^0.1.12",
|
|
25
|
-
"@nowline/export-core": "0.
|
|
25
|
+
"@nowline/export-core": "0.9.0",
|
|
26
26
|
"pdfkit": "^0.20.2"
|
|
27
27
|
},
|
|
28
28
|
"devDependencies": {
|
|
29
|
-
"@nowline/core": "0.
|
|
30
|
-
"@nowline/layout": "0.
|
|
31
|
-
"@nowline/renderer": "0.
|
|
32
|
-
"@types/node": "^26.6.
|
|
29
|
+
"@nowline/core": "0.9.0",
|
|
30
|
+
"@nowline/layout": "0.9.0",
|
|
31
|
+
"@nowline/renderer": "0.9.0",
|
|
32
|
+
"@types/node": "^26.6.5",
|
|
33
33
|
"@types/pdfkit": "^0.17.6",
|
|
34
34
|
"langium": "~4.4.0",
|
|
35
35
|
"typescript": "^7.0.2",
|
|
36
|
-
"vitest": "^5.0.
|
|
36
|
+
"vitest": "^5.0.5"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
|
39
39
|
"build": "tsc -b tsconfig.json",
|
package/src/index.ts
CHANGED
|
@@ -21,6 +21,11 @@
|
|
|
21
21
|
// (since 0.13), so a fixed CreationDate yields a stable ID.
|
|
22
22
|
// - `pdfVersion: '1.7'` pins the PDF spec.
|
|
23
23
|
// - Producer / Creator strings are explicit, version-stable.
|
|
24
|
+
// - `info.Subject` defaults to the source *basename*, never the absolute
|
|
25
|
+
// `inputs.sourcePath`. The `/ID` hashes the Info dict and every xref
|
|
26
|
+
// offset shifts with its length, so an absolute path would make the bytes
|
|
27
|
+
// depend on where the source lives (and leak the author's filesystem
|
|
28
|
+
// layout into a file they share).
|
|
24
29
|
// - Fonts: registered explicitly via PDFKit `registerFont(name, bytes,
|
|
25
30
|
// family?)` so glyph subsets are byte-identical across hosts.
|
|
26
31
|
// - PDFKit's default Helvetica is never loaded (`font: null` below). PDFKit
|
|
@@ -56,7 +61,7 @@ export interface PdfOptions {
|
|
|
56
61
|
author?: string;
|
|
57
62
|
/** Title baked into the PDF Info dict. Defaults to roadmap title. */
|
|
58
63
|
title?: string;
|
|
59
|
-
/** Subject. Defaults to the source filename. */
|
|
64
|
+
/** Subject. Defaults to the source filename (basename, no directory). */
|
|
60
65
|
subject?: string;
|
|
61
66
|
/** Producer string. Defaults to `nowline (m2c)`. */
|
|
62
67
|
producer?: string;
|
|
@@ -113,7 +118,7 @@ export async function exportPdf(
|
|
|
113
118
|
info: {
|
|
114
119
|
Title: options.title ?? (inputs.model.header.title || 'Nowline Roadmap'),
|
|
115
120
|
Author: options.author ?? inputs.model.header.author ?? '',
|
|
116
|
-
Subject: options.subject ?? inputs.sourcePath,
|
|
121
|
+
Subject: options.subject ?? sourceBasename(inputs.sourcePath),
|
|
117
122
|
Producer: options.producer ?? 'nowline (m2c)',
|
|
118
123
|
Creator: options.producer ?? 'nowline (m2c)',
|
|
119
124
|
CreationDate: creationDate,
|
|
@@ -182,6 +187,15 @@ async function resolveFontsFor(): Promise<ResolvedFontPair> {
|
|
|
182
187
|
return { sans: result.sans, mono: result.mono };
|
|
183
188
|
}
|
|
184
189
|
|
|
190
|
+
/**
|
|
191
|
+
* Final segment of `sourcePath`. Splits on both `/` and `\` rather than using
|
|
192
|
+
* `node:path`, so a Windows path reduces to the same basename on any host.
|
|
193
|
+
*/
|
|
194
|
+
function sourceBasename(sourcePath: string): string {
|
|
195
|
+
const sep = Math.max(sourcePath.lastIndexOf('/'), sourcePath.lastIndexOf('\\'));
|
|
196
|
+
return sourcePath.slice(sep + 1);
|
|
197
|
+
}
|
|
198
|
+
|
|
185
199
|
function bufferOf(bytes: Uint8Array): Buffer {
|
|
186
200
|
return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
187
201
|
}
|