@mlightcad/cad-simple-viewer-cli 1.7.8-preview.6 → 1.8.0-preview.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 +19 -0
- package/dist-runner/assets/{cad-html-plugin-BX7V6aIa.js → cad-html-plugin-xBZOCVKb.js} +17 -17
- package/dist-runner/assets/{cad-pdf-plugin-D2a22XTJ.js → cad-pdf-plugin-B2X4e6-g.js} +88 -91
- package/dist-runner/assets/{cad-svg-plugin-BCNrpc7g.js → cad-svg-plugin-vag8yWJA.js} +2 -2
- package/dist-runner/assets/{index-BCz7pt73.js → index-BKIO0gN3.js} +336 -336
- package/dist-runner/index.html +1 -1
- package/dist-runner/viewer-runtime.iife.js +195 -195
- package/dist-runner/workers/libredwg-parser-worker.js +8 -8
- package/dist-runner/workers/mtext-renderer-worker.js +1208 -1178
- package/examples/batch-export-pdf.mjs +114 -0
- package/examples/export-pdf-monochrome.scr +13 -0
- package/examples/export-pdf.scr +6 -1
- package/examples/index.json +27 -0
- package/package.json +11 -10
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Recursively scan a directory for .dwg / .dxf files and export each to PDF
|
|
4
|
+
* via cad-simple-viewer-cli + export-pdf.scr (or export-pdf-monochrome.scr).
|
|
5
|
+
*
|
|
6
|
+
* Usage (from packages/cad-simple-viewer-cli after build):
|
|
7
|
+
* node examples/batch-export-pdf.mjs <inputDir> [outputDir] [--color-mode color|monochrome]
|
|
8
|
+
*
|
|
9
|
+
* --color-mode monochrome writes white paper with black linework and text.
|
|
10
|
+
*/
|
|
11
|
+
import { spawn } from 'node:child_process'
|
|
12
|
+
import { existsSync } from 'node:fs'
|
|
13
|
+
import { mkdir, readdir } from 'node:fs/promises'
|
|
14
|
+
import path from 'node:path'
|
|
15
|
+
import { fileURLToPath } from 'node:url'
|
|
16
|
+
|
|
17
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url))
|
|
18
|
+
const packageRoot = path.resolve(__dirname, '..')
|
|
19
|
+
const cliJs = path.join(packageRoot, 'dist', 'cli.js')
|
|
20
|
+
const args = process.argv.slice(2)
|
|
21
|
+
const colorModeIndex = args.indexOf('--color-mode')
|
|
22
|
+
const colorMode = colorModeIndex >= 0 ? args[colorModeIndex + 1] : 'color'
|
|
23
|
+
if (colorModeIndex >= 0) args.splice(colorModeIndex, 2)
|
|
24
|
+
const scriptPath = path.join(
|
|
25
|
+
__dirname,
|
|
26
|
+
colorMode === 'monochrome' ? 'export-pdf-monochrome.scr' : 'export-pdf.scr'
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
const DRAWING_EXT = new Set(['.dwg', '.dxf'])
|
|
30
|
+
|
|
31
|
+
async function collectDrawings(dir, out = []) {
|
|
32
|
+
const entries = await readdir(dir, { withFileTypes: true })
|
|
33
|
+
for (const entry of entries) {
|
|
34
|
+
const full = path.join(dir, entry.name)
|
|
35
|
+
if (entry.isDirectory()) {
|
|
36
|
+
await collectDrawings(full, out)
|
|
37
|
+
} else if (DRAWING_EXT.has(path.extname(entry.name).toLowerCase())) {
|
|
38
|
+
out.push(full)
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return out
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function runCli(input, outputDir) {
|
|
45
|
+
return new Promise((resolve, reject) => {
|
|
46
|
+
const child = spawn(
|
|
47
|
+
process.execPath,
|
|
48
|
+
[cliJs, '-i', input, '-s', scriptPath, '-o', outputDir, '--mode', 'read'],
|
|
49
|
+
{ stdio: 'inherit' }
|
|
50
|
+
)
|
|
51
|
+
child.on('error', reject)
|
|
52
|
+
child.on('exit', code => {
|
|
53
|
+
if (code === 0) resolve()
|
|
54
|
+
else
|
|
55
|
+
reject(
|
|
56
|
+
new Error(
|
|
57
|
+
`cad-simple-viewer-cli exited with code ${code} for ${input}`
|
|
58
|
+
)
|
|
59
|
+
)
|
|
60
|
+
})
|
|
61
|
+
})
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
async function main() {
|
|
65
|
+
const inputDir = path.resolve(args[0] ?? '')
|
|
66
|
+
const outputDir = path.resolve(args[1] ?? path.join(inputDir, 'pdf-out'))
|
|
67
|
+
|
|
68
|
+
if (colorMode !== 'color' && colorMode !== 'monochrome') {
|
|
69
|
+
console.error(`Invalid --color-mode: ${colorMode} (color | monochrome)`)
|
|
70
|
+
process.exitCode = 1
|
|
71
|
+
return
|
|
72
|
+
}
|
|
73
|
+
if (!args[0] || !existsSync(inputDir)) {
|
|
74
|
+
console.error(
|
|
75
|
+
'Usage: node examples/batch-export-pdf.mjs <inputDir> [outputDir] [--color-mode color|monochrome]'
|
|
76
|
+
)
|
|
77
|
+
process.exitCode = 1
|
|
78
|
+
return
|
|
79
|
+
}
|
|
80
|
+
if (!existsSync(cliJs)) {
|
|
81
|
+
console.error(
|
|
82
|
+
'CLI not built. Run: pnpm --filter @mlightcad/cad-simple-viewer-cli build'
|
|
83
|
+
)
|
|
84
|
+
process.exitCode = 1
|
|
85
|
+
return
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
await mkdir(outputDir, { recursive: true })
|
|
89
|
+
const drawings = await collectDrawings(inputDir)
|
|
90
|
+
if (!drawings.length) {
|
|
91
|
+
console.error(`No .dwg/.dxf files found under ${inputDir}`)
|
|
92
|
+
process.exitCode = 1
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
console.log(
|
|
97
|
+
`Found ${drawings.length} drawing(s). Color mode: ${colorMode}. Output: ${outputDir}`
|
|
98
|
+
)
|
|
99
|
+
let failed = 0
|
|
100
|
+
for (const drawing of drawings) {
|
|
101
|
+
console.log(`\n=== ${drawing} ===`)
|
|
102
|
+
try {
|
|
103
|
+
await runCli(drawing, outputDir)
|
|
104
|
+
} catch (error) {
|
|
105
|
+
failed++
|
|
106
|
+
console.error(error instanceof Error ? error.message : String(error))
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
console.log(`\nDone. success=${drawings.length - failed} failed=${failed}`)
|
|
111
|
+
if (failed) process.exitCode = 1
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
await main()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
; export-pdf-monochrome.scr
|
|
2
|
+
; Export a print-ready PDF: white paper, black linework and text, solid fills
|
|
3
|
+
; in grey (-cpdf ... Monochrome).
|
|
4
|
+
; Usage:
|
|
5
|
+
; cad-simple-viewer-cli -i drawing.dwg -s examples/export-pdf-monochrome.scr -o ./out
|
|
6
|
+
zoom
|
|
7
|
+
e
|
|
8
|
+
-cpdf
|
|
9
|
+
Extents
|
|
10
|
+
Yes
|
|
11
|
+
Text
|
|
12
|
+
Monochrome
|
|
13
|
+
quit
|
package/examples/export-pdf.scr
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
; export-pdf.scr
|
|
2
|
+
; Export a vector PDF (-cpdf).
|
|
3
|
+
; Prompts: model space frame (Extents / Display) / export layouts (Yes / No) /
|
|
4
|
+
; text rendering (Text / Vector) / color mode (Color / Monochrome).
|
|
5
|
+
; Usage:
|
|
6
|
+
; cad-simple-viewer-cli -i drawing.dwg -s examples/export-pdf.scr -o ./out
|
|
2
7
|
zoom
|
|
3
8
|
e
|
|
4
9
|
-cpdf
|
|
5
10
|
Extents
|
|
6
11
|
Yes
|
|
7
12
|
Text
|
|
8
|
-
|
|
13
|
+
Color
|
|
9
14
|
quit
|
package/examples/index.json
CHANGED
|
@@ -65,6 +65,24 @@
|
|
|
65
65
|
"inputKind": "file",
|
|
66
66
|
"runnable": true
|
|
67
67
|
},
|
|
68
|
+
{
|
|
69
|
+
"id": "export-pdf",
|
|
70
|
+
"title": "Export PDF",
|
|
71
|
+
"description": "Zoom extents and export a vector PDF in color with every layout (-cpdf).",
|
|
72
|
+
"script": "export-pdf.scr",
|
|
73
|
+
"mode": "read",
|
|
74
|
+
"inputKind": "file",
|
|
75
|
+
"runnable": true
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"id": "export-pdf-monochrome",
|
|
79
|
+
"title": "Export PDF (monochrome)",
|
|
80
|
+
"description": "Export a print-ready PDF: white paper, black linework and text, grey fills (-cpdf ... Monochrome).",
|
|
81
|
+
"script": "export-pdf-monochrome.scr",
|
|
82
|
+
"mode": "read",
|
|
83
|
+
"inputKind": "file",
|
|
84
|
+
"runnable": true
|
|
85
|
+
},
|
|
68
86
|
{
|
|
69
87
|
"id": "export-dxf",
|
|
70
88
|
"title": "Export DXF",
|
|
@@ -101,6 +119,15 @@
|
|
|
101
119
|
"inputKind": "directory",
|
|
102
120
|
"runnable": true
|
|
103
121
|
},
|
|
122
|
+
{
|
|
123
|
+
"id": "batch-export-pdf",
|
|
124
|
+
"title": "Batch export PDF",
|
|
125
|
+
"description": "Scan a folder and export each drawing to PDF (pass --color-mode monochrome for black and white).",
|
|
126
|
+
"script": "batch-export-pdf.mjs",
|
|
127
|
+
"kind": "batch",
|
|
128
|
+
"inputKind": "directory",
|
|
129
|
+
"runnable": true
|
|
130
|
+
},
|
|
104
131
|
{
|
|
105
132
|
"id": "batch-export-html-multi-preview",
|
|
106
133
|
"title": "Batch export HTML multi + preview",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mlightcad/cad-simple-viewer-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0-preview.0",
|
|
4
4
|
"description": "AcCoreConsole-style headless CLI: run .scr command scripts against DXF/DWG drawings",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,17 +42,18 @@
|
|
|
42
42
|
"script"
|
|
43
43
|
],
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@mlightcad/data-model": "1.15.
|
|
46
|
-
"@mlightcad/libredwg-converter": "3.15.
|
|
47
|
-
"@mlightcad/mtext-parser": "1.5.
|
|
48
|
-
"@mlightcad/mtext-renderer": "0.13.
|
|
45
|
+
"@mlightcad/data-model": "1.15.22",
|
|
46
|
+
"@mlightcad/libredwg-converter": "3.15.22",
|
|
47
|
+
"@mlightcad/mtext-parser": "1.5.7",
|
|
48
|
+
"@mlightcad/mtext-renderer": "0.13.7",
|
|
49
49
|
"commander": "^12.1.0",
|
|
50
50
|
"playwright": "^1.49.1",
|
|
51
|
-
"@mlightcad/cad-html-plugin": "1.
|
|
52
|
-
"@mlightcad/
|
|
53
|
-
"@mlightcad/cad-
|
|
54
|
-
"@mlightcad/
|
|
55
|
-
"@mlightcad/cad-
|
|
51
|
+
"@mlightcad/cad-html-plugin": "1.8.0-preview.0",
|
|
52
|
+
"@mlightcad/cad-simple-viewer": "1.8.0-preview.0",
|
|
53
|
+
"@mlightcad/cad-svg-plugin": "1.8.0-preview.0",
|
|
54
|
+
"@mlightcad/pdf-renderer": "1.8.0-preview.0",
|
|
55
|
+
"@mlightcad/cad-pdf-core": "1.8.0-preview.0",
|
|
56
|
+
"@mlightcad/cad-pdf-plugin": "1.8.0-preview.0"
|
|
56
57
|
},
|
|
57
58
|
"devDependencies": {
|
|
58
59
|
"@types/node": "^20.14.9",
|