ΠΡΠΈΠ²Π΅Ρ,
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΌΠ΅ΠΆΠ΄ΠΎΠΌΠ΅Π½Π½ΡΠΉ ΡΠ΅Π½Π΄Π΅ΡΠΈΠ½Π³.
html2canvas($(".canvas-surround"), {
logging: true,
width: 1920 * getScale(),
height: 1080 * getScale(),
useCORS: false,
onrendered: function(canvas) {
var bottomCtx = canvas.getContext("2d");
var topCtx = canvas.getContext("2d");
var bData = bottomCtx.getImageData(0, 0, canvas.width, canvas.height);
var tData = topCtx.getImageData(0, 0, canvas.width, canvas.height);
var merged = mergeData(bData, tData);
bottomCtx.putImageData(merged, 0, 0);
var newImg = canvas.toDataURL("image/png");
console.log(newImg);
var blob = b64toBlob(newImg, "image/png");
console.log(blob);
var blobUrl = URL.createObjectURL(blob);
console.log(blobUrl);
downloadURI(blobUrl);
}
});
ΠΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ " http://www.thermmark.co.uk " Ρ " http://www.playgroundmarkingsdirect.co.uk " ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π»ΠΈΡΡ.
ΠΠΎΠ³Π΄Π° Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ» ΠΊΠΎΠ΄ Π½Π° Π²Π΅Π±- ΡΠ°ΠΉΡ Β«
ΠΡΠ±ΡΠ΅ ΠΈΠ΄Π΅ΠΈ?
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ useCORS
ptoperty ΠΊΠ°ΠΊ true, ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΊΡΠΎΡΡΠ΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ useCORS
Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π°Ρ
Π²Π°ΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎΠ±Π»Π΅ΠΌΠ°, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Ρ ΡΡΠΎΠ»ΠΊΠ½ΡΠ»ΡΡ, ΡΡΡΠ°Π½Π½Π°Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π΄ΠΎΠΌΠ΅Π½Π°, ΠΎΠ½ ΠΏΡΠΎΡΡΠΎ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ Π΅Π³ΠΎ Π² Π·Π°Ρ
Π²Π°ΡΠ΅.
Π’Ρ ΠΏΡΠΎΠ±ΠΎΠ²Π°Π» ΠΌΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅? https://github.com/niklasvh/html2canvas/pull/554
ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π΄Π»Ρ allowTaint
Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, Π½ΠΎ ΡΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΡΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ.
ΠΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ userCORS
ΠΈΠ»ΠΈ proxy
... ΠΠ½ΠΈ ΠΏΡΠΎΡΡΠΎ ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π»Ρ ΡΠ°ΠΊΠΈΡ
Π·Π°Π΄Π°Ρ.
@brcontainer ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ΠΈ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ, ΡΠΌ. ΠΌΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅: https://github.com/niklasvh/html2canvas/pull/554
@ Cristy94 ΠΠΎΠ½Π΅ΡΠ½ΠΎ !! ΠΡΠ»ΠΈΡΠ½ΠΎΠ΅ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅! Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
ΠΡΠΈΠ²Π΅Ρ @ Cristy94!
Π― ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΈΠ· CMS (Contentful) Π² ΡΠ²ΠΎΠ΅ΠΌ HTML, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΡΠ°ΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ PDF ΠΈΠ· ΡΡΠΎΠ³ΠΎ HTML.
ΠΠΎ Π² ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ PDF-ΡΠ°ΠΉΠ»Π΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ (ΠΏΠΎΡ
ΠΎΠΆΠ΅, ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ).
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΠ΅ ΠΌΠ½Π΅, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΈΠ·Π±Π°Π²ΠΈΡΡΡΡ ΠΎΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ.
ΠΠΈΠΆΠ΅ ΠΌΠΎΠΉ ΠΊΠΎΠ΄:
function downloadPDF () {
var canvasToImage = function (canvas) {
var img = Π½ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ();
var dataURL = canvas.toDataURL ('image / png');
img.crossOrigin = "ΠΠ½ΠΎΠ½ΠΈΠΌΠ½ΡΠΉ";
img.src = dataURL;
Π²Π΅ΡΠ½ΡΡΡ img;
};
var canvasShiftImage = function (oldCanvas, shiftAmt) {
shiftAmt = parseInt (shiftAmt) || 0;
Π΅ΡΠ»ΠΈ (! shiftAmt) {Π²Π΅ΡΠ½ΡΡΡ oldCanvas; }
var newCanvas = document.createElement ('Ρ
ΠΎΠ»ΡΡ');
newCanvas.height = oldCanvas.height - shiftAmt;
newCanvas.width = oldCanvas.width;
var ctx = newCanvas.getContext ('2d');
ctx.mozImageSmoothingEnabled = false;
ctx.webkitImageSmoothingEnabled = false;
ctx.msImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
var img = canvasToImage (oldCanvas);
ctx.drawImage (img, 0, shiftAmt, img.width, img.height, 0, 0, img.width, img.height);
return newCanvas;
};
var canvasToImageSuccess = function (canvas) {
var pdf = Π½ΠΎΠ²ΡΠΉ jsPDF ('l', 'px'),
pdfInternals = pdf.internal,
pdfPageSize = pdfInternals.pageSize,
pdfScaleFactor = pdfInternals.scaleFactor,
pdfPageWidth = pdfPageSize.width,
pdfPageHeight = pdfPageSize.height,
totalPdfHeight = 0,
htmlPageHeight = canvas.height,
htmlScaleFactor = canvas.width / (pdfPageWidth * pdfScaleFactor),
SafetyNet = 0;
while (totalPdfHeight <htmlPageHeight && safetyNet <15) {
var newCanvas = canvasShiftImage (Ρ
ΠΎΠ»ΡΡ, totalPdfHeight);
pdf.addImage (newCanvas, 'png, 0, 0, pdfPageWidth, 0, null,' ΠΠΠ’ ');
// var alias = Math.random (). toString (35);
// pdf.addImage (newCanvas, 0, 0, pdfPageWidth, 0, 'png', ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ, 'ΠΠΠ’');
totalPdfHeight + = (pdfPageHeight * pdfScaleFactor * htmlScaleFactor);
if (totalPdfHeight <htmlPageHeight) {
pdf.addPage ();
}
SafetyNet ++;
}
var pageName = document.location.pathname.match (/ [^ /] + $ /) [0];
pdf.save (pageName + '.pdf');
};
html2canvas ($ ('body') [0],
{
onrendered: function (canvas) {
canvasToImageSuccess (Ρ
ΠΎΠ»ΡΡ);
}
});
}
ΠΠΉ, Π±ΡΠ΄Π΅Ρ Π»ΠΈ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅? ΠΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ CORS Π·Π΄Π΅ΡΡ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ :(
ΠΡΠΈΠ²Π΅Ρ Π ΡΠΊΠ΅Π²,
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ, ΠΏΠ΅ΡΠ΅Π΄Π°Π² ΠΎΠ΄Π½Ρ ΠΈΠ· ΠΎΠΏΡΠΈΠΉ Π² ΡΡΠ½ΠΊΡΠΈΠΈ html2canvas. Π ΠΏΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ :)
html2canvas ($ ('# div_pdf') [0],
{
useCORS: true, // ΠΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π² Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ PDF
onrendered: function (canvas) {
canvasToImageSuccess (Ρ
ΠΎΠ»ΡΡ);
}
});
ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ html2canvas ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ:
https://html2canvas.hertzen.com/documentation.html
ΠΡΠΈΠ²Π΅Ρ @ gauravmishra24 , ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ Ρ Ρ ΠΎΡΡ Π²ΠΊΠ»ΡΡΠΈΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° Π΅ΡΡΡ ΡΠ»Π°Π³
Access-Control-Allow-Origin: *
Π½Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½
:(
ΠΡΠΈΠ²Π΅Ρ Π ΡΠΊΠ΅Π²,
ΠΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π°?
Π§ΡΠΎΠ±Ρ Ρ ΠΌΠΎΠ³ ΠΏΠΎΠ»ΡΡΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ...
ΠΡΠΈΠ²Π΅Ρ,
ΠΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ? ΠΠ°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° useCORS ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ true, ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ°ΡΡΡΡ. ΠΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠ° ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π½ΠΎ Π²ΡΡΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Cristy94 Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ html2Canvas.js. ΠΠ°ΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ https://github.com/niklasvh/html2canvas/pull/554/commit/87d44359be73075ba4d5f36d6e1c8b88b7444402, ΠΎΠ½ ΡΠΎΠΆΠ΅ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΠ»Ρ Π΄ΡΡΠ³ΠΎΠΉ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ, Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠΊΡΠΈ, Π΅ΡΡΡ Π»ΠΈ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ angular 2?
Π ΡΠΏΠΈΡΠΊΠ΅ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° (https://github.com/niklasvh/html2canvas/wiki/Proxies) Π΅Π³ΠΎ Π½Π΅Ρ!
ΠΡΠΎ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π²Π΅ΡΡΠΈΠ΅ΠΉ 1.0.0 ? ΠΡΠ»ΠΈ Π΄Π°, Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ Π½Π° jsfiddle .
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Π±ΡΠ»Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΡΡΠ°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π½Π°Ρ Π·Π°ΠΏΡΠΎΡ ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π²ΡΠΎΡΠ° Π½Π΅ ΠΏΠΎΡΡΡΠΏΠΈΠ»ΠΎ ΠΎΡΠ²Π΅ΡΠ°. ΠΠΌΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ Π½Π°Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΠΌΠ΅Ρ. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΈΠ»ΠΈ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π½ΡΠΆΠ½ΡΠ΅ Π½Π°ΠΌ ΠΎΡΠ²Π΅ΡΡ, ΡΠ²ΡΠΆΠΈΡΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠ°ΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
@niklasvh ΠΠΎΡ ΠΌΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Ρ v1.0.0:
https://codepen.io/Onlylonger/pen/ppjPKX
ΡΠΎΡ ΠΆΠ΅ Π²ΠΎΠΏΡΠΎΡ. ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΡΠ΅Π±Π΅
ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ Π·Π½Π°Π΅Ρ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½. ΠΡΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Ρ Π·Π°ΠΏΡΠΎΡΠΎΠΌ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΠ΅Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ° Π΄Π»Ρ ΠΏΡΠΎΠΊΡΠΈ.
@vinayistar, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΌΠΎΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΌ. ΡΡΡΠ»ΠΊΡ https://github.com/niklasvh/html2canvas/issues/1544#issuecomment -435640901
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ useCORS
ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π°ΡΡΠΈΠ±ΡΡΠ° img crossOrigin:anonymous
{ useCORS: false, allowTaint: true }
ΡΡΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ
ΠΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ - ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ src ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² Base64.
const img = document.querySelector('#img')
fetch(img.src)
.then(res => res.blob())
.then(blob => new Promise((resolve, reject) => {
const reader = new FileReader;
reader.onerror = reject;
reader.onload = () => {
resolve(reader.result);
};
reader.readAsDataURL(blob);
})
)
.then(dataURL => {
img.src = dataURL
return html2canvas(element)
} )
@todoi ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΠΎΠ±ΡΠ°Π·Π΅Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ jspdf.
@ nishanta454
ΠΡΠΎ ΡΠΎΡ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°ΠΏΠΈΡΠ°Π». html2canvas ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠ΅ΡΠ΅ΠΊΡΠ΅ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠΈΡΡ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ .
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ cors -where, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ CORS Π² Π·Π°ΠΏΡΠΎΡ ΠΏΡΠΎΠΊΡΠΈ-ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅, ΡΡΠΎ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠΌ Access-Control-Allow-Origin, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· ΡΠ°Π·Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ².
ΠΈΠ· CORS_enabled_image
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
useCORS
ptoperty ΠΊΠ°ΠΊ true, ΠΎΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΊΡΠΎΡΡΠ΄ΠΎΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°