UNPKG

xm-md-pdf

Version:

CLI tool for converting Markdown files to PDF and DOC.

73 lines (72 loc) 2.74 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseFilePath = void 0; const path_1 = __importDefault(require("path")); const fs_extra_1 = __importDefault(require("fs-extra")); const global_1 = require("./global"); const render_1 = require("./render"); // 路径解析 exports.parseFilePath = (filePath) => { const { dir, name, ext, } = path_1.default.parse(filePath); return { path: dir, fileName: `${name}${ext}`, }; }; exports.default = async (content, options, filePath) => { var _a; const { pdf_options, watermark } = global_1.Global.config; const html = render_1.renderHtml(content); if (!((_a = global_1.Global.browser) === null || _a === void 0 ? void 0 : _a.isConnected())) { throw '浏览器启动失败,请确保已经调用过 openBrowser'; } // 设置html content await global_1.Global.page.setContent(html, { waitUntil: 'domcontentloaded' }); // 指定位置插入插入 html 片段 // await Global.page.$eval('#content', (dom, html) => { // dom.innerHTML = html // }, html); // 添加样式 await global_1.Global.page.addStyleTag({ path: path_1.default.resolve(__dirname, 'assets/markdown.css'), }); if (watermark) { await global_1.Global.page.addScriptTag({ path: path_1.default.resolve(__dirname, 'lib/waterMask.js'), }); // 运行自定义js脚本,这里用于添加水印 // 注:调用是需要带上 window 命名空间 await global_1.Global.page.evaluate((text) => { // @ts-ignore if (window.waterMark) { // @ts-ignore window.waterMark({ text }); } }, watermark); } let result = filePath; try { await global_1.Global.page.emulateMediaType('screen'); if (filePath) { const downloadConfig = exports.parseFilePath(filePath); fs_extra_1.default.ensureDir(downloadConfig.path); result = await global_1.Global.page.pdf(Object.assign(Object.assign(Object.assign({}, options), pdf_options), { path: `${downloadConfig.path}/${downloadConfig.fileName}` })); console.log(`${filePath} export complete`); } else { result = await global_1.Global.page.pdf(Object.assign(Object.assign({}, options), pdf_options)); console.log('pdf export complete'); } } catch (error) { throw error; } return Promise.resolve(result); };