31
edits
Tschneider (talk | contribs) (IDL updates) |
Tschneider (talk | contribs) (extend example) |
||
| Line 8: | Line 8: | ||
== Example == | == Example == | ||
window.startPrintJob(function (state) { | // Gets fired after user clicked File->Print. | ||
window.onprint = function (e) { | |||
customPrint(); | |||
// Event can and should be canceled. | |||
e.preventDefault(); | |||
}; | |||
function customPrint() { | |||
// By calling startPrintJob, the Browser opens the system printing dialog. | |||
// After the user clicks the print button, the print page handler gets | |||
// called for every page in the user defined range and returns a Promise | |||
// that resolves to a HTML element to be printed on that page. | |||
// | |||
// A final Promise is returned by startPrintJob which resolves after | |||
// successfully printing all pages, or rejects if one of the page promises | |||
// was rejected, an error occured during rendering or if the printing was | |||
// canceled by the user. | |||
window.startPrintJob(function (state) { | |||
var canvas = document.createElement("canvas"); | |||
var ctx = canvas.getContext("2d"); | |||
if (!state.isPreview) { | |||
// We can draw at higher resolution for actual printing output. | |||
canvas.width *= 5; | |||
canvas.height *= 5; | |||
ctx.scale(5, 5); | |||
} | |||
switch (state.currentPage) { | |||
case 1: | |||
ctx.drawText(0, 0, state.title); | |||
break; | |||
case 2: | |||
case 3: | |||
ctx.drawText(0, 0, "Page " + state.currentPage + " of " + state.totalPages); | |||
break; | |||
default: | |||
return Promise.reject(Error("Invalid page number")); | |||
} | |||
return Promise.resolve(canvas); | |||
}, /* Total number of Pages */ 3, /* Document title */ "Printing Example") | |||
.then(function () { | |||
console.log('Printing was successful'); | |||
}, function () { | |||
console.error('Printing failed'); | |||
}); | |||
} | |||
== IDL additions == | == IDL additions == | ||
edits