http://imgur.com/3Zl6oRA | рддрд╕реНрд╡реАрд░ 1
http://imgur.com/Wr006qF | рддрд╕реНрд╡реАрд░ 2
Pic 1 рд╡рд╣ div рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЫрд╡рд┐ рдкрд░ рдХрдмреНрдЬрд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ * Pic 2ред
рдХреЛрдИ рдЗрд╕реЗ рдареАрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?
рд╣реИрд▓реЛ, рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ред рдореИрдВ рд╡рд╣ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдиреАрдЪреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдПрдХ рд╣реИрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ:
```
рдХреБрдВрдЬреА: 'рдбреНрд░рд╛рдЗрдореЗрдЬ',
рдорд╛рди: рдлрд╝рдВрдХреНрд╢рди рдбреНрд░рд╛рдЗрдореЗрдЬ (рдЫрд╡рд┐, рд╕реНрд░реЛрдд, рдЧрдВрддрд╡реНрдп) {
/ рдХрд╕реНрдЯрдо рдХреЛрдб рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ /
var newWidth = 30;
var newHeight = 30;
var newX = destination.left;
var newY = destination.top;
// console.log(image, source, destination);
if (source.width/destination.width > source.height/destination.height) {
newWidth = destination.width;
newHeight = source.height * (destination.width / source.width);
newY = destination.top + (destination.height - newHeight) / 2;
} else {
newWidth = source.width * (destination.height / source.height);
newHeight = destination.height;
newX = destination.left + (destination.width - newWidth) / 2;
}
// console.log(newWidth, newHeight);
this.ctx.drawImage(image, source.left, source.top, source.width, source.height,
newX, newY,
newWidth, newHeight);
// destination.width,
// destination.height * (source.height / source.width)
// destination.width, destination.height);
/**END CUSTOM CODE**/
}
```
LanderBeeuwsaert рдХрд╛ рд╕рдорд╛рдзрд╛рди рд▓реЗрдВ (html2canvas.js рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдХреЗ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕рдХреЗ рдХреЛрдб рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХреЗрдВ рдЬреИрд╕реЗ рдЙрдиреНрд╣реЛрдВрдиреЗ рдХрд┐рдпрд╛ рдерд╛) рдФрд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
if (source.width/destination.width > source.height/destination.height) {
рд╕рд╛рде
if (source.width/destination.width < source.height/destination.height) {
рдЗрд╕рд╕реЗ рдЖрдкрдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛, рдХрдо рд╕реЗ рдХрдоред
рдЗрд╕ рдкрд░ рдХрд┐рд╕реА рднреА рдЕрджреНрдпрддрди?
@LanderBeeuwsaert рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдЗрд╕рдиреЗ рд╕рд╣реА рдХрд╛рдо рдХрд┐рдпрд╛, рдЖрдкрдХреЛ рдЗрд╕реЗ рдорд╛рд╕реНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╣ рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдпреЛрдЧрджрд╛рди рд╣реИ
@niklasvh рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдореИрдВ рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реВрдВред рдореБрдЭреЗ рдмрддрд╛рдПрдВ рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
@LanderBeeuwsaert рдореИрдВ рдЖрдкрдХреЗ рдЗрд╕ рд╣реИрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрдорд╛рди рдХрд╣рд╛рдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ?
@рд╕рдореБрд░рд╛рдИрдкреЗрдЯреНрд░рд╕
рдЕрд░реЗ, рд╣рд╛рдБ, рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рдХрд╛рд░рдг рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ 0.5 рд╕реЗ 1.0.0 рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рд╕рдордп рдкрд╣рд▓реЗ рдЦреЛрдЬрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ 1.0.0 рдореЗрдВ рдХрд╣рд╛рдБ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рдВрднрд╡рддрдГ рдПрдХ рдкреАрдЖрд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рддреЛ рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рд╣реИрдХ рдХреЗ рд╕рд╛рде 0.5 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рд╕рдВрд╕реНрдХрд░рдг 1.0.0-alpha.9
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ patch-package
рдХреЛ @LanderBeeuwsaert рдХреЛрдб рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝реЗрдВ html2canvas+1.0.0-alpha.9.patch
:
diff --git a/node_modules/html2canvas/dist/html2canvas.js b/node_modules/html2canvas/dist/html2canvas.js
index 5f34081..66d1909 100644
--- a/node_modules/html2canvas/dist/html2canvas.js
+++ b/node_modules/html2canvas/dist/html2canvas.js
@@ -2443,7 +2443,22 @@ var CanvasRenderer = function () {
}, {
key: 'drawImage',
value: function drawImage(image, source, destination) {
- this.ctx.drawImage(image, source.left, source.top, source.width, source.height, destination.left, destination.top, destination.width, destination.height);
+ var newWidth = 30;
+ var newHeight = 30;
+ var newX = destination.left;
+ var newY = destination.top;
+
+ if (source.width/destination.width < source.height/destination.height) {
+ newWidth = destination.width;
+ newHeight = source.height * (destination.width / source.width);
+ newY = destination.top + (destination.height - newHeight) / 2;
+ } else {
+ newWidth = source.width * (destination.height / source.height);
+ newHeight = destination.height;
+ newX = destination.left + (destination.width - newWidth) / 2;
+ }
+
+ this.ctx.drawImage(image, source.left, source.top, source.width, source.height, newX, newY, newWidth, newHeight);
}
}, {
key: 'drawShape',
рдкреВрд░реНрдг рдкрде рдкреНрд░рджрд╛рди рдХрд░рдХреЗ рдЙрд╕ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЖрдпрд╛рдд рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдЬрд┐рд╕реЗ рдЫреЛрдЯрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
const html2canvas = require('html2canvas/dist/html2canvas.js');
рдореИрдВ рдЕрд▓реНрдлрд╛ рдмрд┐рд▓реНрдб рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдФрд░ рдкреИрдЪ-рдкреИрдХреЗрдЬ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?
рдореЗрд░реА рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреЗрд╡рд▓ рдкреГрд╖реНрдарднреВрдорд┐ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рд╣реИрд▓реЛ, рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ред рдореИрдВ рд╡рд╣ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдиреАрдЪреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдПрдХ рд╣реИрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ:
key: 'drawImage', value: function drawImage(image, source, destination) { /**START CUSTOM CODE**/ var newWidth = 30; var newHeight = 30; var newX = destination.left; var newY = destination.top; // console.log(image, source, destination); if (source.width/destination.width > source.height/destination.height) { newWidth = destination.width; newHeight = source.height * (destination.width / source.width); newY = destination.top + (destination.height - newHeight) / 2; } else { newWidth = source.width * (destination.height / source.height); newHeight = destination.height; newX = destination.left + (destination.width - newWidth) / 2; } // console.log(newWidth, newHeight); this.ctx.drawImage(image, source.left, source.top, source.width, source.height, newX, newY, newWidth, newHeight); // destination.width, // destination.height * (source.height / source.width) // destination.width, destination.height); /**END CUSTOM CODE**/ }
рдореБрдЭреЗ рдпрд╣ рдХреЛрдб рдХрд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?
рдереЛрдбрд╝реА рд╕реА рдлрд┐рдЬреВрд▓рдЦрд░реНрдЪреА рдХреЗ рдмрд╛рдж, рдореИрдВ рдЗрд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдиреЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред
CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {
if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
var box = contentBox(container);
/*CUSTOM CODE*/
var newWidth = 30;
var newHeight = 30;
var newX = box.left;
var newY = box.top;
if (container.intrinsicWidth / box.width < container.intrinsicHeight / box.height) {
newWidth = box.width;
newHeight = container.intrinsicHeight * (box.width / container.intrinsicWidth);
newY = box.top + (box.height - newHeight) / 2;
}
else {
newWidth = container.intrinsicWidth * (box.height / container.intrinsicHeight);
newHeight = box.height;
newX = box.left + (box.width - newWidth) / 2;
}
var path = calculatePaddingBoxPath(curves);
this.path(path);
this.ctx.save();
this.ctx.clip();
this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, newX, newY, newWidth, newHeight);
this.ctx.restore();
}
};
рдЧреИрд░-рдорд┐рдиреАрдлрд╛рдЗрдб рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд╣рд▓реА рдХреБрдЫ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдЦреЛрдЬреЗрдВред рдмреЗрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП @LanderBeeuwsaert рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
@canoncarlson рдореЗрд░реА рдЦреБрд╢реА, рдЕрдкрдбреЗрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд╣рдо рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд░ рдкрд╛рдПрдВрдЧреЗред
рдореИрдВ рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рднреА рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ рд╣реВрдВ, CanvasRenderer.prototype.renderReplacedElement рдХреЛ node_modules/html2canvas/dist/html2canvas.js рдореЗрдВ рд▓рд╛рдЗрди 6274 рдХреЗ рдЖрд╕рдкрд╛рд╕ рдмрджрд▓реЗрдВ, рдореИрдВ RC 5 рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ @canoncarlson рдЬреИрд╕рд╛ рд╣реА рдХреЛрдб рд╣реИ, рдмрд╕ рдкреБрд╖реНрдЯрд┐ рдХрд░реЗрдВ рдХрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ-рдлрд┐рдЯ рдХрд╡рд░ рдЗрд╕ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
CanvasRenderer.prototype.renderReplacedElement = function (container, curves, image) {
if (image && container.intrinsicWidth > 0 && container.intrinsicHeight > 0) {
var box = contentBox(container);
var path = calculatePaddingBoxPath(curves);
this.path(path);
this.ctx.save();
this.ctx.clip();
let newWidth;
let newHeight;
let newX = box.left;
let newY = box.top;
if(container.intrinsicWidth / box.width < container.intrinsicHeight / box.height) {
newWidth = box.width;
newHeight = container.intrinsicHeight * (box.width / container.intrinsicWidth);
newY = box.top + (box.height - newHeight) / 2;
} else {
newWidth = container.intrinsicWidth * (box.height / container.intrinsicHeight);
newHeight = box.height;
newX = box.left + (box.width - newWidth) / 2;
}
this.ctx.drawImage(image, 0, 0, container.intrinsicWidth, container.intrinsicHeight, newX, newY, newWidth, newHeight);
this.ctx.restore();
}
};
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП @LanderBeeuwsaert рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдФрд░ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдлрд┐рдХреНрд╕ рдЬрд▓реНрдж рд╣реА рдореБрдЦреНрдп рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╣реИрд▓реЛ, рдмрд╕ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореБрдЭреЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИрдХ рдХрд░ рд▓рд┐рдпрд╛ред рдореИрдВ рд╡рд╣ рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдиреАрдЪреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдПрдХ рд╣реИрдХ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрд╕реЗ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдХрд╛ рдЬреНрдЮрд╛рди рдирд╣реАрдВ рд╣реИ:
```
рдХреБрдВрдЬреА: 'рдбреНрд░рд╛рдЗрдореЗрдЬ',
рдорд╛рди: рдлрд╝рдВрдХреНрд╢рди рдбреНрд░рд╛рдЗрдореЗрдЬ (рдЫрд╡рд┐, рд╕реНрд░реЛрдд, рдЧрдВрддрд╡реНрдп) {
/ рдХрд╕реНрдЯрдо рдХреЛрдб рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ /
```