grunt-wkhtmltopdf/tasks/wkhtmltopdf.js
Josh Sherman 5b29b57245 Added ability to override the arguments
I needed to be able to use a different set of arguments. Updated to allow
for the args to be passed in the same way the src and dest are. Could
improve by comparing the two arrays instead of simply overriding them.
2014-09-04 11:05:03 -04:00

81 lines
2.5 KiB
JavaScript

/*
* grunt-wkhtmltopdf
* https://github.com/dhar/grunt-wkhtmltopdf
*
* Copyright (c) 2012 Olivier Audard
* Licensed under the MIT license.
*/
/*globals module:false, require:false*/
module.exports = function(grunt) {
// Please see the grunt documentation for more information regarding task and
// helper creation: https://github.com/cowboy/grunt/blob/master/docs/toc.md
// ==========================================================================
// TASKS
// ==========================================================================
var helper = require('./lib/wkhtmltopdf-lib').init(grunt);
grunt.registerMultiTask('wkhtmltopdf', 'Your task description goes here.', function() {
this.files.forEach(function(file) {
var pathlib = require('path');
// calculate the destination directory and ensure it exists, since
// wkhtmltopdf won't create the PDF if the destination directory doesn't
// exist
var destPath = file.dest;
if (grunt.file.isFile(file.dest)) {
destPath = pathlib.dirname(file.dest);
}
grunt.file.mkdir(destPath);
file.src.forEach(function(src) {
var dest = file.dest;
// wkhtmltopdf seems to require that the destination be a file
// location, not a directory, so if the given destination is a
// directory then append the name of the source file but with the
// extension changed to .pdf
if (grunt.file.isDir(dest)) {
var srcFileName = pathlib.basename(src);
var srcFileExtension = pathlib.extname(src);
var destFileName = srcFileName.replace(
new RegExp(srcFileExtension + "$"), // match only the end of the string
".pdf"
);
dest = pathlib.join(destPath + destFileName);
}
grunt.log.writeln(
"Converting " + src + " -> " + dest
);
// default args
var args = [
'--dpi', '96', // workarround to wkhtmltopdf letter-spacing bug (see http://code.google.com/p/wkhtmltopdf/issues/detail?id=72)
'--print-media-type', // Use @print media type
];
// overrides the args
if (file.args) {
args = file.args;
}
// adds the src and dest
args = args.concat([src, dest]);
// Launch wkhtmltopdf.
helper.convert({
code: 90,
args: args,
done: function(err) {
if (err) {
grunt.log('>>>', err);
}
}
});
});
});
});
};