Compare commits

..

9 commits

Author SHA1 Message Date
dhar
f7a76fa952 Fix links in README.md 2015-02-22 11:44:31 +01:00
Olivier Audard
69a270f604 Updated README 2015-02-22 11:03:01 +01:00
dhar
0b93441169 Merge pull request #12 from andyinabox/async
Added async support
2015-02-22 09:05:48 +01:00
dhar
ac6e85b1c2 Merge pull request #9 from WIHP/master
Added ability to override the arguments
2015-02-22 09:05:11 +01:00
Andy Dayton
696955b345 Added some comments 2015-01-24 21:57:51 -05:00
Andy Dayton
38007b19ad Try adding grunt async and creating a simple index check 2015-01-24 21:43:26 -05:00
Josh Sherman
b21de20c73 Update README.md
Updated links for wkhtmltopdf as the project has moved
2014-12-08 14:54:53 -05:00
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
dhar
4a06d92741 Fix typo in README 2014-06-12 22:04:46 +02:00
2 changed files with 79 additions and 22 deletions

View file

@ -5,11 +5,11 @@ Convertion to PDF takes care of `@media print` CSS rules and preserves links to
## Getting Started
### Setting up wkhtmltopdf
### Setting up wkhtmltopdf
Download and install wkhtmltopdf from the [project page][wkhtmltopdf_dl].
Make sure `wkhtmltopdf` is accessible from your `PATH` (Try `wkhtmltopdf -V` in your Terminal).
Make sure `wkhtmltopdf` is accessible from your `PATH` (Try `wkhtmltopdf -V` in your Terminal).
I'm on Mac OS X, so I created the following symlink to my `/usr/local/bin/` folder:
```
@ -29,11 +29,6 @@ Then add this line to your project's `grunt.js` gruntfile:
grunt.loadNpmTasks('grunt-wkhtmltopdf');
```
[wkhtmltopdf]: http://code.google.com/p/wkhtmltopdf/
[wkhtmltopdf_dl]: http://code.google.com/p/wkhtmltopdf/downloads/list
[grunt]: https://github.com/gruntjs/grunt
[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md
## Documentation
Simply add task definition in your gruntfile. See the folllowing example:
@ -54,18 +49,61 @@ Simply add task definition in your gruntfile. See the folllowing example:
Run `grunt wkhtmltopdf` to execute all the targets or `grunt wkhtmltopdf:targetname` to execute a specific target. Every `html` file defined by the `src` parameter will be turned into a PDF and saved to `dest` folder.
### Sending arguments to `wkhtml2pdf`
Arguments sent via the `args` key in the task definition will be forwarded to `wkhtml2pdf` as follow :
```javascript
//...
wkhtmltopdf: {
prod: {
src: 'path/to/some/html/file/*.html',
dest: 'pdf/output/',
args: [
'--dpi', '96',
'--print-media-type',
'--grayscale'
]
}
},
//...
```
Defining custom arguments will override default ones:
```javascript
// grunt-wkhtml2pdf default arguments
var args = [
'--dpi', '96',
'--print-media-type'
]
```
See [wkhtml2pdf documentation][wkhtmltopdf_doc] for available options
## Contributing
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using [grunt][grunt].
## Release History
- *v0.1.0*: First Release
- *v0.2.0*: Fixed compatibility with grunt 0.4
- *v0.3.0*: grunt-wkhtmltopdf is now a multi-task
- *v0.4.0*:
- *v0.5.0*:
- Merged [#12](https://github.com/dharFr/grunt-wkhtmltopdf/pull/12) (Fix [#11](https://github.com/dharFr/grunt-wkhtmltopdf/issues/11)) : Added async support
- Merged [#9](https://github.com/dharFr/grunt-wkhtmltopdf/pull/9) : Added ability to override the arguments
- *v0.4.0*:
- Update project config files to work with Grunt 0.4
- Update wkthmltopdf task to use Grunt 0.4 multi-task API
- Improve predictability of the destination for created PDFs
- Improve predictability of the destination for created PDFs
- *v0.3.0*: grunt-wkhtmltopdf is now a multi-task
- *v0.2.0*: Fixed compatibility with grunt 0.4
- *v0.1.0*: First Release
## License
Copyright (c) 2012 Olivier Audard
Copyright (c) 2012 Olivier Audard
Licensed under the MIT license.
[wkhtmltopdf]: http://wkhtmltopdf.org/
[wkhtmltopdf_dl]: http://wkhtmltopdf.org/downloads.html
[wkhtmltopdf_doc]: http://wkhtmltopdf.org/docs.html
[grunt]: https://github.com/gruntjs/grunt
[getting_started]: https://github.com/cowboy/grunt/blob/master/docs/getting_started.md

View file

@ -18,7 +18,13 @@ module.exports = function(grunt) {
grunt.registerMultiTask('wkhtmltopdf', 'Your task description goes here.', function() {
this.files.forEach(function(file) {
// using grunt async support so we can be sure task doesn't
// end before PDF processing does: http://gruntjs.com/api/inside-tasks
var done = this.async(),
files = this.files;
// iterate through each file grouping
files.forEach(function(file, filesIndex) {
var pathlib = require('path');
// calculate the destination directory and ensure it exists, since
@ -30,7 +36,7 @@ module.exports = function(grunt) {
}
grunt.file.mkdir(destPath);
file.src.forEach(function(src) {
file.src.forEach(function(src, srcIndex) {
var dest = file.dest;
// wkhtmltopdf seems to require that the destination be a file
@ -51,19 +57,32 @@ module.exports = function(grunt) {
"Converting " + src + " -> " + dest
);
// Launch PhantomJS.
// 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: [
'--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
src,
dest
],
args: args,
done: function(err) {
if (err) {
grunt.log('>>>', err);
}
// if this is the last src of the last file, we are done.
if((filesIndex+1 >= files.length) && (srcIndex+1 >= file.src.length)) {
done();
}
}
});
});