mirror of
https://github.com/niklasvh/html2canvas.git
synced 2023-08-10 21:13:10 +03:00
Correctly crop content
This commit is contained in:
parent
95f4bcea0a
commit
d2c3378c3e
@ -49,11 +49,19 @@ function renderDocument(document, options, windowWidth, windowHeight) {
|
||||
if (options.removeContainer) {
|
||||
container.parentNode.removeChild(container);
|
||||
}
|
||||
return renderer.canvas;
|
||||
return (options.type !== "view" && (node === clonedWindow.document.body || node === clonedWindow.document.documentElement)) ? renderer.canvas : crop(renderer.canvas, bounds);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function crop(canvas, bounds) {
|
||||
var croppedCanvas = document.createElement("canvas");
|
||||
croppedCanvas.width = bounds.width;
|
||||
croppedCanvas.height = bounds.height;
|
||||
croppedCanvas.getContext("2d").drawImage(canvas, bounds.left, bounds.top, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height);
|
||||
return croppedCanvas;
|
||||
}
|
||||
|
||||
function documentWidth () {
|
||||
return Math.max(
|
||||
Math.max(document.body.scrollWidth, document.documentElement.scrollWidth),
|
||||
@ -1689,7 +1697,6 @@ StackingContext.prototype.getParentStack = function(context) {
|
||||
function Support(document) {
|
||||
this.rangeBounds = this.testRangeBounds(document);
|
||||
this.cors = this.testCORS();
|
||||
this.nativeRendering = this.testNativeRendering(document);
|
||||
}
|
||||
|
||||
Support.prototype.testRangeBounds = function(document) {
|
||||
@ -1721,24 +1728,6 @@ Support.prototype.testCORS = function() {
|
||||
return typeof((new Image()).crossOrigin) !== "undefined";
|
||||
};
|
||||
|
||||
Support.prototype.testNativeRendering = function(document) {
|
||||
var NS = "http://www.w3.org/2000/svg";
|
||||
var svg = document.createElementNS(NS, "svg");
|
||||
var canvas = document.createElement("canvas");
|
||||
svg.setAttributeNS(NS, "width", "100");
|
||||
svg.setAttributeNS(NS, "height", "100");
|
||||
var div = document.createElement("div");
|
||||
var foreignObject = document.createElementNS(NS, "foreignObject");
|
||||
foreignObject.setAttributeNS(NS, "width", "100%");
|
||||
foreignObject.setAttributeNS(NS, "height", "100%");
|
||||
foreignObject.appendChild(document.documentElement.cloneNode(true));
|
||||
svg.appendChild(foreignObject);
|
||||
div.appendChild(svg);
|
||||
var ctx = canvas.getContext("2d");
|
||||
document.body.appendChild(canvas);
|
||||
|
||||
};
|
||||
|
||||
function TextContainer(node, parent) {
|
||||
NodeContainer.call(this, node, parent);
|
||||
}
|
||||
|
4
build/html2canvas.min.js
vendored
4
build/html2canvas.min.js
vendored
File diff suppressed because one or more lines are too long
10
src/core.js
10
src/core.js
@ -40,11 +40,19 @@ function renderDocument(document, options, windowWidth, windowHeight) {
|
||||
if (options.removeContainer) {
|
||||
container.parentNode.removeChild(container);
|
||||
}
|
||||
return renderer.canvas;
|
||||
return (options.type !== "view" && (node === clonedWindow.document.body || node === clonedWindow.document.documentElement)) ? renderer.canvas : crop(renderer.canvas, bounds);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function crop(canvas, bounds) {
|
||||
var croppedCanvas = document.createElement("canvas");
|
||||
croppedCanvas.width = bounds.width;
|
||||
croppedCanvas.height = bounds.height;
|
||||
croppedCanvas.getContext("2d").drawImage(canvas, bounds.left, bounds.top, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height);
|
||||
return croppedCanvas;
|
||||
}
|
||||
|
||||
function documentWidth () {
|
||||
return Math.max(
|
||||
Math.max(document.body.scrollWidth, document.documentElement.scrollWidth),
|
||||
|
Loading…
Reference in New Issue
Block a user