Compare commits
9 commits
Author | SHA1 | Date | |
---|---|---|---|
|
f7a76fa952 | ||
|
69a270f604 | ||
|
0b93441169 | ||
|
ac6e85b1c2 | ||
|
696955b345 | ||
|
38007b19ad | ||
|
b21de20c73 | ||
|
5b29b57245 | ||
|
4a06d92741 |
2 changed files with 79 additions and 22 deletions
64
README.md
64
README.md
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue