From 604291918c02792d7f00393c6f9056d5814b9125 Mon Sep 17 00:00:00 2001 From: Felix Furtmayr Date: Wed, 28 Dec 2016 15:55:22 +0100 Subject: [PATCH 01/10] debugging option: get console.logs from phantomJS --- index.js | 53 +++++++++++++++++++++++++++++------------------------ 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/index.js b/index.js index 4fe90eb..70212a9 100644 --- a/index.js +++ b/index.js @@ -2,13 +2,13 @@ 'use strict'; -var http = require("http"); -var phantom = require("phantom"); -var fs = require("fs"); -var q = require('q'); -var path = require('path'); -var findRemove = require('find-remove'); -var _ = require('lodash'); +var http = require("http"), + phantom = require("phantom"), + fs = require("fs"), + q = require('q'), + path = require('path'), + findRemove = require('find-remove'), + _ = require('lodash'); var _opts = { @@ -21,7 +21,8 @@ var _opts = { idLength: 30, possibleIdChars: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", loadTimeout: 500, - autoCleanFileAgeInSec: 20 + autoCleanFileAgeInSec: 20, + debug: false }; @@ -37,19 +38,31 @@ module.exports = { }; - function render(string, opts, renderType) { - var deferred = q.defer(); - var page, fileName, ph, fullPath; + opts = mergeOpts(opts); + + var deferred = q.defer(), + page, fileName, ph, fullPath, - opts = mergeOpts(opts); - phantom.create(['--ignore-ssl-errors=yes']) + // log phantoms output in debugging mode + phantomOpts = opts.debug ? { logLevel: 'debug' } : {}; + + phantom.create(['--ignore-ssl-errors=yes'], phantomOpts) .then(function(_ph) { ph = _ph; return ph.createPage(); }) .then(function(_page) { page = _page; + + // log messages from phantom browser console in debugging mode + if(opts.debug){ + page.property('onConsoleMessage', function(msg) { + console.log("Phantom console Message:"); + console.log(msg); + }); + } + return page.property("paperSize", opts.paperSize); }) .then(function() { @@ -87,7 +100,6 @@ function render(string, opts, renderType) { } - function mergeOpts(newOpts) { if (newOpts) { return _.merge({}, _opts, newOpts); @@ -116,16 +128,9 @@ function makeid(strLength) { } -function closure(fn) { - var _arguments = arguments; - delete arguments[0]; - return function() { - fn.apply(_arguments); - }; -} - -function _cleanup(ageInSeconds) { - return findRemove(_opts.saveDir, { +function _cleanup(ageInSeconds, opts) { + opts = mergeOpts(opts); + return findRemove(opts.saveDir, { age: { seconds: ageInSeconds } From f43071696e0bc62667359d18f4b2fd3cf4380fff Mon Sep 17 00:00:00 2001 From: Felix Furtmayr Date: Wed, 28 Dec 2016 16:00:37 +0100 Subject: [PATCH 02/10] added debugging option --- readme.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 2e0cd14..05eedbc 100644 --- a/readme.md +++ b/readme.md @@ -82,7 +82,8 @@ You can set the configuration options globally by editing the `url2pdf.opts` obj saveDir: path.join(__dirname, "pdfTemp"), // path for temporary files idLength: 30 // file ID length; adjust to avoid conflicts or just get smaller filenames loadTimeout: 800, // in ms; time for rendering the page - autoCleanFileAgeInSec: 24 * 3600 // [s]; older files are removed; set to "-1" to disable remove + autoCleanFileAgeInSec: 24 * 3600; // [s]; older files are removed; set to "-1" to disable remove + debug: false // enable to log PhantomJS output in debugging mode + PhantomJS console messages on your console }; ``` From da1788cb9c8de7653af49d1db27c3009462e0435 Mon Sep 17 00:00:00 2001 From: Felix Furtmayr Date: Wed, 28 Dec 2016 16:03:09 +0100 Subject: [PATCH 03/10] version update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a849980..6aeaa95 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "url2pdf", - "version": "0.5.0", + "version": "0.5.1", "description": "Fetches a URL and converts HTML to PDF files using PhantomJS", "main": "index.js", "scripts": { From 1c480f4bcb87067e5cd5cab23b531cbde3d5dc63 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 3 Mar 2018 20:17:32 +0100 Subject: [PATCH 04/10] add eslint --- .eslintrc | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 .eslintrc diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000..06f64d2 --- /dev/null +++ b/.eslintrc @@ -0,0 +1,180 @@ +{ + "parserOptions": { + "ecmaVersion": 8, + "ecmaFeatures": { + "experimentalObjectRestSpread": true, + "jsx": true + }, + "sourceType": "module" + }, + + "env": { + "es6": true, + "node": true + }, + + "plugins": [ + ], + + "globals": { + "document": false, + "navigator": false, + "window": false, + "app": false, + "WebSocket": false, + "alert": false, + "d3": false, + "angular": false, + "CodeMirror": true, + "saveAs": true, + "Blob": true, + "marked": true, + "THREE": true + }, + + "rules": { + "accessor-pairs": "error", + "arrow-spacing": ["error", { "before": true, "after": true }], + "block-spacing": ["error", "always"], + "brace-style": ["error", "1tbs", { "allowSingleLine": true }], + "camelcase": ["error", { "properties": "never" }], + "comma-dangle": ["error", { + "arrays": "never", + "objects": "never", + "imports": "never", + "exports": "never", + "functions": "never" + }], + "comma-spacing": ["error", { "before": false, "after": true }], + "comma-style": ["error", "last"], + "constructor-super": "error", + "curly": ["error", "multi-line"], + "dot-location": ["error", "property"], + "eol-last": "error", + "eqeqeq": ["error", "always", { "null": "ignore" }], + "func-call-spacing": ["error", "never"], + "generator-star-spacing": ["error", { "before": true, "after": true }], + "handle-callback-err": ["error", "^(err|error)$" ], + "indent": ["error", 3, { "SwitchCase": 1 }], + "key-spacing": ["error", { "beforeColon": false, "afterColon": true }], + "keyword-spacing": ["error", { "before": true, "after": true }], + "new-cap": ["error", { "newIsCap": false, "properties": false}], + "new-parens": "error", + "no-array-constructor": "error", + "no-caller": "error", + "no-class-assign": "error", + "no-compare-neg-zero": "error", + "no-cond-assign": "error", + "no-const-assign": "error", + "no-constant-condition": ["error", { "checkLoops": false }], + "no-control-regex": "error", + "no-debugger": "error", + "no-delete-var": "error", + "no-dupe-args": "error", + "no-dupe-class-members": "error", + "no-dupe-keys": "error", + "no-duplicate-case": "error", + "no-empty-character-class": "error", + "no-empty-pattern": "error", + "no-eval": "error", + "no-ex-assign": "error", + "no-extend-native": "error", + "no-extra-bind": "error", + "no-extra-boolean-cast": "error", + "no-extra-parens": ["error", "functions"], + "no-fallthrough": "error", + "no-floating-decimal": "error", + "no-func-assign": "error", + "no-global-assign": "error", + "no-implied-eval": "error", + "no-inner-declarations": ["error", "functions"], + "no-invalid-regexp": "error", + "no-irregular-whitespace": "error", + "no-iterator": "error", + "no-label-var": "error", + "no-labels": ["error", { "allowLoop": false, "allowSwitch": false }], + "no-lone-blocks": "error", + "no-mixed-operators": ["error", { + "groups": [ + ["==", "!=", "===", "!==", ">", ">=", "<", "<="], + ["&&", "||"], + ["in", "instanceof"] + ], + "allowSamePrecedence": true + }], + "no-mixed-spaces-and-tabs": "error", + "no-multi-spaces": "error", + "no-multi-str": "error", + "no-multiple-empty-lines": ["error", { "max": 3, "maxEOF": 0 }], + "no-negated-in-lhs": "error", + "no-new": "error", + "no-new-func": "error", + "no-new-object": "error", + "no-new-require": "error", + "no-new-symbol": "error", + "no-new-wrappers": "error", + "no-obj-calls": "error", + "no-octal": "error", + "no-octal-escape": "error", + "no-path-concat": "error", + "no-proto": "error", + "no-redeclare": "error", + "no-regex-spaces": "error", + "no-return-assign": ["error", "except-parens"], + "no-return-await": "error", + "no-self-assign": "error", + "no-self-compare": "error", + "no-sequences": "error", + "no-shadow-restricted-names": "error", + "no-sparse-arrays": "error", + "no-tabs": "error", + "no-template-curly-in-string": "error", + "no-this-before-super": "error", + "no-throw-literal": "error", + "no-trailing-spaces": "error", + "no-undef": "error", + "no-undef-init": "error", + "no-unexpected-multiline": "error", + "no-unmodified-loop-condition": "error", + "no-unneeded-ternary": ["error", { "defaultAssignment": false }], + "no-unreachable": "error", + "no-unsafe-finally": "error", + "no-unsafe-negation": "error", + "no-unused-expressions": ["error", { "allowShortCircuit": true, "allowTernary": true, "allowTaggedTemplates": true }], + "no-unused-vars": ["error", { "vars": "all", "args": "none", "ignoreRestSiblings": true }], + "no-use-before-define": ["error", { "functions": false, "classes": false, "variables": false }], + "no-useless-call": "error", + "no-useless-computed-key": "error", + "no-useless-constructor": "error", + "no-useless-escape": "error", + "no-useless-rename": "error", + "no-useless-return": "error", + "no-whitespace-before-property": "error", + "no-with": "error", + "object-property-newline": ["error", { "allowMultiplePropertiesPerLine": true }], + "operator-linebreak": ["error", "after", { "overrides": { "?": "before", ":": "before" } }], + "prefer-promise-reject-errors": "error", + "quotes": ["error", "single", { "avoidEscape": true, "allowTemplateLiterals": true }], + "rest-spread-spacing": ["error", "never"], + "semi": ["error", "always"], + "semi-spacing": ["error", { "before": false, "after": true }], + "space-before-blocks": ["error", "always"], + "space-before-function-paren": ["error", "always"], + "space-in-parens": ["error", "never"], + "space-infix-ops": "error", + "space-unary-ops": ["error", { "words": true, "nonwords": false }], + "spaced-comment": ["error", "always", { + "line": { "markers": ["*package", "!", "/", ",", "="] }, + "block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] } + }], + "symbol-description": "error", + "template-curly-spacing": ["error", "never"], + "template-tag-spacing": ["error", "never"], + "unicode-bom": ["error", "never"], + "use-isnan": "error", + "valid-typeof": ["error", { "requireStringLiterals": true }], + "wrap-iife": ["error", "any", { "functionPrototypeMethods": true }], + "yield-star-spacing": ["error", "both"], + "yoda": ["error", "never"], + } +} From 5221c6b3ddfa99aaab8122581c91cb795a993844 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 3 Mar 2018 20:17:48 +0100 Subject: [PATCH 05/10] update to new version --- example.js | 32 +++---- index.js | 241 ++++++++++++++++++++++++++++----------------------- package.json | 52 +++++------ readme.md | 16 +++- 4 files changed, 183 insertions(+), 158 deletions(-) diff --git a/example.js b/example.js index f15c2b2..de3c174 100644 --- a/example.js +++ b/example.js @@ -1,22 +1,22 @@ var url2pdf = require('./index'); var q = require('q'); -console.log("Running example"); +console.log('Running example'); q.all([ - url2pdf.renderPdf("http://www.google.com", {paperSize: {orientation: "landscape"}}), - url2pdf.renderPdf("http://www.google.com"), + url2pdf.renderPdf('http://www.google.com', {paperSize: {orientation: 'landscape'}}), + url2pdf.renderPdf('http://www.google.com'), - url2pdf.renderFromHTML("

Not working due to needed loading time - no image might be present

"), - url2pdf.renderFromHTML("

Page loaded with timeout. You should see a big image

", {loadTimeout: 2000}) - ]) - .then(function (paths) { - console.log("Created PDFs @", paths); - // manual clenup could be done here, but better use autocelan - // if you want a manual cleanup, disable autoclean by setting option: autoCleanFileAgeInSec = -1 - // then do the cleanup manual; use a timeout to prevent deleting pending operations - // console.log("Deleted", url2pdf.cleanup(5)); // remove all files older than 5 seconds - }) - .catch(function (err) { - console.error(err.stack); - }); + url2pdf.renderFromHTML("

Not working due to needed loading time - no image might be present

"), + url2pdf.renderFromHTML("

Page loaded with timeout. You should see a big image

", {loadTimeout: 2000}) +]) + .then(function (paths) { + console.log('Created PDFs @', paths); + // manual clenup could be done here, but better use autocelan + // if you want a manual cleanup, disable autoclean by setting option: autoCleanFileAgeInSec = -1 + // then do the cleanup manual; use a timeout to prevent deleting pending operations + // console.log("Deleted", url2pdf.cleanup(5)); // remove all files older than 5 seconds + }) + .catch(function (err) { + console.error(err.stack); + }); diff --git a/index.js b/index.js index 70212a9..e3b23a0 100644 --- a/index.js +++ b/index.js @@ -1,138 +1,163 @@ -/*jslint node: true */ -'use strict'; +var findRemove = require('find-remove'), + _ = require('lodash'), + phantom = require('phantom'), + q = require('q'), + // node intern modules + fs = require('fs'), + crypto = require('crypto'), + execSync = require('child_process').execSync, + path = require('path'); -var http = require("http"), - phantom = require("phantom"), - fs = require("fs"), - q = require('q'), - path = require('path'), - findRemove = require('find-remove'), - _ = require('lodash'); var _opts = { - paperSize: { - format: "A4", - orientation: 'portrait', - margin: '1cm' - }, - saveDir: path.join(__dirname, "pdfTemp"), - idLength: 30, - possibleIdChars: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789", - loadTimeout: 500, - autoCleanFileAgeInSec: 20, - debug: false + paperSize: { + format: 'A4', + orientation: 'portrait', + margin: '1cm' + }, + saveDir: path.join(__dirname, '/pdfTemp'), + idLength: 30, + possibleIdChars: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', + loadTimeout: 500, + autoCleanFileAgeInSec: 20, + debug: false }; module.exports = { - opts: _opts, - renderPdf: function renderpdf(url, opts) { - return render(url, opts, "url"); - }, - renderFromHTML: function renderFromHTML(htmlString, opts) { - return render(htmlString, opts, "htmlContent"); - }, - cleanup: _cleanup + opts: _opts, + + renderPdf: function renderpdf (url, opts) { + return render(url, opts, 'url'); + }, + renderFromHTML: function renderFromHTML (htmlString, opts) { + return render(htmlString, opts, 'htmlContent'); + }, + cleanup: _cleanup, + + join: _join }; -function render(string, opts, renderType) { - opts = mergeOpts(opts); - - var deferred = q.defer(), - page, fileName, ph, fullPath, - - // log phantoms output in debugging mode - phantomOpts = opts.debug ? { logLevel: 'debug' } : {}; - - phantom.create(['--ignore-ssl-errors=yes'], phantomOpts) - .then(function(_ph) { - ph = _ph; - return ph.createPage(); - }) - .then(function(_page) { - page = _page; - - // log messages from phantom browser console in debugging mode - if(opts.debug){ - page.property('onConsoleMessage', function(msg) { - console.log("Phantom console Message:"); - console.log(msg); - }); - } - - return page.property("paperSize", opts.paperSize); - }) - .then(function() { - if (renderType == "url") { - return page.open(string); // string = url path - } else if (renderType == "htmlContent") { - return page.property("content", string); // string = html doc as string - } else { - console.log("wrong render type: " + renderType); - ph.exit(); - } - }) - .then(function(status) { - fileName = makeid(opts.idLength) + ".pdf"; - fullPath = opts.saveDir + "/" + fileName; - return promiseWithTimeout(opts.loadTimeout); - }) - .then(function() { - return page.render(fullPath); - }) - .then(function() { - deferred.resolve(fullPath); - }) - .catch(function(err) { - deferred.reject(err); - }) - .then(function() { - ph.exit(); - if(0 < opts.autoCleanFileAgeInSec){ - _cleanup(opts.autoCleanFileAgeInSec); - } - }); +function render (string, opts, renderType) { + opts = mergeOpts(opts); - return deferred.promise; + var deferred = q.defer(), + page, fileName, ph, fullPath, + + // log phantoms output in debugging mode + phantomOpts = opts.debug ? { + logLevel: 'debug' + } : {}; + + phantom.create(['--ignore-ssl-errors=yes'], phantomOpts) + .then(function (_ph) { + ph = _ph; + return ph.createPage(); + }) + .then(function (_page) { + page = _page; + + // log messages from phantom browser console in debugging mode + if (opts.debug) { + page.property('onConsoleMessage', function (msg) { + console.log('Phantom console Message:'); + console.log(msg); + }); + } + + return page.property('paperSize', opts.paperSize); + }) + .then(function () { + if (renderType === 'url') { + return page.open(string); // string = url path + } else if (renderType === 'htmlContent') { + return page.property('content', string); // string = html doc as string + } else { + console.log('wrong render type: ' + renderType); + ph.exit(); + } + }) + .then(function (status) { + fileName = makeid(opts.idLength) + '.pdf'; + fullPath = opts.saveDir + '/' + fileName; + return promiseWithTimeout(opts.loadTimeout); + }) + .then(function () { + return page.render(fullPath); + }) + .then(function () { + deferred.resolve(fullPath); + }) + .catch(function (err) { + deferred.reject(err); + }) + .then(function () { + ph.exit(); + if (opts.autoCleanFileAgeInSec > 0) { + _cleanup(opts.autoCleanFileAgeInSec); + } + }); + + return deferred.promise; } -function mergeOpts(newOpts) { - if (newOpts) { - return _.merge({}, _opts, newOpts); - } else { - return _opts; - } +function mergeOpts (newOpts) { + if (newOpts) { + return _.merge({}, _opts, newOpts); + } else { + return _opts; + } } -function promiseWithTimeout(duration) { - var deferred = q.defer(); - setTimeout(deferred.resolve, duration); - return deferred.promise; +function promiseWithTimeout (duration) { + var deferred = q.defer(); + setTimeout(deferred.resolve, duration); + return deferred.promise; } -function makeid(strLength) { - if (!strLength) strLength = 30; - var text = ""; - var possible = _opts.possibleIdChars; +function makeid (strLength) { + if (!strLength) strLength = 30; + var text = ''; + var possible = _opts.possibleIdChars; - for (var i = 0; i < strLength; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; + for (var i = 0; i < strLength; i++) { + text += possible.charAt(Math.floor(Math.random() * possible.length)); + } + return text; } -function _cleanup(ageInSeconds, opts) { +function _cleanup (ageInSeconds, opts) { opts = mergeOpts(opts); return findRemove(opts.saveDir, { - age: { - seconds: ageInSeconds - } + age: { + seconds: ageInSeconds + } + }); +} + +function _join (filePathArray, exportUrl, onlyFile) { + + exportUrl = exportUrl || _opts.saveDir; + exportUrl += crypto.randomBytes(20).toString('hex'); + + execSync('gs -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=' + exportUrl + ' ' + filePathArray.join(' ')); + + filePathArray.forEach(function (filePath) { // delete merged files + fs.unlinkSync(filePath); }); + + if (onlyFile) { // read file in, delete file, return content + var fileContent = fs.readFileSync(exportUrl); + fs.unlinkSync(exportUrl); + return fileContent; + } else { // leave file and return url + return exportUrl; + } } diff --git a/package.json b/package.json index 6aeaa95..18ba642 100644 --- a/package.json +++ b/package.json @@ -1,42 +1,34 @@ { - "name": "url2pdf", - "version": "0.5.1", + "name": "url2pdf-plus", + "version": "0.5.5", "description": "Fetches a URL and converts HTML to PDF files using PhantomJS", + "author": { + "name": "Felix Furtmayr" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git@github.com:FelixFurtmayr/url2pdf.git" + }, + "maintainers": [ + { + "name": "Felix Furtmayr", + "email": "ff@rapidfacture.com" + } + ], "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, - "author": "Ryan Knell", - "license": "ISC", + "dependencies": { - "bindings": "^1.2.1", - "find-remove": "^0.2.10", - "lodash": "^4.8.1", + "bindings": "1.3.0", + "find-remove": "1.2.0", + "lodash": "4.17.5", "phantom": "^2.0.9", "q": "^1.1.2" }, - "_shasum": "cce8fd909f7464b54f16b91a69d1fd18c650edd8", - "_from": "url2pdf@latest", - "_npmVersion": "2.1.10", - "_nodeVersion": "0.10.22", - "_npmUser": { - "name": "ryanknell", - "email": "sales@snappyapps.com.au" - }, - "maintainers": [ - "ryanknell " - ], - "dist": { - "shasum": "cce8fd909f7464b54f16b91a69d1fd18c650edd8", - "tarball": "http://registry.npmjs.org/url2pdf/-/url2pdf-0.0.2.tgz" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/url2pdf/-/url2pdf-0.0.2.tgz", "devDependencies": {}, - "repository": { - "type": "git", - "url": "git+https://github.com/rknell/url2pdf.git" - }, "keywords": [ "html2pdf", "url2pdf", @@ -44,8 +36,4 @@ "to", "pdf" ], - "bugs": { - "url": "https://github.com/rknell/url2pdf/issues" - }, - "homepage": "https://github.com/rknell/url2pdf#readme" } diff --git a/readme.md b/readme.md index 05eedbc..5f3248d 100644 --- a/readme.md +++ b/readme.md @@ -5,8 +5,6 @@ Phantom renders the printing version. Can be used for generating bills, protocols, lists, etc. from a website. - - ## Installation ## npm install url2pdf --save @@ -59,6 +57,20 @@ just for this purpose? Easy! Just do as below: } ``` +#### Join Pdfs + +```javascript + var url2pdf = require("url2pdf"); + + // read file in, delete file, return content + const jointPdfFile = url2pdf.join(filepaths, '/exportDir', 'onlyFile'); + + // alternative: leave the file and return url + const jointPdfUrl = url2pdf.join(filepaths); +``` + +This requires ghostscript on your system which is executed over command line. + #### Manual cleanup url2pdf comes with an auto cleanup function that will delete old files in your temp directory. For a manual cleanup disable the auto cleanup in the function call: From d2f6bc5a07e7cbf46fbcb1a911626c68fc710369 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 3 Mar 2018 20:26:06 +0100 Subject: [PATCH 06/10] fix package.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 18ba642..dec02c7 100644 --- a/package.json +++ b/package.json @@ -35,5 +35,5 @@ "html", "to", "pdf" - ], + ] } From b021a9fda62ff5364ebdf345503f771e639903c6 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 3 Mar 2018 20:28:59 +0100 Subject: [PATCH 07/10] remove script --- package.json | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/package.json b/package.json index dec02c7..e9c16cb 100644 --- a/package.json +++ b/package.json @@ -17,9 +17,7 @@ } ], "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, + "scripts": { }, "dependencies": { "bindings": "1.3.0", From 1bc759020da1501a88bfaf4a509ac6252896eab5 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 3 Mar 2018 20:29:37 +0100 Subject: [PATCH 08/10] 0.5.6 --- package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index e9c16cb..0e737f6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "url2pdf-plus", - "version": "0.5.5", + "version": "0.5.6", "description": "Fetches a URL and converts HTML to PDF files using PhantomJS", "author": { "name": "Felix Furtmayr" @@ -17,8 +17,7 @@ } ], "main": "index.js", - "scripts": { }, - + "scripts": {}, "dependencies": { "bindings": "1.3.0", "find-remove": "1.2.0", From 0a1dd83f44763b016e3f7a9ffcbc27c02eb5afb8 Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 18 Aug 2018 09:48:04 +0200 Subject: [PATCH 09/10] deprecate library --- readme.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index 5f3248d..cea99c5 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,8 @@ -#Url2PDF +# Deprecated! Please use url2pdf3 which uses up to date technology and is mantained! +Get it here: https://www.npmjs.com/package/url2pdf3 + + +# Url2PDF --- Grab a URL and convert the HTML to PDF using PhantomJS. Phantom renders the printing version. From 807d0ddb6b2a18626e553ce8a90d4bc2dd8a4d1f Mon Sep 17 00:00:00 2001 From: Felix Date: Sat, 18 Aug 2018 09:49:01 +0200 Subject: [PATCH 10/10] 0.5.7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0e737f6..50cded5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "url2pdf-plus", - "version": "0.5.6", + "version": "0.5.7", "description": "Fetches a URL and converts HTML to PDF files using PhantomJS", "author": { "name": "Felix Furtmayr"