ducpdf 3.3.0 → 3.5.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 CHANGED
@@ -1,3 +1,5 @@
1
+ # ducpdf
2
+
1
3
  <p align="center">
2
4
  <br/>
3
5
  <a href="https://duc.ducflair.com" target="_blank"><img width="256px" src="https://raw.githubusercontent.com/ducflair/assets/refs/heads/main/src/duc/duc-extended.png" /></a>
@@ -9,8 +11,6 @@
9
11
  </p>
10
12
  </p>
11
13
 
12
- # ducpdf
13
-
14
14
  `ducpdf` is a lightweight adapter for rendering `duc` CAD documents to PDF. It's built on top of `ducjs` and focuses on accurate, standards-compliant PDF output for professional document sharing and printing.
15
15
 
16
16
  - Convert duc files to PDF documents
@@ -0,0 +1,10 @@
1
+ import type { ExportedDataState } from 'ducjs';
2
+ /**
3
+ * Fetch font data for all detected families in a DUC file.
4
+ * Returns fontMap and a list of warning messages for fonts that couldn't be fetched.
5
+ */
6
+ export declare function fetchFontsForDuc(parsed: ExportedDataState): Promise<{
7
+ fontMap: Map<string, Uint8Array>;
8
+ warnings: string[];
9
+ }>;
10
+ //# sourceMappingURL=fonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.d.ts","sourceRoot":"","sources":["../../src/duc2pdf/fonts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AA2H/C;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CA2CnE"}
@@ -0,0 +1,150 @@
1
+ // Font families that are bundled in the WASM binary (no need to fetch)
2
+ const BUNDLED_FONTS = new Set(['Roboto Mono']);
3
+ // Metadata JSON URL (small file, cacheable via CDN)
4
+ const GOOGLE_FONTS_METADATA_URL = 'https://cdn.jsdelivr.net/npm/google-font-metadata@6/data/google-fonts-v1.json';
5
+ const TRUSTED_FONT_DOMAINS = new Set([
6
+ 'fonts.gstatic.com',
7
+ 'fonts.googleapis.com',
8
+ 'cdn.jsdelivr.net',
9
+ ]);
10
+ function isTrustedFontUrl(urlStr) {
11
+ try {
12
+ const url = new URL(urlStr);
13
+ return url.protocol === 'https:' && TRUSTED_FONT_DOMAINS.has(url.hostname);
14
+ }
15
+ catch {
16
+ return false;
17
+ }
18
+ }
19
+ // In-memory cache for the metadata JSON (fetched once per session)
20
+ let metadataCache = null;
21
+ let metadataFetchPromise = null;
22
+ /**
23
+ * Fetch and cache the google-font-metadata v1 JSON.
24
+ */
25
+ async function getGoogleFontMetadata() {
26
+ if (metadataCache)
27
+ return metadataCache;
28
+ if (metadataFetchPromise)
29
+ return metadataFetchPromise;
30
+ metadataFetchPromise = (async () => {
31
+ try {
32
+ const res = await fetch(GOOGLE_FONTS_METADATA_URL);
33
+ if (!res.ok)
34
+ return null;
35
+ metadataCache = await res.json();
36
+ return metadataCache;
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ finally {
42
+ metadataFetchPromise = null;
43
+ }
44
+ })();
45
+ return metadataFetchPromise;
46
+ }
47
+ /**
48
+ * Convert a display font family name (e.g. "Roboto Mono") to the metadata key ("roboto-mono").
49
+ */
50
+ const fontFamilyToId = (family) => family.toLowerCase().replace(/\s+/g, '-');
51
+ /**
52
+ * Look up the TTF (truetype) URL for a font from cached metadata.
53
+ */
54
+ function getTrueTypeUrl(metadata, family, weight = 400, style = 'normal') {
55
+ const id = fontFamilyToId(family);
56
+ const font = metadata[id];
57
+ if (!font)
58
+ return undefined;
59
+ const weightVariants = font.variants[String(weight)];
60
+ if (!weightVariants) {
61
+ const firstWeight = Object.keys(font.variants)[0];
62
+ if (!firstWeight)
63
+ return undefined;
64
+ const fallback = font.variants[firstWeight];
65
+ const styleVar = fallback?.[style] ?? Object.values(fallback ?? {})[0];
66
+ const subset = styleVar?.[font.defSubset] ?? Object.values(styleVar ?? {})[0];
67
+ return subset?.url?.truetype;
68
+ }
69
+ const styleVariants = weightVariants[style] ?? Object.values(weightVariants)[0];
70
+ if (!styleVariants)
71
+ return undefined;
72
+ const subset = styleVariants[font.defSubset] ?? Object.values(styleVariants)[0];
73
+ return subset?.url?.truetype;
74
+ }
75
+ /**
76
+ * Validate that a fontFamily string is a real font name (not a numeric ID or empty).
77
+ */
78
+ const isValidFontFamily = (ff) => typeof ff === 'string' && ff.length > 0 && !/^\d+$/.test(ff);
79
+ /**
80
+ * Extract unique font family names from parsed DUC elements.
81
+ */
82
+ function collectFontFamilies(parsed) {
83
+ const families = new Set();
84
+ for (const el of (parsed.elements ?? [])) {
85
+ if (el && typeof el === 'object' && 'fontFamily' in el) {
86
+ const ff = el.fontFamily;
87
+ if (isValidFontFamily(ff))
88
+ families.add(ff);
89
+ }
90
+ if (el && el.type === 'table' && Array.isArray(el.cells)) {
91
+ for (const cell of el.cells) {
92
+ const ff = cell?.fontFamily ?? cell?.style?.fontFamily;
93
+ if (isValidFontFamily(ff))
94
+ families.add(ff);
95
+ }
96
+ }
97
+ }
98
+ const defaultFF = parsed?.localState?.currentItemFontFamily;
99
+ if (isValidFontFamily(defaultFF))
100
+ families.add(defaultFF);
101
+ return families;
102
+ }
103
+ /**
104
+ * Fetch font data for all detected families in a DUC file.
105
+ * Returns fontMap and a list of warning messages for fonts that couldn't be fetched.
106
+ */
107
+ export async function fetchFontsForDuc(parsed) {
108
+ const fontMap = new Map();
109
+ const warnings = [];
110
+ const families = collectFontFamilies(parsed);
111
+ const toFetch = [...families].filter(f => !BUNDLED_FONTS.has(f));
112
+ if (toFetch.length === 0)
113
+ return { fontMap, warnings };
114
+ const metadata = await getGoogleFontMetadata();
115
+ if (!metadata) {
116
+ warnings.push('Could not load Google Fonts metadata. Text will use the default font.');
117
+ return { fontMap, warnings };
118
+ }
119
+ const results = await Promise.allSettled(toFetch.map(async (family) => {
120
+ const ttfUrl = getTrueTypeUrl(metadata, family);
121
+ if (!ttfUrl || !isTrustedFontUrl(ttfUrl))
122
+ return { family, bytes: null };
123
+ try {
124
+ const res = await fetch(ttfUrl);
125
+ if (!res.ok)
126
+ return { family, bytes: null };
127
+ const buf = await res.arrayBuffer();
128
+ return { family, bytes: buf.byteLength > 1024 ? new Uint8Array(buf) : null };
129
+ }
130
+ catch {
131
+ return { family, bytes: null };
132
+ }
133
+ }));
134
+ for (const result of results) {
135
+ if (result.status === 'fulfilled') {
136
+ const { family, bytes } = result.value;
137
+ if (bytes) {
138
+ fontMap.set(family, bytes);
139
+ }
140
+ else {
141
+ warnings.push(`Font "${family}" could not be fetched and will use the default font.`);
142
+ }
143
+ }
144
+ else {
145
+ warnings.push('A font fetch failed unexpectedly.');
146
+ }
147
+ }
148
+ return { fontMap, warnings };
149
+ }
150
+ //# sourceMappingURL=fonts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/duc2pdf/fonts.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ export interface PdfConversionResult {
2
+ data: Uint8Array;
3
+ warnings: string[];
4
+ }
1
5
  export interface ConversionOptions {
2
6
  offsetX?: number;
3
7
  offsetY?: number;
@@ -12,8 +16,8 @@ export interface ConversionOptions {
12
16
  subject?: string;
13
17
  };
14
18
  }
15
- export declare function convertDucToPdf(ducData: Uint8Array, options?: ConversionOptions, debugMode?: boolean): Promise<Uint8Array>;
16
- export declare function convertDucToPdfCrop(ducData: Uint8Array, offsetX: number, offsetY: number, width?: number, height?: number): Promise<Uint8Array>;
19
+ export declare function convertDucToPdf(ducData: Uint8Array, options?: ConversionOptions, debugMode?: boolean): Promise<PdfConversionResult>;
20
+ export declare function convertDucToPdfCrop(ducData: Uint8Array, offsetX: number, offsetY: number, width?: number, height?: number): Promise<PdfConversionResult>;
17
21
  export declare function isWasmInitialized(): boolean;
18
22
  export declare function getWasmStatus(): Promise<{
19
23
  initialized: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/duc2pdf/index.ts"],"names":[],"mappings":"AAwDA,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAgDD,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,UAAU,CAAC,CAsLrB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC,CAErB;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAeD;AAGD,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA2DA;AAGD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CA0BN"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/duc2pdf/index.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA0DD,MAAM,WAAW,iBAAiB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE;QACT,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAgDD,wBAAsB,eAAe,CACnC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,iBAAiB,EAC3B,SAAS,GAAE,OAAe,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAsN9B;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,UAAU,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAGD,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAC7C,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAeD;AAGD,wBAAgB,eAAe,IAAI,IAAI,CAGtC;AAGD,wBAAgB,cAAc,CAAC,OAAO,EAAE,UAAU,GAAG;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CA2DA;AAGD,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,IAAI,CA0BN"}
@@ -1,4 +1,5 @@
1
- import { getFreeDrawSvgPath, getNormalizedZoom, isFreeDrawElement, parseDuc, serializeDuc, traverseAndUpdatePrecisionValues } from 'ducjs';
1
+ import { getFreeDrawSvgPath, getNormalizedZoom, isFreeDrawElement, normalizeForSerializationScope, parseDuc, serializeDuc } from 'ducjs';
2
+ import { fetchFontsForDuc } from './fonts';
2
3
  let wasmModule = null;
3
4
  let wasmInitPromise = null;
4
5
  async function initWasm() {
@@ -13,7 +14,7 @@ async function initWasm() {
13
14
  const wasmBindings = await import('../wasm');
14
15
  // The wasm-pack generated module exports a default init function
15
16
  // that handles loading the WASM file using import.meta.url
16
- // This is the same pattern used by duc_renderer_bin
17
+ // Standard wasm-pack init pattern
17
18
  if (typeof wasmBindings.default === 'function') {
18
19
  // Call the init function - it will automatically fetch the WASM file
19
20
  // using import.meta.url to resolve the path correctly
@@ -25,7 +26,9 @@ async function initWasm() {
25
26
  // Validate that required functions exist on the imported module
26
27
  const requiredFunctions = [
27
28
  'convert_duc_to_pdf_rs',
28
- 'convert_duc_to_pdf_crop_wasm'
29
+ 'convert_duc_to_pdf_crop_wasm',
30
+ 'convert_duc_to_pdf_with_fonts_rs',
31
+ 'convert_duc_to_pdf_crop_with_fonts_wasm'
29
32
  ];
30
33
  for (const fnName of requiredFunctions) {
31
34
  if (typeof wasmBindings[fnName] !== 'function') {
@@ -91,6 +94,7 @@ function validateInput(ducData, options) {
91
94
  }
92
95
  }
93
96
  export async function convertDucToPdf(ducData, options, debugMode = false) {
97
+ const fontWarnings = [];
94
98
  try {
95
99
  // Validate inputs
96
100
  validateInput(ducData, options);
@@ -102,6 +106,7 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
102
106
  const wasm = await initWasm();
103
107
  let ducBytes = new Uint8Array(ducData);
104
108
  let viewBackgroundColor;
109
+ let normalizedData = null;
105
110
  try {
106
111
  const latestBlob = new Blob([ducBytes]);
107
112
  const parsed = await parseDuc(latestBlob);
@@ -109,7 +114,7 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
109
114
  // Extract scope from parsed data - use localState.scope first, fallback to globalState.mainScope
110
115
  const scope = parsed?.localState?.scope || parsed?.globalState?.mainScope || 'mm';
111
116
  // ensure that we are only working with mm on the pdf conversion logic
112
- const normalized = traverseAndUpdatePrecisionValues(parsed, 'mm', scope);
117
+ const normalized = normalizeForSerializationScope(parsed, 'mm', scope);
113
118
  normalized.localState.scope = 'mm';
114
119
  normalized.globalState.mainScope = 'mm';
115
120
  // Apply zoom preference if provided
@@ -134,20 +139,21 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
134
139
  }
135
140
  // Process elements before serialization
136
141
  let normalizedElements = normalized.elements || [];
137
- normalizedElements = normalizedElements.map(element => {
142
+ normalizedElements = normalizedElements.map((element) => {
143
+ let normalizedElement = element;
138
144
  if (element && isFreeDrawElement(element)) {
139
145
  const svgPath = getFreeDrawSvgPath(element);
140
146
  if (svgPath) {
141
- return Object.assign({}, element, { svgPath });
147
+ normalizedElement = Object.assign({}, element, { svgPath });
142
148
  }
143
149
  }
144
- return element;
150
+ return normalizedElement;
145
151
  });
146
152
  normalized.elements = normalizedElements;
147
153
  viewBackgroundColor = normalized.globalState.viewBackgroundColor;
154
+ normalizedData = normalized;
148
155
  // Re-serialize the DUC with normalized values and scope set to 'mm'
149
- const serialized = await serializeDuc(normalized, true, // use scoped values
150
- undefined, {
156
+ const serialized = await serializeDuc(normalized, { syncInvalidIndices: (elements) => elements }, {
151
157
  forceScope: 'mm'
152
158
  });
153
159
  if (serialized && serialized.length > 0) {
@@ -164,8 +170,21 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
164
170
  catch (e) {
165
171
  console.warn('DUC parse/serialize normalization failed; using original bytes. Reason:', e);
166
172
  }
173
+ // Fetch font data for all detected families (falls back gracefully if offline)
174
+ let fontMap = new Map();
175
+ if (normalizedData) {
176
+ try {
177
+ const result = await fetchFontsForDuc(normalizedData);
178
+ fontMap = result.fontMap;
179
+ fontWarnings.push(...result.warnings);
180
+ }
181
+ catch (e) {
182
+ fontWarnings.push('Font fetching failed. Text will use the default font.');
183
+ }
184
+ }
167
185
  // Call the appropriate WASM function based on options
168
186
  let result;
187
+ const hasFonts = fontMap.size > 0;
169
188
  if (options && (options.offsetX !== undefined || options.offsetY !== undefined)) {
170
189
  // Use crop mode with offset
171
190
  const offsetX = options.offsetX || 0;
@@ -174,11 +193,21 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
174
193
  const widthOption = typeof options.width === 'number' ? options.width : undefined;
175
194
  const heightOption = typeof options.height === 'number' ? options.height : undefined;
176
195
  const backgroundOption = backgroundColor === undefined ? undefined : backgroundColor;
177
- result = wasm.convert_duc_to_pdf_crop_wasm(ducBytes, offsetX, offsetY, widthOption, heightOption, backgroundOption);
196
+ if (hasFonts) {
197
+ result = wasm.convert_duc_to_pdf_crop_with_fonts_wasm(ducBytes, offsetX, offsetY, widthOption, heightOption, backgroundOption, fontMap);
198
+ }
199
+ else {
200
+ result = wasm.convert_duc_to_pdf_crop_wasm(ducBytes, offsetX, offsetY, widthOption, heightOption, backgroundOption);
201
+ }
178
202
  }
179
203
  else {
180
204
  // Standard conversion
181
- result = wasm.convert_duc_to_pdf_rs(ducBytes);
205
+ if (hasFonts) {
206
+ result = wasm.convert_duc_to_pdf_with_fonts_rs(ducBytes, fontMap);
207
+ }
208
+ else {
209
+ result = wasm.convert_duc_to_pdf_rs(ducBytes);
210
+ }
182
211
  }
183
212
  // Check if conversion was successful
184
213
  if (!result || result.length === 0) {
@@ -231,7 +260,7 @@ export async function convertDucToPdf(ducData, options, debugMode = false) {
231
260
  throw new Error(detailedError);
232
261
  }
233
262
  }
234
- return result;
263
+ return { data: result, warnings: fontWarnings };
235
264
  }
236
265
  catch (error) {
237
266
  console.error('DUC to PDF conversion error:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/duc2pdf/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/duc2pdf/index.ts"],"names":[],"mappings":"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"}
@@ -23,7 +23,7 @@ module.exports = {
23
23
  // 1. Update duc dependency to use crates.io version (not development)
24
24
  // 2. Set the crate version
25
25
  // 3. Build the project
26
- prepareCmd: "node ../../../../scripts/cargo-set-duc-dep-version.js . 2 && cargo set-version ${nextRelease.version} && cargo build --release",
26
+ prepareCmd: "node ../../../../scripts/cargo-set-duc-dep-version.js . 3 && cargo set-version ${nextRelease.version} && cargo build --release",
27
27
  // Publish step: Publish the crate to crates.io
28
28
  publishCmd: "cargo publish --allow-dirty --token ${process.env.CARGO_REGISTRY_TOKEN}",
29
29
  },
package/dist/duc2pdf.d.ts CHANGED
@@ -1,22 +1,43 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ export function init_logger(): void;
3
4
  /**
4
5
  * WASM binding for crop conversion
5
6
  */
6
7
  export function convert_duc_to_pdf_crop_wasm(duc_data: Uint8Array, offset_x: number, offset_y: number, width?: number | null, height?: number | null, background_color?: string | null): Uint8Array;
7
- export function init_logger(): void;
8
+ /**
9
+ * WASM binding for conversion with custom font data
10
+ * font_map_js: a JS Map<string, Uint8Array> mapping font family names to TTF/OTF bytes
11
+ */
12
+ export function convert_duc_to_pdf_with_fonts_rs(duc_data: Uint8Array, font_map_js: any): Uint8Array;
8
13
  /**
9
14
  * WASM binding for the main conversion function
10
15
  */
11
16
  export function convert_duc_to_pdf_rs(duc_data: Uint8Array): Uint8Array;
17
+ /**
18
+ * WASM binding for crop conversion with custom font data
19
+ */
20
+ export function convert_duc_to_pdf_crop_with_fonts_wasm(duc_data: Uint8Array, offset_x: number, offset_y: number, width: number | null | undefined, height: number | null | undefined, background_color: string | null | undefined, font_map_js: any): Uint8Array;
12
21
 
13
22
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
14
23
 
15
24
  export interface InitOutput {
16
25
  readonly memory: WebAssembly.Memory;
17
26
  readonly convert_duc_to_pdf_crop_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
27
+ readonly convert_duc_to_pdf_crop_with_fonts_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: any) => [number, number];
18
28
  readonly convert_duc_to_pdf_rs: (a: number, b: number) => [number, number];
29
+ readonly convert_duc_to_pdf_with_fonts_rs: (a: number, b: number, c: any) => [number, number];
19
30
  readonly init_logger: () => void;
31
+ readonly rust_sqlite_wasm_abort: () => void;
32
+ readonly rust_sqlite_wasm_assert_fail: (a: number, b: number, c: number, d: number) => void;
33
+ readonly rust_sqlite_wasm_calloc: (a: number, b: number) => number;
34
+ readonly rust_sqlite_wasm_malloc: (a: number) => number;
35
+ readonly rust_sqlite_wasm_free: (a: number) => void;
36
+ readonly rust_sqlite_wasm_getentropy: (a: number, b: number) => number;
37
+ readonly rust_sqlite_wasm_localtime: (a: number) => number;
38
+ readonly rust_sqlite_wasm_realloc: (a: number, b: number) => number;
39
+ readonly sqlite3_os_end: () => number;
40
+ readonly sqlite3_os_init: () => number;
20
41
  readonly __wbindgen_exn_store: (a: number) => void;
21
42
  readonly __externref_table_alloc: () => number;
22
43
  readonly __wbindgen_export_2: WebAssembly.Table;
package/dist/duc2pdf.js CHANGED
@@ -1,19 +1,5 @@
1
1
  let wasm;
2
2
 
3
- let cachedUint8ArrayMemory0 = null;
4
-
5
- function getUint8ArrayMemory0() {
6
- if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
7
- cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
8
- }
9
- return cachedUint8ArrayMemory0;
10
- }
11
-
12
- function getArrayU8FromWasm0(ptr, len) {
13
- ptr = ptr >>> 0;
14
- return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
15
- }
16
-
17
3
  function addToExternrefTable0(obj) {
18
4
  const idx = wasm.__externref_table_alloc();
19
5
  wasm.__wbindgen_export_2.set(idx, obj);
@@ -29,40 +15,22 @@ function handleError(f, args) {
29
15
  }
30
16
  }
31
17
 
32
- let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
33
-
34
- cachedTextDecoder.decode();
18
+ let cachedUint8ArrayMemory0 = null;
35
19
 
36
- const MAX_SAFARI_DECODE_BYTES = 2146435072;
37
- let numBytesDecoded = 0;
38
- function decodeText(ptr, len) {
39
- numBytesDecoded += len;
40
- if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
41
- cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
42
- cachedTextDecoder.decode();
43
- numBytesDecoded = len;
20
+ function getUint8ArrayMemory0() {
21
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
22
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
44
23
  }
45
- return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
24
+ return cachedUint8ArrayMemory0;
46
25
  }
47
26
 
48
- function getStringFromWasm0(ptr, len) {
27
+ function getArrayU8FromWasm0(ptr, len) {
49
28
  ptr = ptr >>> 0;
50
- return decodeText(ptr, len);
29
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
51
30
  }
52
31
 
53
32
  let WASM_VECTOR_LEN = 0;
54
33
 
55
- function passArray8ToWasm0(arg, malloc) {
56
- const ptr = malloc(arg.length * 1, 1) >>> 0;
57
- getUint8ArrayMemory0().set(arg, ptr / 1);
58
- WASM_VECTOR_LEN = arg.length;
59
- return ptr;
60
- }
61
-
62
- function isLikeNone(x) {
63
- return x === undefined || x === null;
64
- }
65
-
66
34
  const cachedTextEncoder = new TextEncoder();
67
35
 
68
36
  if (!('encodeInto' in cachedTextEncoder)) {
@@ -114,6 +82,51 @@ function passStringToWasm0(arg, malloc, realloc) {
114
82
  WASM_VECTOR_LEN = offset;
115
83
  return ptr;
116
84
  }
85
+
86
+ function isLikeNone(x) {
87
+ return x === undefined || x === null;
88
+ }
89
+
90
+ let cachedDataViewMemory0 = null;
91
+
92
+ function getDataViewMemory0() {
93
+ if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer.detached === true || (cachedDataViewMemory0.buffer.detached === undefined && cachedDataViewMemory0.buffer !== wasm.memory.buffer)) {
94
+ cachedDataViewMemory0 = new DataView(wasm.memory.buffer);
95
+ }
96
+ return cachedDataViewMemory0;
97
+ }
98
+
99
+ let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
100
+
101
+ cachedTextDecoder.decode();
102
+
103
+ const MAX_SAFARI_DECODE_BYTES = 2146435072;
104
+ let numBytesDecoded = 0;
105
+ function decodeText(ptr, len) {
106
+ numBytesDecoded += len;
107
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
108
+ cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
109
+ cachedTextDecoder.decode();
110
+ numBytesDecoded = len;
111
+ }
112
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
113
+ }
114
+
115
+ function getStringFromWasm0(ptr, len) {
116
+ ptr = ptr >>> 0;
117
+ return decodeText(ptr, len);
118
+ }
119
+
120
+ export function init_logger() {
121
+ wasm.init_logger();
122
+ }
123
+
124
+ function passArray8ToWasm0(arg, malloc) {
125
+ const ptr = malloc(arg.length * 1, 1) >>> 0;
126
+ getUint8ArrayMemory0().set(arg, ptr / 1);
127
+ WASM_VECTOR_LEN = arg.length;
128
+ return ptr;
129
+ }
117
130
  /**
118
131
  * WASM binding for crop conversion
119
132
  * @param {Uint8Array} duc_data
@@ -135,8 +148,20 @@ export function convert_duc_to_pdf_crop_wasm(duc_data, offset_x, offset_y, width
135
148
  return v3;
136
149
  }
137
150
 
138
- export function init_logger() {
139
- wasm.init_logger();
151
+ /**
152
+ * WASM binding for conversion with custom font data
153
+ * font_map_js: a JS Map<string, Uint8Array> mapping font family names to TTF/OTF bytes
154
+ * @param {Uint8Array} duc_data
155
+ * @param {any} font_map_js
156
+ * @returns {Uint8Array}
157
+ */
158
+ export function convert_duc_to_pdf_with_fonts_rs(duc_data, font_map_js) {
159
+ const ptr0 = passArray8ToWasm0(duc_data, wasm.__wbindgen_malloc);
160
+ const len0 = WASM_VECTOR_LEN;
161
+ const ret = wasm.convert_duc_to_pdf_with_fonts_rs(ptr0, len0, font_map_js);
162
+ var v2 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
163
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
164
+ return v2;
140
165
  }
141
166
 
142
167
  /**
@@ -153,6 +178,28 @@ export function convert_duc_to_pdf_rs(duc_data) {
153
178
  return v2;
154
179
  }
155
180
 
181
+ /**
182
+ * WASM binding for crop conversion with custom font data
183
+ * @param {Uint8Array} duc_data
184
+ * @param {number} offset_x
185
+ * @param {number} offset_y
186
+ * @param {number | null | undefined} width
187
+ * @param {number | null | undefined} height
188
+ * @param {string | null | undefined} background_color
189
+ * @param {any} font_map_js
190
+ * @returns {Uint8Array}
191
+ */
192
+ export function convert_duc_to_pdf_crop_with_fonts_wasm(duc_data, offset_x, offset_y, width, height, background_color, font_map_js) {
193
+ const ptr0 = passArray8ToWasm0(duc_data, wasm.__wbindgen_malloc);
194
+ const len0 = WASM_VECTOR_LEN;
195
+ var ptr1 = isLikeNone(background_color) ? 0 : passStringToWasm0(background_color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
196
+ var len1 = WASM_VECTOR_LEN;
197
+ const ret = wasm.convert_duc_to_pdf_crop_with_fonts_wasm(ptr0, len0, offset_x, offset_y, !isLikeNone(width), isLikeNone(width) ? 0 : width, !isLikeNone(height), isLikeNone(height) ? 0 : height, ptr1, len1, font_map_js);
198
+ var v3 = getArrayU8FromWasm0(ret[0], ret[1]).slice();
199
+ wasm.__wbindgen_free(ret[0], ret[1] * 1, 1);
200
+ return v3;
201
+ }
202
+
156
203
  const EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']);
157
204
 
158
205
  async function __wbg_load(module, imports) {
@@ -191,24 +238,155 @@ async function __wbg_load(module, imports) {
191
238
  function __wbg_get_imports() {
192
239
  const imports = {};
193
240
  imports.wbg = {};
241
+ imports.wbg.__wbg_call_13410aac570ffff7 = function() { return handleError(function (arg0, arg1) {
242
+ const ret = arg0.call(arg1);
243
+ return ret;
244
+ }, arguments) };
194
245
  imports.wbg.__wbg_debug_c906769d2f88c17b = function(arg0) {
195
246
  console.debug(arg0);
196
247
  };
248
+ imports.wbg.__wbg_done_75ed0ee6dd243d9d = function(arg0) {
249
+ const ret = arg0.done;
250
+ return ret;
251
+ };
197
252
  imports.wbg.__wbg_error_99981e16d476aa5c = function(arg0) {
198
253
  console.error(arg0);
199
254
  };
255
+ imports.wbg.__wbg_from_88bc52ce20ba6318 = function(arg0) {
256
+ const ret = Array.from(arg0);
257
+ return ret;
258
+ };
259
+ imports.wbg.__wbg_getDate_9615e288fc892247 = function(arg0) {
260
+ const ret = arg0.getDate();
261
+ return ret;
262
+ };
263
+ imports.wbg.__wbg_getDay_c9c4f57fb4ef6fef = function(arg0) {
264
+ const ret = arg0.getDay();
265
+ return ret;
266
+ };
267
+ imports.wbg.__wbg_getFullYear_e351a9fa7d2fab83 = function(arg0) {
268
+ const ret = arg0.getFullYear();
269
+ return ret;
270
+ };
271
+ imports.wbg.__wbg_getHours_4cc14de357c9e723 = function(arg0) {
272
+ const ret = arg0.getHours();
273
+ return ret;
274
+ };
275
+ imports.wbg.__wbg_getMinutes_6cde8fdd08b0c2ec = function(arg0) {
276
+ const ret = arg0.getMinutes();
277
+ return ret;
278
+ };
279
+ imports.wbg.__wbg_getMonth_8cc234bce5c8bcac = function(arg0) {
280
+ const ret = arg0.getMonth();
281
+ return ret;
282
+ };
200
283
  imports.wbg.__wbg_getRandomValues_1c61fac11405ffdc = function() { return handleError(function (arg0, arg1) {
201
284
  globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));
202
285
  }, arguments) };
286
+ imports.wbg.__wbg_getRandomValues_933a06e2370405af = function() { return handleError(function (arg0, arg1) {
287
+ globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));
288
+ }, arguments) };
289
+ imports.wbg.__wbg_getSeconds_c2f02452d804ece0 = function(arg0) {
290
+ const ret = arg0.getSeconds();
291
+ return ret;
292
+ };
293
+ imports.wbg.__wbg_getTime_6bb3f64e0f18f817 = function(arg0) {
294
+ const ret = arg0.getTime();
295
+ return ret;
296
+ };
297
+ imports.wbg.__wbg_getTimezoneOffset_1e3ddc1382e7c8b0 = function(arg0) {
298
+ const ret = arg0.getTimezoneOffset();
299
+ return ret;
300
+ };
301
+ imports.wbg.__wbg_get_0da715ceaecea5c8 = function(arg0, arg1) {
302
+ const ret = arg0[arg1 >>> 0];
303
+ return ret;
304
+ };
305
+ imports.wbg.__wbg_get_458e874b43b18b25 = function() { return handleError(function (arg0, arg1) {
306
+ const ret = Reflect.get(arg0, arg1);
307
+ return ret;
308
+ }, arguments) };
203
309
  imports.wbg.__wbg_info_6cf68c1a86a92f6a = function(arg0) {
204
310
  console.info(arg0);
205
311
  };
312
+ imports.wbg.__wbg_iterator_f370b34483c71a1c = function() {
313
+ const ret = Symbol.iterator;
314
+ return ret;
315
+ };
316
+ imports.wbg.__wbg_length_186546c51cd61acd = function(arg0) {
317
+ const ret = arg0.length;
318
+ return ret;
319
+ };
320
+ imports.wbg.__wbg_length_6bb7e81f9d7713e4 = function(arg0) {
321
+ const ret = arg0.length;
322
+ return ret;
323
+ };
206
324
  imports.wbg.__wbg_log_6c7b5f4f00b8ce3f = function(arg0) {
207
325
  console.log(arg0);
208
326
  };
327
+ imports.wbg.__wbg_new0_b0a0a38c201e6df5 = function() {
328
+ const ret = new Date();
329
+ return ret;
330
+ };
331
+ imports.wbg.__wbg_new_5a2ae4557f92b50e = function(arg0) {
332
+ const ret = new Date(arg0);
333
+ return ret;
334
+ };
335
+ imports.wbg.__wbg_new_638ebfaedbf32a5e = function(arg0) {
336
+ const ret = new Uint8Array(arg0);
337
+ return ret;
338
+ };
339
+ imports.wbg.__wbg_newwithyearmonthday_9d5466a369f2521d = function(arg0, arg1, arg2) {
340
+ const ret = new Date(arg0 >>> 0, arg1, arg2);
341
+ return ret;
342
+ };
343
+ imports.wbg.__wbg_next_5b3530e612fde77d = function(arg0) {
344
+ const ret = arg0.next;
345
+ return ret;
346
+ };
347
+ imports.wbg.__wbg_next_692e82279131b03c = function() { return handleError(function (arg0) {
348
+ const ret = arg0.next();
349
+ return ret;
350
+ }, arguments) };
351
+ imports.wbg.__wbg_prototypesetcall_3d4a26c1ed734349 = function(arg0, arg1, arg2) {
352
+ Uint8Array.prototype.set.call(getArrayU8FromWasm0(arg0, arg1), arg2);
353
+ };
354
+ imports.wbg.__wbg_random_7ed63a0b38ee3b75 = function() {
355
+ const ret = Math.random();
356
+ return ret;
357
+ };
358
+ imports.wbg.__wbg_value_dd9372230531eade = function(arg0) {
359
+ const ret = arg0.value;
360
+ return ret;
361
+ };
209
362
  imports.wbg.__wbg_warn_e2ada06313f92f09 = function(arg0) {
210
363
  console.warn(arg0);
211
364
  };
365
+ imports.wbg.__wbg_wbindgenisfunction_8cee7dce3725ae74 = function(arg0) {
366
+ const ret = typeof(arg0) === 'function';
367
+ return ret;
368
+ };
369
+ imports.wbg.__wbg_wbindgenisnull_f3037694abe4d97a = function(arg0) {
370
+ const ret = arg0 === null;
371
+ return ret;
372
+ };
373
+ imports.wbg.__wbg_wbindgenisobject_307a53c6bd97fbf8 = function(arg0) {
374
+ const val = arg0;
375
+ const ret = typeof(val) === 'object' && val !== null;
376
+ return ret;
377
+ };
378
+ imports.wbg.__wbg_wbindgenisundefined_c4b71d073b92f3c5 = function(arg0) {
379
+ const ret = arg0 === undefined;
380
+ return ret;
381
+ };
382
+ imports.wbg.__wbg_wbindgenstringget_0f16a6ddddef376f = function(arg0, arg1) {
383
+ const obj = arg1;
384
+ const ret = typeof(obj) === 'string' ? obj : undefined;
385
+ var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
386
+ var len1 = WASM_VECTOR_LEN;
387
+ getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true);
388
+ getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true);
389
+ };
212
390
  imports.wbg.__wbg_wbindgenthrow_451ec1a8469d7eb6 = function(arg0, arg1) {
213
391
  throw new Error(getStringFromWasm0(arg0, arg1));
214
392
  };
@@ -217,6 +395,11 @@ function __wbg_get_imports() {
217
395
  const ret = getStringFromWasm0(arg0, arg1);
218
396
  return ret;
219
397
  };
398
+ imports.wbg.__wbindgen_cast_d6cd19b81560fd6e = function(arg0) {
399
+ // Cast intrinsic for `F64 -> Externref`.
400
+ const ret = arg0;
401
+ return ret;
402
+ };
220
403
  imports.wbg.__wbindgen_init_externref_table = function() {
221
404
  const table = wasm.__wbindgen_export_2;
222
405
  const offset = table.grow(4);
@@ -238,6 +421,7 @@ function __wbg_init_memory(imports, memory) {
238
421
  function __wbg_finalize_init(instance, module) {
239
422
  wasm = instance.exports;
240
423
  __wbg_init.__wbindgen_wasm_module = module;
424
+ cachedDataViewMemory0 = null;
241
425
  cachedUint8ArrayMemory0 = null;
242
426
 
243
427
 
Binary file
@@ -2,8 +2,20 @@
2
2
  /* eslint-disable */
3
3
  export const memory: WebAssembly.Memory;
4
4
  export const convert_duc_to_pdf_crop_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => [number, number];
5
+ export const convert_duc_to_pdf_crop_with_fonts_wasm: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: any) => [number, number];
5
6
  export const convert_duc_to_pdf_rs: (a: number, b: number) => [number, number];
7
+ export const convert_duc_to_pdf_with_fonts_rs: (a: number, b: number, c: any) => [number, number];
6
8
  export const init_logger: () => void;
9
+ export const rust_sqlite_wasm_abort: () => void;
10
+ export const rust_sqlite_wasm_assert_fail: (a: number, b: number, c: number, d: number) => void;
11
+ export const rust_sqlite_wasm_calloc: (a: number, b: number) => number;
12
+ export const rust_sqlite_wasm_malloc: (a: number) => number;
13
+ export const rust_sqlite_wasm_free: (a: number) => void;
14
+ export const rust_sqlite_wasm_getentropy: (a: number, b: number) => number;
15
+ export const rust_sqlite_wasm_localtime: (a: number) => number;
16
+ export const rust_sqlite_wasm_realloc: (a: number, b: number) => number;
17
+ export const sqlite3_os_end: () => number;
18
+ export const sqlite3_os_init: () => number;
7
19
  export const __wbindgen_exn_store: (a: number) => void;
8
20
  export const __externref_table_alloc: () => number;
9
21
  export const __wbindgen_export_2: WebAssembly.Table;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ducpdf",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "description": "Library for converting between PDF and DUC formats.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -40,7 +40,7 @@
40
40
  "build": "bun run clean && bun run build:wasm && bun run copy:wasm-to-dist && bun run build:ts",
41
41
  "build:ts": "tsc -p tsconfig.json",
42
42
  "build:rs": "cd src/duc2pdf && cargo build",
43
- "build:wasm": "cd src/duc2pdf && wasm-pack build --target web --out-dir ../../pkg --release",
43
+ "build:wasm": "node scripts/build-wasm.mjs",
44
44
  "copy:wasm-to-dist": "mkdir -p dist && cp pkg/duc2pdf_bg.wasm dist/ && cp pkg/duc2pdf.js dist/ && cp pkg/duc2pdf.d.ts dist/ && cp pkg/duc2pdf_bg.wasm.d.ts dist/",
45
45
  "clean": "rm -rf dist pkg && cd src/duc2pdf && cargo clean",
46
46
  "test": "bun run build:wasm && bun test",
@@ -48,7 +48,7 @@
48
48
  "test:duc2pdf": "cd src/duc2pdf && cargo test"
49
49
  },
50
50
  "dependencies": {
51
- "ducjs": "^2.3.0"
51
+ "ducjs": "^3.0.0"
52
52
  },
53
53
  "devDependencies": {
54
54
  "typescript": "^5.4.5",