Html2canvas: рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ (рд╡рд╛рджреЗ рдореЗрдВ) рдмрд╢рд░реНрддреЗ рддрддреНрд╡ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рднреАрддрд░ рди рд╣реЛ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 14 рджрд┐рд╕ре░ 2017  ┬╖  23рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: niklasvh/html2canvas

рдЗрд╕ рддреНрд░реБрдЯрд┐ рдХрд╛ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ? рдФрд░ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ

Needs More Information

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдпрджрд┐ рдЖрдк рдбреАрдЖрдИрд╡реА рдЙрдкрдпреЛрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
html2canvas($("#element")[0]).then(function(canvas) {
$("#element-out").append(canvas);
});

рд╕рднреА 23 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдк рдЬрд┐рд╕ рддрддреНрд╡ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдбреЛрдо рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рд╣реИ

рддреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд░реЗрдВ?

0.5 рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ 1 рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓реА

рдХреГрдкрдпрд╛ jsfiddle рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ

рдореИрдВрдиреЗ рдПрдЪрдЯреАрдПрдордПрд▓ рдмреЙрдбреА рдХреЗ рдмрд╛рдж html2canvas рдЬреЗрдПрд╕ (рд╕рдВрд╕реНрдХрд░рдг 1) рдФрд░ рдореЗрд░рд╛ рдРрдк рдЬреЗрдПрд╕ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реЛ рдЧрдИ рд╣реИред

рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд┐рдХреНрд╕ рдорд┐рд▓рд╛ рд╣реИ, рдореБрдЭреЗ ASP.Net MVC cshtml рдкреЗрдЬ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдбреАрдЖрдИрд╡реА рдЙрдкрдпреЛрдЧ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ
html2canvas($("#element")[0]).then(function(canvas) {
$("#element-out").append(canvas);
});

рд▓реЗрдХрд┐рди рдореИрдВ html2canvas (рд╕рднреА рдорд╛рдирдЪрд┐рддреНрд░ рдЫрд╡рд┐ рдирд╣реАрдВ рдЖ рд░рд╣рд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ Google рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЫрд╡рд┐ рд▓реЗрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ, рдХреНрдпрд╛ рдХреЛрдИ рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ cshtml рдореЗрдВ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдП ???

@cjcortez @RaghavPrabhu рдКрдкрд░ рджрд┐рдП рдЧрдП рд╕реНрдорд╛рд░реНрдЯрдмреЗрдкреНрд▓ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдЖрдк jQuery рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдПрдХрд▓ Element рдмрдЬрд╛рдп рддрддреНрд╡реЛрдВ рдХреА рд╕реВрдЪреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ?

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ!
html2canvas($('#div').get(0)).then (рдлрд╝рдВрдХреНрд╢рди (рдХреИрдирд╡рд╛рд╕) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдХреИрдирд╡рд╛рд╕);
});

рдзрдиреНрдпрд╡рд╛рдж рдпрд╣ рдХрд╛рдо рдХрд┐рдпрд╛

@jeremielodi рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рдореБрдЭреЗ рдкрд╛рдЧрд▓ рдХрд░ рд░рд╣рд╛ рдерд╛!

рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рдХреЗ рд╕рдорд╛рди рдХреЛрдб рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЬреЛ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ рд╡рд╣ рдХрд╛рдлреА рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ: рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ (рд╡рд╛рджреЗ рдореЗрдВ) рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ... рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХреГрдд (async)

рдореБрдЭреЗ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рдереА - рдореИрдВ рдмрдЯрди рдХреНрд▓рд┐рдХ рдкрд░ HTML2Canvas рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдореИрдВрдиреЗ HTML2Canvas рдХреЙрд▓ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛, рдореБрдЭреЗ рдПрдХ "рдЕрдирдХреЙрдЯреЗрдб (рд╡рд╛рджреЗ рдореЗрдВ) рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд ... рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХреГрдд (async)" рддреНрд░реБрдЯрд┐ рдорд┐рд▓реЗрдЧреАред рдЕрдВрдд рдореЗрдВ, рдореИрдВрдиреЗ рдереЛрдбрд╝рд╛ рд╕реАрдЦрд╛ рдХрд┐ рд╡рд╛рджреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдПрдХ рдкрдХрдбрд╝ рдЬреЛрдбрд╝ рд░рд╣рд╛ рдерд╛:

function myFunction() {
    html2canvas(document.querySelector("#capture")).then(canvas => {          
            var base64encodedstring = canvas.toDataURL("image/jpeg", 1).replace("data:image/jpeg;base64,", "");
            j$("[id$='inputHidden']").val(base64encodedstring);
            console.log('Saving...');
            mySaveFunction();
        })
        .catch(function (error) {
            /* This is fired when the promise executes without the DOM */    
        });
}

рдЪреЗрддрд╛рд╡рдиреА рдХрд╛ рд╢рдмреНрдж, рдореИрдВ рдХреБрд▓ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХрдо рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд╛рджреЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдХреЛрдб .catch() рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЗрд╕реЗ рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣, рдЬрдм рдЖрдк рдЗрд╕реЗ рд╕рдорд╛рд╣рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЕрдм рд╕рд╣реА рдбреАрдУрдПрдо рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╛рджрд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

@ikemike рдпрд╣ рдЖрдкрдХреА рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ
```рдПрдЪрдЯреАрдПрдордПрд▓


html2рдХреИрдирд╡рд╛рд╕


@niklasvh html2canvas рдХреЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдореБрдЭреЗ рдЕрдирдХреЙрдЯ (рд╡рд╛рджреЗ рдореЗрдВ) рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ: рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рддреНрд░реБрдЯрд┐ред рдХреНрдпрд╛ рдЖрдк рдореЗрд░реА рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

image

image

рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

function downloadURI(uri, name) {
    var link = document.createElement("a");

    link.download = name;
    link.href = uri;
    document.body.appendChild(link);
    link.click();
    clearDynamicLink(link); 
}

function DownloadAsImage() {
    var element = $("#table-card")[0];
    html2canvas(element).then(function (canvas) {
        var myImage = canvas.toDataURL();
        downloadURI(myImage, "cartao-virtual.png");
    });
}

рдХреНрд░реЛрдо рдореЗрдВ, рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди IE11 рдореЗрдВ, рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛... T_T;

рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ (рд╡рд╛рджреЗ рдореЗрдВ): рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рддреНрд░реБрдЯрд┐

@bandacs рдХреНрдпрд╛ рдЖрдкрдХреЛ

рдореИрдВ 1.0 рдЕрд▓реНрдлрд╛ 12 рд░рд┐рд▓реАрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИред рдореИрдВрдиреЗ рдЗрди рд╕рднреА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред

рдореИрдВрдиреЗ @smartbepl . рджреНрд╡рд╛рд░рд╛ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ
html2canvas($("#element")[0]).then(function(canvas) {
$("#element-out").append(canvas);
});

рдореИрдВрдиреЗ рдЗрд╕реЗ @jeremielodi . рджреНрд╡рд╛рд░рд╛ рдЖрдЬрдорд╛рдпрд╛
html2canvas($('#div').get(0)).then (рдлрд╝рдВрдХреНрд╢рди (рдХреИрдирд╡рд╛рд╕) {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ (рдХреИрдирд╡рд╛рд╕);
});

рдореИрдВрдиреЗ рд▓реАрдВрдбреНрд░реЛрдХрд╕реА рд╕рдорд╛рдзрд╛рди рдХреА рднреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░

рдЗрд╕реЗ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╕рднреА рддрддреНрд╡ DOM рдкрд░ рд▓реЛрдб рд╣реИрдВ, рдореИрдВ take_screenshot() рдирд╛рдордХ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдбрд╛рд▓рддрд╛ рд╣реВрдВред

рдлрд╝рдВрдХреНрд╢рди take_screenshot ()
{
html2canvas($(.image__container")[0]).then(canvas => {
рдХрдВрд╕реЛрд▓.рд▓реЙрдЧ ('рдХреГрдкрдпрд╛ рдХрд╛рдо рдХрд░реЗрдВ рдореИрдВ рдЕрдкрдирд╛ рджрд┐рдорд╛рдЧ рдЦреЛ рд░рд╣рд╛ рд╣реВрдВ');
});
}
рдореИрдВ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд▓реЛрдб рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрдВрд╕реЛрд▓ рд╕реЗ take_screenshot() рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдПрдХ рд╣реА рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИ рдзреНрдпрд╛рди рдореЗрдВ рди рдЖрдпрд╛ (рд╡рд╛рджреЗ рдореЗрдВ) рдЕрдкрд░рд┐рднрд╛рд╖рд┐рддред

рдореЗрд░реЗ рдкрд╛рд╕ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рд╛рдордирд╛ https://github.com/niklasvh/html2canvas/issues/1313#issuecomment -377132089 рдиреЗ рдХрд┐рдпрд╛ рдерд╛
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдЪреАрдпрд░рд┐рдпреЛ рдореЗрдВ рдЕрд╕рдлрд▓ рдХреНрдпреЛрдВ рд╣реБрдЖ?

   .get(url)
   .end((err, res) => {
       cheerio.load(res.text)
       html2Canvas($('#statuses').get(0), {
           allowTaint: true
       }).then(function(canvas) {})
})
Uncaught (in promise) Error: Element is not attached to a Document

рдЕрдм рдПрдХ рдФрд░ рдХреЙрд▓рд┐рдВрдЧ рдХрдиреНрд╡реЗрдВрд╢рди рд╣реИред
рд╕рдВрд╕реНрдХрд░рдг реж.рел рдПрдХ рд╕рд░рдгреА рдореЗрдВ рдиреЛрдб рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЕрдм рдЖрдк рдЗрд╕реЗ рд╕реАрдзреЗ рджреЗрддреЗ рд╣реИрдВред
рд╕рдВрд╕реНрдХрд░рдг 0.5 рдореЗрдВ "рдСрдирд░реЗрдВрдбрд░" рд╡рд┐рдХрд▓реНрдк рдерд╛, рдЬрдмрдХрд┐ рдЕрдм рдЖрдк "рдлрд┐рд░" рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

tibewww picture tibewww  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

celik75 picture celik75  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Juliazhong picture Juliazhong  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stevencherry1 picture stevencherry1  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

AlphaDu picture AlphaDu  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ