electron-md-to-pdf
Advanced tools
Comparing version 2.0.0 to 2.1.0
121
index.js
"use strict"; | ||
var __assign = (this && this.__assign) || function () { | ||
__assign = Object.assign || function(t) { | ||
for (var s, i = 1, n = arguments.length; i < n; i++) { | ||
s = arguments[i]; | ||
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) | ||
t[p] = s[p]; | ||
} | ||
return t; | ||
}; | ||
return __assign.apply(this, arguments); | ||
}; | ||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
return new (P || (P = Promise))(function (resolve, reject) { | ||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } | ||
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
}); | ||
}; | ||
var __generator = (this && this.__generator) || function (thisArg, body) { | ||
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
function verb(n) { return function (v) { return step([n, v]); }; } | ||
function step(op) { | ||
if (f) throw new TypeError("Generator is already executing."); | ||
while (_) try { | ||
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
if (y = 0, t) op = [op[0] & 2, t.value]; | ||
switch (op[0]) { | ||
case 0: case 1: t = op; break; | ||
case 4: _.label++; return { value: op[1], done: false }; | ||
case 5: _.label++; y = op[1]; op = [0]; continue; | ||
case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
default: | ||
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
if (t[2]) _.ops.pop(); | ||
_.trys.pop(); continue; | ||
} | ||
op = body.call(thisArg, _); | ||
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
} | ||
}; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
const electron_1 = __importDefault(require("electron")); | ||
const fs_1 = __importDefault(require("fs")); | ||
const showdown_1 = __importDefault(require("showdown")); | ||
const BrowserWindow = electron_1.default.BrowserWindow || electron_1.default.remote.BrowserWindow; | ||
const DEFAULT_OPTIONS = { | ||
exports.__esModule = true; | ||
var electron_1 = __importDefault(require("electron")); | ||
var fs_1 = __importDefault(require("fs")); | ||
var showdown_1 = __importDefault(require("showdown")); | ||
var BrowserWindow = electron_1["default"].BrowserWindow || electron_1["default"].remote.BrowserWindow; | ||
var DEFAULT_OPTIONS = { | ||
cssString: "", | ||
@@ -24,52 +63,42 @@ cssFiles: [], | ||
showdownOptions: {}, | ||
wrapperClasses: "", | ||
wrapperClasses: "" | ||
}; | ||
function mdToPdfBuffer(md, options) { | ||
return new Promise((resolve, reject) => { | ||
const optionsWithDefaults = Object.assign({}, DEFAULT_OPTIONS, options); | ||
const { cssString, cssFiles, mdFlavor, pdfOptions, showdownOptions, wrapperClasses, } = optionsWithDefaults; | ||
let css = ""; | ||
cssFiles.forEach(filePath => { | ||
const fileString = fs_1.default.readFileSync(filePath, "utf8"); | ||
css += `${fileString}\n\n`; | ||
return new Promise(function (resolve, reject) { | ||
var optionsWithDefaults = __assign(__assign({}, DEFAULT_OPTIONS), options); | ||
var cssString = optionsWithDefaults.cssString, cssFiles = optionsWithDefaults.cssFiles, mdFlavor = optionsWithDefaults.mdFlavor, pdfOptions = optionsWithDefaults.pdfOptions, showdownOptions = optionsWithDefaults.showdownOptions, wrapperClasses = optionsWithDefaults.wrapperClasses; | ||
var css = ""; | ||
cssFiles.forEach(function (filePath) { | ||
var fileString = fs_1["default"].readFileSync(filePath, "utf8"); | ||
css += fileString + "\n\n"; | ||
}); | ||
css += cssString; | ||
const converter = new showdown_1.default.Converter(showdownOptions); | ||
showdown_1.default.setFlavor(mdFlavor); | ||
const html = converter.makeHtml(md); | ||
const htmlWrapped = ` | ||
<!DOCTYPE html> | ||
<html> | ||
<body> | ||
<div class="${wrapperClasses}"> | ||
${html} | ||
</div> | ||
</body> | ||
</html> | ||
`; | ||
const htmlEncoded = encodeURIComponent(htmlWrapped); | ||
let pdfWindow = new BrowserWindow({ | ||
var converter = new showdown_1["default"].Converter(showdownOptions); | ||
showdown_1["default"].setFlavor(mdFlavor); | ||
var html = converter.makeHtml(md); | ||
var htmlWrapped = "\n\t\t\t<!DOCTYPE html>\n\t\t\t<html>\n\t\t\t\t<body>\n\t\t\t\t\t<div class=\"" + wrapperClasses + "\">\n\t\t\t\t\t\t" + html + "\n\t\t\t\t\t</div>\n\t\t\t\t</body>\n\t\t\t</html>\n\t\t"; | ||
var htmlEncoded = encodeURIComponent(htmlWrapped); | ||
var pdfWindow = new BrowserWindow({ | ||
show: false, | ||
webPreferences: { | ||
nodeIntegration: false, | ||
}, | ||
nodeIntegration: false | ||
} | ||
}); | ||
pdfWindow.on("closed", () => { | ||
pdfWindow.on("closed", function () { | ||
pdfWindow = null; | ||
}); | ||
pdfWindow.webContents.on("did-finish-load", () => { | ||
pdfWindow.webContents.on("did-finish-load", function () { | ||
pdfWindow.webContents.insertCSS(css); | ||
pdfWindow.webContents | ||
.printToPDF(pdfOptions) | ||
.then(data => { | ||
.then(function (data) { | ||
resolve(data); | ||
}) | ||
.catch(err => { | ||
})["catch"](function (err) { | ||
reject(err); | ||
}) | ||
.then(() => { | ||
.then(function () { | ||
pdfWindow.close(); | ||
}); | ||
}); | ||
pdfWindow.loadURL(`data:text/html;charset=UTF-8,${htmlEncoded}`); | ||
pdfWindow.loadURL("data:text/html;charset=UTF-8," + htmlEncoded); | ||
}); | ||
@@ -79,5 +108,13 @@ } | ||
function mdToPdfFile(md, filePath, options) { | ||
return __awaiter(this, void 0, void 0, function* () { | ||
const pdfBuffer = yield mdToPdfBuffer(md, options); | ||
fs_1.default.writeFileSync(filePath, pdfBuffer); | ||
return __awaiter(this, void 0, void 0, function () { | ||
var pdfBuffer; | ||
return __generator(this, function (_a) { | ||
switch (_a.label) { | ||
case 0: return [4, mdToPdfBuffer(md, options)]; | ||
case 1: | ||
pdfBuffer = _a.sent(); | ||
fs_1["default"].writeFileSync(filePath, pdfBuffer); | ||
return [2]; | ||
} | ||
}); | ||
}); | ||
@@ -84,0 +121,0 @@ } |
{ | ||
"name": "electron-md-to-pdf", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"description": "Convert Markdown to PDF in Electron apps", | ||
@@ -33,2 +33,3 @@ "keywords": [ | ||
"build": "tsc", | ||
"test": "tsc --noEmit", | ||
"format": "prettier --write", | ||
@@ -41,27 +42,26 @@ "lint": "eslint --ext .ts,.tsx --fix --max-warnings 0", | ||
"@types/showdown": "^1.9.3", | ||
"showdown": "^1.9.0" | ||
"showdown": "^1.9.1" | ||
}, | ||
"peerDependencies": { | ||
"electron": "^6.0.0" | ||
"electron": "^6.0.0 | ^7.0.0" | ||
}, | ||
"devDependencies": { | ||
"@samuelmeuli/eslint-config": "^3.0.1", | ||
"@samuelmeuli/tsconfig": "^0.1.1", | ||
"@typescript-eslint/eslint-plugin": "^2.0.0", | ||
"@typescript-eslint/parser": "^2.0.0", | ||
"electron": "^6.0.2", | ||
"@samuelmeuli/eslint-config": "^4.0.1", | ||
"@samuelmeuli/tsconfig": "^0.2.0", | ||
"@typescript-eslint/eslint-plugin": "^2.9.0", | ||
"@typescript-eslint/parser": "^2.9.0", | ||
"electron": "^7.1.2", | ||
"electron-debug": "^3.0.1", | ||
"electron-unhandled": "^3.0.0", | ||
"eslint": "6.1.0", | ||
"electron-unhandled": "^3.0.1", | ||
"eslint": "6.7.1", | ||
"eslint-config-airbnb-base": "14.0.0", | ||
"eslint-config-prettier": "^6.0.0", | ||
"eslint-config-prettier": "^6.7.0", | ||
"eslint-plugin-import": "^2.18.2", | ||
"eslint-plugin-simple-import-sort": "^4.0.0", | ||
"github-markdown-css": "^3.0.1", | ||
"husky": "^3.0.3", | ||
"lint-staged": "^9.2.1", | ||
"np": "^5.0.3", | ||
"eslint-plugin-simple-import-sort": "^5.0.0", | ||
"husky": "^3.1.0", | ||
"lint-staged": "^9.5.0", | ||
"np": "^5.1.3", | ||
"npm-run-all": "^4.1.5", | ||
"prettier": "^1.18.2", | ||
"typescript": "^3.5.3" | ||
"prettier": "^1.19.1", | ||
"typescript": "^3.7.2" | ||
}, | ||
@@ -71,5 +71,3 @@ "eslintConfig": { | ||
"extends": [ | ||
"@samuelmeuli/eslint-config/base-typescript", | ||
"prettier", | ||
"prettier/@typescript-eslint" | ||
"@samuelmeuli/eslint-config/typescript" | ||
], | ||
@@ -91,3 +89,3 @@ "env": { | ||
], | ||
"*.{css,js,json,jsx,md,scss,yml}": [ | ||
"*.{css,html,js,json,jsx,md,scss,yml}": [ | ||
"yarn format", | ||
@@ -99,5 +97,5 @@ "git add" | ||
"hooks": { | ||
"pre-commit": "lint-staged" | ||
"pre-commit": "yarn test && lint-staged" | ||
} | ||
} | ||
} |
@@ -31,3 +31,3 @@ # electron-md-to-pdf | ||
**See the examples on how to use the module in the [main process](./example/main.js) and [renderer process](./example/renderer.js).** | ||
**See the examples on how to use the module in the [main process](./example/main.ts) and [renderer process](./example/renderer.ts).** | ||
@@ -34,0 +34,0 @@ ## Development |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
14366
18
135
- Removed@types/node@10.17.60(transitive)
- Removedajv@6.12.6(transitive)
- Removedansi-regex@2.1.1(transitive)
- Removedasn1@0.2.6(transitive)
- Removedassert-plus@1.0.0(transitive)
- Removedasynckit@0.4.0(transitive)
- Removedaws-sign2@0.7.0(transitive)
- Removedaws4@1.13.2(transitive)
- Removedbcrypt-pbkdf@1.0.2(transitive)
- Removedbuffer-crc32@0.2.13(transitive)
- Removedbuffer-from@1.1.2(transitive)
- Removedcaseless@0.12.0(transitive)
- Removedcode-point-at@1.1.0(transitive)
- Removedcombined-stream@1.0.8(transitive)
- Removedconcat-stream@1.6.2(transitive)
- Removedcore-util-is@1.0.21.0.3(transitive)
- Removeddashdash@1.14.1(transitive)
- Removeddebug@2.6.93.2.7(transitive)
- Removeddeep-extend@0.6.0(transitive)
- Removeddelayed-stream@1.0.0(transitive)
- Removedecc-jsbn@0.1.2(transitive)
- Removedelectron@6.1.12(transitive)
- Removedelectron-download@4.1.1(transitive)
- Removedenv-paths@1.0.0(transitive)
- Removedextend@3.0.2(transitive)
- Removedextract-zip@1.7.0(transitive)
- Removedextsprintf@1.3.0(transitive)
- Removedfast-deep-equal@3.1.3(transitive)
- Removedfast-json-stable-stringify@2.1.0(transitive)
- Removedfd-slicer@1.1.0(transitive)
- Removedforever-agent@0.6.1(transitive)
- Removedform-data@2.3.3(transitive)
- Removedfs-extra@4.0.3(transitive)
- Removedgetpass@0.1.7(transitive)
- Removedgraceful-fs@4.2.11(transitive)
- Removedhar-schema@2.0.0(transitive)
- Removedhar-validator@5.1.5(transitive)
- Removedhttp-signature@1.2.0(transitive)
- Removedinherits@2.0.4(transitive)
- Removedini@1.3.8(transitive)
- Removedis-fullwidth-code-point@1.0.0(transitive)
- Removedis-typedarray@1.0.0(transitive)
- Removedisarray@0.0.11.0.0(transitive)
- Removedisstream@0.1.2(transitive)
- Removedjsbn@0.1.1(transitive)
- Removedjson-schema@0.4.0(transitive)
- Removedjson-schema-traverse@0.4.1(transitive)
- Removedjson-stringify-safe@5.0.1(transitive)
- Removedjsonfile@4.0.0(transitive)
- Removedjsprim@1.4.2(transitive)
- Removedmime-db@1.52.0(transitive)
- Removedmime-types@2.1.35(transitive)
- Removedminimist@1.2.8(transitive)
- Removedmkdirp@0.5.6(transitive)
- Removedms@2.0.02.1.3(transitive)
- Removednugget@2.2.0(transitive)
- Removednumber-is-nan@1.0.1(transitive)
- Removedoauth-sign@0.9.0(transitive)
- Removedobject-keys@0.4.0(transitive)
- Removedpend@1.2.0(transitive)
- Removedperformance-now@2.1.0(transitive)
- Removedpretty-bytes@4.0.2(transitive)
- Removedprocess-nextick-args@2.0.1(transitive)
- Removedprogress-stream@1.2.0(transitive)
- Removedpsl@1.9.0(transitive)
- Removedpunycode@2.3.1(transitive)
- Removedqs@6.5.3(transitive)
- Removedrc@1.2.8(transitive)
- Removedreadable-stream@1.1.142.3.8(transitive)
- Removedrequest@2.88.2(transitive)
- Removedsafe-buffer@5.1.2(transitive)
- Removedsafer-buffer@2.1.2(transitive)
- Removedsemver@5.7.2(transitive)
- Removedsingle-line-log@1.1.2(transitive)
- Removedspeedometer@0.1.4(transitive)
- Removedsshpk@1.18.0(transitive)
- Removedstring-width@1.0.2(transitive)
- Removedstring_decoder@0.10.311.1.1(transitive)
- Removedstrip-ansi@3.0.1(transitive)
- Removedstrip-json-comments@2.0.1(transitive)
- Removedsumchecker@2.0.2(transitive)
- Removedthrottleit@0.0.2(transitive)
- Removedthrough2@0.2.3(transitive)
- Removedtough-cookie@2.5.0(transitive)
- Removedtunnel-agent@0.6.0(transitive)
- Removedtweetnacl@0.14.5(transitive)
- Removedtypedarray@0.0.6(transitive)
- Removeduniversalify@0.1.2(transitive)
- Removeduri-js@4.4.1(transitive)
- Removedutil-deprecate@1.0.2(transitive)
- Removeduuid@3.4.0(transitive)
- Removedverror@1.10.0(transitive)
- Removedxtend@2.1.2(transitive)
- Removedyauzl@2.10.0(transitive)
Updatedshowdown@^1.9.1