printdown 1.1.1 → 1.1.2

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/cli.js CHANGED
@@ -6,9 +6,10 @@ import "./chunk-GEQQR3U7.js";
6
6
 
7
7
  // src/cli.ts
8
8
  import path from "path";
9
+ import process from "process";
9
10
  import { cac } from "cac";
10
11
  var cli = cac("printdown");
11
- cli.command("<file>", "Render markdown file to PDF, PNG, JPEG, or WebP").option("-o, --output <path>", "Output file path (e.g., output.pdf, output.png, output.webp)").option("-f, --format <format>", "Output format (pdf, png, jpeg, webp)").option("-c, --css <path>", "Path to custom CSS file or inline CSS string").option("-t, --theme <theme>", "Theme to use (default: 'default', 'false' to disable)").option("-p, --pages", "Export multiple page images matching PDF/A4 page size", {
12
+ cli.command("[file]", "Render markdown file to PDF, PNG, JPEG, or WebP").option("-o, --output <path>", "Output file path (e.g., output.pdf, output.png, output.webp)").option("-f, --format <format>", "Output format (pdf, png, jpeg, webp)").option("-c, --css <path>", "Path to custom CSS file or inline CSS string").option("-t, --theme <theme>", "Theme to use (default: 'default', 'false' to disable)").option("-p, --pages", "Export multiple page images matching PDF/A4 page size", {
12
13
  default: false
13
14
  }).option("-s, --scale <scale>", "Image resolution scale multiplier (e.g., 1, 2, 3)", {
14
15
  default: void 0
@@ -16,7 +17,11 @@ cli.command("<file>", "Render markdown file to PDF, PNG, JPEG, or WebP").option(
16
17
  default: void 0
17
18
  }).option("--width <width>", "Viewport width in pixels", { default: void 0 }).option("--page-height <height>", "Page height in pixels for pages mode", { default: void 0 }).option("--margin-top <margin>", "Top margin in pixels for pages mode", { default: void 0 }).option("--margin-bottom <margin>", "Bottom margin in pixels for pages mode", {
18
19
  default: void 0
19
- }).option("--quality <quality>", "JPEG / WebP image quality (0-100)", { default: 90 }).action(async (file, options) => {
20
+ }).option("--quality <quality>", "JPEG / WebP image quality (0-100)", { default: 90 }).action(async (file, options = {}) => {
21
+ if (!file) {
22
+ cli.outputHelp();
23
+ return;
24
+ }
20
25
  try {
21
26
  const inputPath = path.resolve(file);
22
27
  const ext = path.extname(inputPath);
@@ -66,6 +71,6 @@ cli.command("<file>", "Render markdown file to PDF, PNG, JPEG, or WebP").option(
66
71
  }
67
72
  });
68
73
  cli.help();
69
- cli.version("1.1.1");
74
+ cli.version("1.1.2");
70
75
  cli.parse();
71
76
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from \"node:path\";\nimport { cac } from \"cac\";\nimport { renderFile } from \"./index.js\";\nimport type { OutputFormat } from \"./types.js\";\n\nconst cli = cac(\"printdown\");\n\ncli\n .command(\"<file>\", \"Render markdown file to PDF, PNG, JPEG, or WebP\")\n .option(\"-o, --output <path>\", \"Output file path (e.g., output.pdf, output.png, output.webp)\")\n .option(\"-f, --format <format>\", \"Output format (pdf, png, jpeg, webp)\")\n .option(\"-c, --css <path>\", \"Path to custom CSS file or inline CSS string\")\n .option(\"-t, --theme <theme>\", \"Theme to use (default: 'default', 'false' to disable)\")\n .option(\"-p, --pages\", \"Export multiple page images matching PDF/A4 page size\", {\n default: false,\n })\n .option(\"-s, --scale <scale>\", \"Image resolution scale multiplier (e.g., 1, 2, 3)\", {\n default: undefined,\n })\n .option(\"--device-scale-factor <factor>\", \"Device scale factor for screenshots\", {\n default: undefined,\n })\n .option(\"--width <width>\", \"Viewport width in pixels\", { default: undefined })\n .option(\"--page-height <height>\", \"Page height in pixels for pages mode\", { default: undefined })\n .option(\"--margin-top <margin>\", \"Top margin in pixels for pages mode\", { default: undefined })\n .option(\"--margin-bottom <margin>\", \"Bottom margin in pixels for pages mode\", {\n default: undefined,\n })\n .option(\"--quality <quality>\", \"JPEG / WebP image quality (0-100)\", { default: 90 })\n .action(async (file: string, options) => {\n try {\n const inputPath = path.resolve(file);\n const ext = path.extname(inputPath);\n const baseName = path.basename(inputPath, ext);\n\n let format: OutputFormat | undefined = undefined;\n if (options.format) {\n const fmt = options.format.toLowerCase();\n if (fmt === \"pdf\" || fmt === \"png\" || fmt === \"jpeg\" || fmt === \"jpg\" || fmt === \"webp\") {\n format = fmt === \"jpg\" ? \"jpeg\" : (fmt as OutputFormat);\n } else {\n console.error(\n `Error: Unsupported format \"${options.format}\". Use pdf, png, jpeg, or webp.`,\n );\n process.exit(1);\n }\n }\n\n let outputPath = options.output;\n if (!outputPath) {\n const targetFormat = format || \"pdf\";\n outputPath = path.join(path.dirname(inputPath), `${baseName}.${targetFormat}`);\n }\n\n const themeOption =\n options.theme === \"false\" || options.theme === false ? false : options.theme || \"default\";\n\n const width = options.width ? Number(options.width) : undefined;\n const pageHeight = options.pageHeight ? Number(options.pageHeight) : undefined;\n const pageMarginTop = options.marginTop ? Number(options.marginTop) : undefined;\n const pageMarginBottom = options.marginBottom ? Number(options.marginBottom) : undefined;\n const quality = options.quality ? Number(options.quality) : 90;\n const scale = options.scale\n ? Number(options.scale)\n : options.deviceScaleFactor\n ? Number(options.deviceScaleFactor)\n : undefined;\n const pages = Boolean(options.pages);\n\n await renderFile(inputPath, {\n output: outputPath,\n format,\n theme: themeOption,\n css: options.css,\n width,\n pageHeight,\n pageMarginTop,\n pageMarginBottom,\n quality,\n scale,\n pages,\n });\n\n console.log(`Successfully generated: ${outputPath}`);\n } catch (err: unknown) {\n console.error(\"Error generating document:\", err instanceof Error ? err.message : err);\n process.exit(1);\n }\n });\n\ncli.help();\ncli.version(\"1.1.1\");\n\ncli.parse();\n"],"mappings":";;;;;;;AACA,OAAO,UAAU;AACjB,SAAS,WAAW;AAIpB,IAAM,MAAM,IAAI,WAAW;AAE3B,IACG,QAAQ,UAAU,iDAAiD,EACnE,OAAO,uBAAuB,8DAA8D,EAC5F,OAAO,yBAAyB,sCAAsC,EACtE,OAAO,oBAAoB,8CAA8C,EACzE,OAAO,uBAAuB,uDAAuD,EACrF,OAAO,eAAe,yDAAyD;AAAA,EAC9E,SAAS;AACX,CAAC,EACA,OAAO,uBAAuB,qDAAqD;AAAA,EAClF,SAAS;AACX,CAAC,EACA,OAAO,kCAAkC,uCAAuC;AAAA,EAC/E,SAAS;AACX,CAAC,EACA,OAAO,mBAAmB,4BAA4B,EAAE,SAAS,OAAU,CAAC,EAC5E,OAAO,0BAA0B,wCAAwC,EAAE,SAAS,OAAU,CAAC,EAC/F,OAAO,yBAAyB,uCAAuC,EAAE,SAAS,OAAU,CAAC,EAC7F,OAAO,4BAA4B,0CAA0C;AAAA,EAC5E,SAAS;AACX,CAAC,EACA,OAAO,uBAAuB,qCAAqC,EAAE,SAAS,GAAG,CAAC,EAClF,OAAO,OAAO,MAAc,YAAY;AACvC,MAAI;AACF,UAAM,YAAY,KAAK,QAAQ,IAAI;AACnC,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,UAAM,WAAW,KAAK,SAAS,WAAW,GAAG;AAE7C,QAAI,SAAmC;AACvC,QAAI,QAAQ,QAAQ;AAClB,YAAM,MAAM,QAAQ,OAAO,YAAY;AACvC,UAAI,QAAQ,SAAS,QAAQ,SAAS,QAAQ,UAAU,QAAQ,SAAS,QAAQ,QAAQ;AACvF,iBAAS,QAAQ,QAAQ,SAAU;AAAA,MACrC,OAAO;AACL,gBAAQ;AAAA,UACN,8BAA8B,QAAQ,MAAM;AAAA,QAC9C;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,aAAa,QAAQ;AACzB,QAAI,CAAC,YAAY;AACf,YAAM,eAAe,UAAU;AAC/B,mBAAa,KAAK,KAAK,KAAK,QAAQ,SAAS,GAAG,GAAG,QAAQ,IAAI,YAAY,EAAE;AAAA,IAC/E;AAEA,UAAM,cACJ,QAAQ,UAAU,WAAW,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,SAAS;AAElF,UAAM,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI;AACtD,UAAM,aAAa,QAAQ,aAAa,OAAO,QAAQ,UAAU,IAAI;AACrE,UAAM,gBAAgB,QAAQ,YAAY,OAAO,QAAQ,SAAS,IAAI;AACtE,UAAM,mBAAmB,QAAQ,eAAe,OAAO,QAAQ,YAAY,IAAI;AAC/E,UAAM,UAAU,QAAQ,UAAU,OAAO,QAAQ,OAAO,IAAI;AAC5D,UAAM,QAAQ,QAAQ,QAClB,OAAO,QAAQ,KAAK,IACpB,QAAQ,oBACN,OAAO,QAAQ,iBAAiB,IAChC;AACN,UAAM,QAAQ,QAAQ,QAAQ,KAAK;AAEnC,UAAM,WAAW,WAAW;AAAA,MAC1B,QAAQ;AAAA,MACR;AAAA,MACA,OAAO;AAAA,MACP,KAAK,QAAQ;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,2BAA2B,UAAU,EAAE;AAAA,EACrD,SAAS,KAAc;AACrB,YAAQ,MAAM,8BAA8B,eAAe,QAAQ,IAAI,UAAU,GAAG;AACpF,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF,CAAC;AAEH,IAAI,KAAK;AACT,IAAI,QAAQ,OAAO;AAEnB,IAAI,MAAM;","names":[]}
1
+ {"version":3,"sources":["../src/cli.ts"],"sourcesContent":["#!/usr/bin/env node\nimport path from \"node:path\";\nimport process from \"node:process\";\nimport { cac } from \"cac\";\nimport { renderFile } from \"./index.js\";\nimport type { OutputFormat } from \"./types.js\";\n\nconst cli = cac(\"printdown\");\n\ncli\n .command(\"[file]\", \"Render markdown file to PDF, PNG, JPEG, or WebP\")\n .option(\"-o, --output <path>\", \"Output file path (e.g., output.pdf, output.png, output.webp)\")\n .option(\"-f, --format <format>\", \"Output format (pdf, png, jpeg, webp)\")\n .option(\"-c, --css <path>\", \"Path to custom CSS file or inline CSS string\")\n .option(\"-t, --theme <theme>\", \"Theme to use (default: 'default', 'false' to disable)\")\n .option(\"-p, --pages\", \"Export multiple page images matching PDF/A4 page size\", {\n default: false,\n })\n .option(\"-s, --scale <scale>\", \"Image resolution scale multiplier (e.g., 1, 2, 3)\", {\n default: undefined,\n })\n .option(\"--device-scale-factor <factor>\", \"Device scale factor for screenshots\", {\n default: undefined,\n })\n .option(\"--width <width>\", \"Viewport width in pixels\", { default: undefined })\n .option(\"--page-height <height>\", \"Page height in pixels for pages mode\", { default: undefined })\n .option(\"--margin-top <margin>\", \"Top margin in pixels for pages mode\", { default: undefined })\n .option(\"--margin-bottom <margin>\", \"Bottom margin in pixels for pages mode\", {\n default: undefined,\n })\n .option(\"--quality <quality>\", \"JPEG / WebP image quality (0-100)\", { default: 90 })\n .action(async (file?: string, options = {}) => {\n if (!file) {\n cli.outputHelp();\n return;\n }\n\n try {\n const inputPath = path.resolve(file);\n const ext = path.extname(inputPath);\n const baseName = path.basename(inputPath, ext);\n\n let format: OutputFormat | undefined = undefined;\n if (options.format) {\n const fmt = options.format.toLowerCase();\n if (fmt === \"pdf\" || fmt === \"png\" || fmt === \"jpeg\" || fmt === \"jpg\" || fmt === \"webp\") {\n format = fmt === \"jpg\" ? \"jpeg\" : (fmt as OutputFormat);\n } else {\n console.error(\n `Error: Unsupported format \"${options.format}\". Use pdf, png, jpeg, or webp.`,\n );\n process.exit(1);\n }\n }\n\n let outputPath = options.output;\n if (!outputPath) {\n const targetFormat = format || \"pdf\";\n outputPath = path.join(path.dirname(inputPath), `${baseName}.${targetFormat}`);\n }\n\n const themeOption =\n options.theme === \"false\" || options.theme === false ? false : options.theme || \"default\";\n\n const width = options.width ? Number(options.width) : undefined;\n const pageHeight = options.pageHeight ? Number(options.pageHeight) : undefined;\n const pageMarginTop = options.marginTop ? Number(options.marginTop) : undefined;\n const pageMarginBottom = options.marginBottom ? Number(options.marginBottom) : undefined;\n const quality = options.quality ? Number(options.quality) : 90;\n const scale = options.scale\n ? Number(options.scale)\n : options.deviceScaleFactor\n ? Number(options.deviceScaleFactor)\n : undefined;\n const pages = Boolean(options.pages);\n\n await renderFile(inputPath, {\n output: outputPath,\n format,\n theme: themeOption,\n css: options.css,\n width,\n pageHeight,\n pageMarginTop,\n pageMarginBottom,\n quality,\n scale,\n pages,\n });\n\n console.log(`Successfully generated: ${outputPath}`);\n } catch (err: unknown) {\n console.error(\"Error generating document:\", err instanceof Error ? err.message : err);\n process.exit(1);\n }\n });\n\ncli.help();\ncli.version(\"1.1.2\");\n\ncli.parse();\n"],"mappings":";;;;;;;AACA,OAAO,UAAU;AACjB,OAAO,aAAa;AACpB,SAAS,WAAW;AAIpB,IAAM,MAAM,IAAI,WAAW;AAE3B,IACG,QAAQ,UAAU,iDAAiD,EACnE,OAAO,uBAAuB,8DAA8D,EAC5F,OAAO,yBAAyB,sCAAsC,EACtE,OAAO,oBAAoB,8CAA8C,EACzE,OAAO,uBAAuB,uDAAuD,EACrF,OAAO,eAAe,yDAAyD;AAAA,EAC9E,SAAS;AACX,CAAC,EACA,OAAO,uBAAuB,qDAAqD;AAAA,EAClF,SAAS;AACX,CAAC,EACA,OAAO,kCAAkC,uCAAuC;AAAA,EAC/E,SAAS;AACX,CAAC,EACA,OAAO,mBAAmB,4BAA4B,EAAE,SAAS,OAAU,CAAC,EAC5E,OAAO,0BAA0B,wCAAwC,EAAE,SAAS,OAAU,CAAC,EAC/F,OAAO,yBAAyB,uCAAuC,EAAE,SAAS,OAAU,CAAC,EAC7F,OAAO,4BAA4B,0CAA0C;AAAA,EAC5E,SAAS;AACX,CAAC,EACA,OAAO,uBAAuB,qCAAqC,EAAE,SAAS,GAAG,CAAC,EAClF,OAAO,OAAO,MAAe,UAAU,CAAC,MAAM;AAC7C,MAAI,CAAC,MAAM;AACT,QAAI,WAAW;AACf;AAAA,EACF;AAEA,MAAI;AACF,UAAM,YAAY,KAAK,QAAQ,IAAI;AACnC,UAAM,MAAM,KAAK,QAAQ,SAAS;AAClC,UAAM,WAAW,KAAK,SAAS,WAAW,GAAG;AAE7C,QAAI,SAAmC;AACvC,QAAI,QAAQ,QAAQ;AAClB,YAAM,MAAM,QAAQ,OAAO,YAAY;AACvC,UAAI,QAAQ,SAAS,QAAQ,SAAS,QAAQ,UAAU,QAAQ,SAAS,QAAQ,QAAQ;AACvF,iBAAS,QAAQ,QAAQ,SAAU;AAAA,MACrC,OAAO;AACL,gBAAQ;AAAA,UACN,8BAA8B,QAAQ,MAAM;AAAA,QAC9C;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB;AAAA,IACF;AAEA,QAAI,aAAa,QAAQ;AACzB,QAAI,CAAC,YAAY;AACf,YAAM,eAAe,UAAU;AAC/B,mBAAa,KAAK,KAAK,KAAK,QAAQ,SAAS,GAAG,GAAG,QAAQ,IAAI,YAAY,EAAE;AAAA,IAC/E;AAEA,UAAM,cACJ,QAAQ,UAAU,WAAW,QAAQ,UAAU,QAAQ,QAAQ,QAAQ,SAAS;AAElF,UAAM,QAAQ,QAAQ,QAAQ,OAAO,QAAQ,KAAK,IAAI;AACtD,UAAM,aAAa,QAAQ,aAAa,OAAO,QAAQ,UAAU,IAAI;AACrE,UAAM,gBAAgB,QAAQ,YAAY,OAAO,QAAQ,SAAS,IAAI;AACtE,UAAM,mBAAmB,QAAQ,eAAe,OAAO,QAAQ,YAAY,IAAI;AAC/E,UAAM,UAAU,QAAQ,UAAU,OAAO,QAAQ,OAAO,IAAI;AAC5D,UAAM,QAAQ,QAAQ,QAClB,OAAO,QAAQ,KAAK,IACpB,QAAQ,oBACN,OAAO,QAAQ,iBAAiB,IAChC;AACN,UAAM,QAAQ,QAAQ,QAAQ,KAAK;AAEnC,UAAM,WAAW,WAAW;AAAA,MAC1B,QAAQ;AAAA,MACR;AAAA,MACA,OAAO;AAAA,MACP,KAAK,QAAQ;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAED,YAAQ,IAAI,2BAA2B,UAAU,EAAE;AAAA,EACrD,SAAS,KAAc;AACrB,YAAQ,MAAM,8BAA8B,eAAe,QAAQ,IAAI,UAAU,GAAG;AACpF,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF,CAAC;AAEH,IAAI,KAAK;AACT,IAAI,QAAQ,OAAO;AAEnB,IAAI,MAAM;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "printdown",
3
- "version": "1.1.1",
3
+ "version": "1.1.2",
4
4
  "description": "A customizable Markdown renderer for generating beautifully styled PDFs and images with CSS.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",