рдпрд╣ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдиреБрд░реЛрдз рдХрд╛ рдЕрдзрд┐рдХ рд╣реИред рдореИрдВ рд▓реМрдЯрд╛рдП рдЧрдП canvas
рдкрд░ toDataURL
рдкрд░ рдХреЙрд▓ рдХрд░рдХреЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреАрдПрдирдЬреА рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВред рд▓реЗрдХрд┐рди рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдзреБрдВрдзрд▓реА/рдЦрд░рд╛рдм рд╣реИред рдореИрдВрдиреЗ рдХреБрдЫ рдЧреБрдЧрд▓ рдХрд┐рдпрд╛ рдФрд░ рдкрд╛рдпрд╛ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд┐рд░реНрдл 96 рдбреАрдкреАрдЖрдИ рдкрд░ рдПрдХ рдЫрд╡рд┐ рджреЗрддрд╛ рд╣реИред рдФрд░ рдЗрд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорд╛рдирдХ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рде рд╣реА toDataURLHD
рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ html2canvas
рдПрдХ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рдПрдХ рдЫрд╡рд┐ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рдбреАрдУрдПрдо рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреБрдЫ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдбреАрдУрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ (рдЗрд╕ рдкрд░ рд▓рд╛рдЧреВ рд╕рднреА рдЧрдгрдирд╛ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде) рдФрд░ рдлрд┐рд░ рдЬреЛ рднреА рдЫрд╡рд┐ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЙрд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реВрдВред
рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ/рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдмрд╛рдд рд╣реБрдИ рдереА рдФрд░ рдХрд┐рд╕реА рдиреЗ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рд╕рдмрдорд┐рдЯ рдХрд┐рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдХрднреА рднреА рдкреБрд▓ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд╡рд┐рд▓рдп рдирд╣реАрдВ рджреЗрдЦрд╛ред
рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░реНрдп рд╡рд┐рдзрд┐ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдбрд┐рд╡рд╛рдЗрд╕ рдкрд┐рдХреНрд╕реЗрд▓ рдШрдирддреНрд╡ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЕрд╕рд░ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╢рд╛рдпрдж рд╣рдо рдЗрд╕реЗ рдЙрдЪреНрдЪ рдбреАрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ?
@missing рд╣рд╛рдБ рдбреАрдкреАрдЖрдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХрдорд╛рд▓ рд╣реЛрдЧрд╛ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдЧрд░ рдЖрдкрдХреЛ рдбрд┐рд╡рд╛рдЗрд╕ рдкрд┐рдХреНрд╕реЗрд▓ рдШрдирддреНрд╡ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдкрджреНрдзрддрд┐ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдореЗрд░рд╛ рдкреНрд░рд╛рдердорд┐рдХ рдЖрд╡реЗрджрди рдЕрдзрд┐рдХрддрдо 50-рдИрд╢ рд╢рд░реНрддреЛрдВ рдХреЗ рд╢рдмреНрдж рдХреНрд▓рд╛рдЙрдб рдХрд╛ рдкреАрдПрдирдЬреА рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдкреНрд░рджрд░реНрд╢рди рд╣рд┐рдЯ рд╕реЗ рдмрд╣реБрдд рдЪрд┐рдВрддрд┐рдд рдирд╣реАрдВ рд╣реВрдВред
рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдпрд╛ рдПрдХ рдзреБрдВрдзрд▓рд╛ рдкреНрд░рднрд╛рд╡ рд╣реИ (рдХреБрдЫ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ html2canvas рджреНрд╡рд╛рд░рд╛ рдзреБрдВрдзрд▓реА рдкреНрд░рднрд╛рд╡ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ)?
@brcontainer рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЫрд╡рд┐ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдЬреИрд╕реЗ резрежреж% рдЬрд╝реВрдо рдХрд░рдиреЗ рдкрд░ рддрд╕реНрд╡реАрд░ рдареАрдХ-рдард╛рдХ-рдИрд╢ рджрд┐рдЦрддреА рд╣реИред рд▓реЗрдХрд┐рди рдЬреИрд╕реЗ рд╣реА рдореИрдВ 5% рднреА рдЬрд╝реВрдо рдХрд░рддрд╛ рд╣реВрдБ рдЖрдк рдлреЛрдЯреЛ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рдЧрд┐рд░рд╛рд╡рдЯ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдХреГрдкрдпрд╛ рд╕рдВрд▓рдЧреНрди рдЫрд╡рд┐ рджреЗрдЦреЗрдВред
рд░рдирдЯрд╛рдЗрдо рдкрд░ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдХрд░ рдореИрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
http://jsfiddle.net/ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрд╕реА рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдпрд╣рд╛рдВ рд▓рд┐рдВрдХ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВред
[рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ]
рдореМрдХрд╛ рд╣реИ рдХрд┐ рдЖрдк html2canvas рджреНрд╡рд╛рд░рд╛ рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдХреИрдирд╡рд╛рд╕ рдореЗрдВ _zoom_ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк (рдЫрд╡рд┐ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
ctx.webkitImageSmoothingEnabled = false;
ctx.mozImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
рдЖрдкрдХреЛ рдХрд╛рдордпрд╛рдмреА рдорд┐рд▓реЗ
рдирдорд╕реНрддреЗ,
рд╣рдореЗрдВ 96DPI рд╕реЗ рдЕрдзрд┐рдХ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдореЗрдВ 300 рдбреАрдкреАрдЖрдИ рдХреА рддрд░рд╣ рдФрд░ рдЪрд╛рд╣рд┐рдПред
рдХреНрдпрд╛ рдпрд╣ _possible_ html2canvas рдХреЗ рд╕рд╛рде рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ?
рдЫрд╡рд┐ рдкрд░ рдзреБрдВрдзрд▓рд╛рдкрди рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдорд╛рдзрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реЗ рдзреБрдВрдзрд▓реЗрдкрди рдХреЛ рджреВрд░ рдХрд░реЗ, рдФрд░ рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдбреАрдкреАрдЖрдИ рдкреНрд░рджрд╛рди рдХрд░реЗред
рдпрд╣ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдЙрд╕реА рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХреЗ рдкрд░ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░/рд╕реБрдЭрд╛рд╡?
рдзрдиреНрдпрд╡рд╛рдж
@brcontainer рдореИрдВ рдЕрднреА рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрди
var ctx = canvas.getContext('2d');
ctx.webkitImageSmoothingEnabled = false;
ctx.mozImageSmoothingEnabled = false;
ctx.imageSmoothingEnabled = false;
var rawData = canvas.toDataURL("image/png");
рдЧрд▓рдд рдХреНрд░рдо рдореЗрдВ рд╣реИ, рдЖрдкрдХреЛ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ "ImageSmoothingEnabled" рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдЕрдкрдиреЗ рдХреЛрдб рдХрд╛ рдПрдХ рдирдореВрдирд╛ http://jsfiddle.net рдореЗрдВ рдбрд╛рд▓реЗрдВ рдФрд░ рдореИрдВ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реВрдВрдЧрд╛
рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,
рдореИрдВ toDataURL рдХреА 96dpi рдмрд╛рдзрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реА рдЫрд╡рд┐рдпрд╛рдВ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЪреВрдБрдХрд┐ toDataURLHD рдЕрднреА рддрдХ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рд╕рдкрдиреЗ рдХреЛ рдХреИрд╕реЗ рд╕рд╛рдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ? :-)
рдХрд┐рд╕реА рднреА рд╕рдВрдХреЗрдд рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж
@brcontainer рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЪрд┐рдХрдирд╛рдИ рд▓рдЧрд╛рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реВрдВред рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП http://jsfiddle.net/tankchintan/92mra/4/ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ jsfiddle рдмрдирд╛рдпрд╛ рд╣реИред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ! :)
рджреЛрд╕реНрдд рдЖрдк рднреНрд░рдорд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, toDataURL
рдЬрд┐рд╕реЗ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рд╣реИ, рдЖрдкрдХреЛ CANVAS
рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛ред
рдирдорд╕реНрддреЗ,
рдореИрдВ рдмреЗрд╣рддрд░ рдЫрд╡рд┐ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред
brcontainer, рдХреНрдпрд╛ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЖрдк рдЬрд┐рди рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рд╕рд╛рде рдЖрдк рдЯреИрдВрдХрдЪрд┐рдВрддрди рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдЬреЗрдПрд╕ рдкрд╣реЗрд▓реА рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ/рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ, рднрд▓реЗ рд╣реА рд╣рдо 2x рдЖрдХрд╛рд░ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЫрд╡рд┐ рдореЗрдВ рдкрд┐рдХреНрд╕реЗрд▓реЗрд╢рди рддрдм рднреА рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЫрд╡рд┐ рдХреЛ 192 рдбреАрдкреАрдЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдирдорд╕реНрддреЗ рджреЛрд╕реНрддреЛрдВ, рдХреНрдпрд╛ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдХреЛрдИ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реИ? рдореИрдВ PhantomJS рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬрд╝ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ html2canvas рдХреЗ рд╕рд╛рде рдмреЗрд╣рдж рдкреНрд░реЛ рдЗрдореЗрдЬ рдХреНрд╡рд╛рд▓рд┐рдЯреА рдХрд╛ рдЕрдиреБрднрд╡ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЬрд╣рд╛рдВ рдЖрдк рдЧреБрдгрд╡рддреНрддрд╛/рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП zoomFactor
(рдЕрдиреНрдп рдЯреНрд╡реАрдХреНрд╕ рдХреЗ рдмреАрдЪ) рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдореЗрд░рд╛ рднреА рд╡рд╣реА рдореБрджреНрджрд╛ рд╣реИред рдореБрдЭреЗ рдкреАрдбреАрдПрдл рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡реЗрдм рдкреЗрдЬ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ div рдХреЛ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП html2canvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдореИрдВ рдЫрд╡рд┐ рдХреЛ рдкреАрдбреАрдПрдл рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП iTextsharp рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрддреНрдкрдиреНрди рдЫрд╡рд┐ рдереЛрдбрд╝реА рдзреБрдВрдзрд▓реА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИ рдФрд░ рдЗрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдВрдЦреЛрдВ рдкрд░ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдореИрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ html2canvas рдореЗрдВ рд╣реА рд╕рдордп рдмрдирд╛рдиреЗ рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреА рдПрдХ рдЫрд╡рд┐ рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВред
рдирдорд╕реНрддреЗ,
рдореЗрд░реЗ рдкрд╛рд╕ рдКрдкрд░ рдХреЗ рд╕рдорд╛рди рд╣реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рд╕рд╛рдордирд╛ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
"рдкреАрдбреАрдПрдл рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд╡реЗрдм рдкреЗрдЬ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореИрдВ рдЕрдкрдиреЗ рдбрд┐рд╡ рдХреЛ рдПрдХ рдЫрд╡рд┐ рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП html2canvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдлрд┐рд░ рдЫрд╡рд┐ рдХреЛ рдПрдХ рдкреАрдбреАрдПрдл рдореЗрдВ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реВрдВред"
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЙрддреНрдкрдиреНрди рдЫрд╡рд┐ рдереЛрдбрд╝реА рдзреБрдВрдзрд▓реА рдкреНрд░рддреАрдд рд╣реЛрддреА рд╣реИред
рдореИрдВрдиреЗ рдЙрдкрд░реЛрдХреНрдд рд╕реБрдЭрд╛рд╡реЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд┐рдпрд╛ рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореБрдЭреЗ рдПрдХ рдзреБрдВрдзрд▓реА рдЫрд╡рд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдпрд╣рд╛рдБ рдореЗрд░реЗ рдХреЛрдб рдореЗрдВ: html2canvas рд╡реЗрдмрдкреЗрдЬ рдХрд╛ рд╕реНрдиреИрдкрд╢реЙрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред
рдореБрдЭреЗ рд╕рд┐рд╕реНрдЯрдо рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдЖрдХрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рд╣реА рд╡реЗрдмрдкреЗрдЬ "рд╕реНрдиреИрдкрд╢реЙрдЯ" рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг :
рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░: 816x422
рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░:1193x437
рдЫрд╡рд┐ рдХрд╛ рдЖрдХрд╛рд░: 1275x437
рдпрд╣рд╛рдВ рдореЗрд░реА рдЕрдкреЗрдХреНрд╖рд╛ рд╣реИ: 2000 x 1784 рдЖрдпрд╛рдо рдФрд░ рдКрдкрд░ред
рдХреНрдпрд╛ рдЫрд╡рд┐ рдХрд╛ рдпрд╣ рдЖрдпрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдмрд╣реБрдореВрд▓реНрдп рд╕реБрдЭрд╛рд╡ рджреЗрдВ рдФрд░ рдЕрдкрдиреЗ рдмрд╣реБрдореВрд▓реНрдп рд╕рдордп рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЗрд╕рдХреЗ рд▓рд┐рдП +1ред рдкреАрдбреАрдПрдл рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП html2canvas рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдзреБрдВрдзрд▓реА рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдЙрд╕ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЗрд░реЗрдВрдЯ рдиреЛрдб рдкрд░ рд╕реАрдПрд╕рдПрд╕ рдЯреНрд░рд╛рдВрд╕рдлрд╝реЙрд░реНрдо рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдкрд░ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ "рдЯреНрд░рд╛рдВрд╕рдлреЙрд░реНрдо: рд╕реНрдХреЗрд▓ (2, 2)"
@mudcube рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛
@brcontainer рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ
рдХреНрдпрд╛ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ ?? рдХреГрдкрдпрд╛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВ рдХрд┐ рдзреБрдВрдзрд▓реА рдЫрд╡рд┐ рдХреЗ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдХреЛ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рдП, рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдПрдХ рдкреАрдбреАрдПрдл рдмрдирд╛рдирд╛ рд╣реИ
+1 рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рд╕рдорд╛рдзрд╛рди/рджрд┐рд╢рд╛рдирд┐рд░реНрджреЗрд╢ рд╣реИ?
рдХреЛрдИ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛?
рджреЛрд╕реНрддреЛрдВ, transform: scale(2, 2)
рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХреНрдпрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╡рд░рдг рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@matiasinsaurralde рд╕реНрдХреНрд░реАрди рд╢реЙрдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдареАрдХ рдкрд╣рд▓реЗ рд╕реАрдПрд╕рдПрд╕ рд╡рд░реНрдЧ .x2
рдЬрд┐рд╕рдореЗрдВ рдКрдкрд░ рд╕реЗ рддрддреНрд╡ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо рд╢рд╛рдорд┐рд▓ рд╣реИ, рдлрд┐рд░ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ html2canvas
рдХреЙрд▓рдмреИрдХ рдореЗрдВ рд╣рдЯрд╛ рджреЗрдВред рдЖрдкрдХреЛ рдбрдмрд▓-рд╕рд╛рдЗрдЬрд╝ рдПрд▓рд┐рдореЗрдВрдЯ рдФрд░ рдбрдмрд▓-рд╕рд╛рдЗрдЬрд╝ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рднреА рдорд┐рд▓реЗрдЧрд╛ред рдФрд░ рдпрд╣ рдирд┐рд░реНрдмрд╛рдз рд╣реИ рдЗрд╕рд▓рд┐рдП рдЖрдк рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рджреЗрдЦреЗрдВрдЧреЗред
рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬрдм рдореИрдВрдиреЗ рдЖрдкрдХреЗ рд╕реБрдЭрд╛рд╡ @Ajaxy рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдореЗрд░реЗ рдХреЛрдб рдкрд░ рд╣реИ? рдкреГрд╖реНрда рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдореЗрдВ рдЗрддрдирд╛ рд╕рдордп рд▓рдЧрд╛
рдкреИрдорд╛рдиреЗ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдВрдХрд▓реНрдк рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХреАред рдЗрд╕реЗ рдЬреЗрдПрд╕ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рдирд╛ рдерд╛ -
https://github.com/niklasvh/html2canvas/issues/379
рдХреЛрдИ рдХрд┐рд╕реНрдордд рджреЛрд╕реНрддреЛрдВ?
transform: scale(2, 2);
dygraph.js рдХреЗ рд▓рд┐рдП рднреА рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ
@premerddyn , рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдореБрджреНрджреЗ рдореЗрдВ рдореЗрд░рд╛ рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗрдВред
рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдЗрдЬрд╝рд╛рдлрд╝рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЕрдЧрд░ рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рдореИрдВ рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛрдбрд╝реВрдВрдЧрд╛
рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореИрдВрдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рдерд╛ рд╡рд╣ рджреЛ рдмрд╛рд░ рдЖрдХрд╛рд░ рдХрд╛ div рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рджреГрд╢реНрдпрддрд╛ рдкрддрди рдмрдирд╛ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЛ рднреА рд╕рд╛рдордЧреНрд░реА рд╣реИ, рдореИрдВрдиреЗ рдЙрд╕ div рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓рд┐рдпрд╛ред рдЗрд╕ рддрд░рд╣ рдХреЛрдИ рдЫрд╡рд┐ рд╕реНрдкрд╖реНрдЯрддрд╛ рд╣рд╛рдирд┐ рдирд╣реАрдВ рд╣реИ рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░ рдХреЛрдб рдХреЛ рдЯреНрд╡реАрдХ рдХрд┐рдпрд╛ рд╣реИ рдХрд╛рдоред рдореБрдЭреЗ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореЗрд░реА рд╕рдорд╕реНрдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ-рд╕реНрдЯреНрд░реЛрдХ рдФрд░ рдорд▓реНрдЯреАрд▓рд╛рдЗрди рдЯреЗрдХреНрд╕реНрдЯ-рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдХреЗ рд╕рд╛рде рд╣реИред
рдореЗрд░реЗ рд▓рд┐рдП 2 рдХрд╛рдореЛрдВ рд╕реЗ рд╕реНрдХреЗрд▓рд┐рдВрдЧ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдкрд╛рджрди рд╡рд┐рдВрдбреЛ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди/рдЖрдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ рд╕реАрдорд┐рдд рд╣реИред рдпрджрд┐ рд╕реНрдХреЗрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ div рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдЪреМрдбрд╝рд╛ рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдХреБрдЫ рд╣рд┐рд╕реНрд╕рд╛ рдХрд╛рдЯ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
рддреЛ, рдХреНрдпрд╛ рд╕реНрдХреНрд░реАрди рд╕реЗ рдмрдбрд╝реЗ рдХреИрдирд╡рд╕ рдХреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ?
рдЖрд╣, рдЗрд╕ рдзрд╛рдЧреЗ рд╕реЗ:
var h = $(element)[0].ownerDocument.defaultView.innerHeight;
$(element)[0].ownerDocument.defaultView.innerHeight = $(element).height();
html2canvas($(element)).then(function(canvas) {
$(element)[0].ownerDocument.defaultView.innerHeight = h;
//Do whatever you want with your canvas
}
https://jsfiddle.net/enjoythedaycsk/9L966sdd/1/
рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реА рдЪреАрдЬрд╝ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рд╡рд╣ рдирд╣реАрдВ рдорд┐рд▓реА ...
рдбрд╛рдЙрдирд▓реЛрдб pngx2 рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ..
рдХреНрдпрд╛ рдмреИрдХрдПрдВрдб рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ рдЬрдм рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреИрдирд╡рд╛рд╕ рдЕрдкрдиреЗ рдЖрдХрд╛рд░ рд╕реЗ рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рддрд╕реНрд╡реАрд░ рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдХреИрдирд╡рд╛рд╕ рдХреЛ рдирд┐рдпрдорд┐рдд рдЖрдХрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ..
рдЬрд╝рд░реВрд░, рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рдереЗред рдореИрдВ рдЬрд┐рд╕ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЙрд╕рдХрд╛ рдХреИрдирд╡рд╛рд╕ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реВрдВ
рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдореВрд▓реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╕
рдЪреМрдбрд╝рд╛рдИ/рдКрдВрдЪрд╛рдИ рд╕реАрдзреЗ рд╕реЗрдЯ рдХрд░реЗрдВред
рд╢рдирд┐рд╡рд╛рд░, рдордИ рен, реирежрезрем рдХреЛ, рдЖрдирдВрдж рджрд┐рди рдХреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
https://jsfiddle.net/enjoythedaycsk/9L966sdd/1/
рдореИрдВрдиреЗ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реА рдЪреАрдЬрд╝ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдирд╣реАрдВ рдорд┐рд▓рд╛
рд╡рд╣...рдбрд╛рдЙрдирд▓реЛрдб pngx2 рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ..
рдХреНрдпрд╛ рдмреИрдХрдПрдВрдб рдкрд░ рдСрдкрд░реЗрд╢рди рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ рдЬреИрд╕реЗ рдЬрдм рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
рдХреИрдирд╡рд╛рд╕ рдЕрдкрдиреЗ рдЖрдХрд╛рд░ рд╕реЗ рджреЛрдЧреБрдирд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рддрд╕реНрд╡реАрд░ рдЦреАрдВрдЪреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ
рдХреИрдирд╡рд╛рд╕ рдХреЛ рдирд┐рдпрдорд┐рдд рдЖрдХрд╛рд░ рдореЗрдВ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ..-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдиреЗ рдЯрд┐рдкреНрдкрдгреА рдХреА рдереАред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ рдпрд╛ рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ
https://github.com/niklasvh/html2canvas/issues/241#issuecomment -217634634
рджреБрдирд┐рдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рд▓рдВрдмрд╛ рдЪрд▓ рд░рд╣рд╛ рдЪрд┐рддреНрд░рдг
ForeverScape.com http://www.foreverscape.com/ | @ рдлреЙрд░рдПрд╡рд░рд╕реНрдХреЗрдк
https://twitter.com/foreverscape | рдЧреАрдереВрдм рдкрд░
https://github.com/vance/foreverscapecore | рдЦрдмрд░ рдореЗрдВ
http://www.foreverscape.com/art/reviews/
@vance рдХреНрдпрд╛ рдЖрдк рдЗрд╕реЗ jsfiddle рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
https://jsfiddle.net/enjoythedaycsk/9L966sdd/1/
рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред
рдЖрдк рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирдпрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдмрд╣реБрддреЛрдВ рдХреЗ рд▓рд┐рдП рдорджрджрдЧрд╛рд░ рд╣реЛрдЧрд╛ :рдирд░реНрддрдХ:
рдореИрдВрдиреЗ рдЗрд╕реЗ рдЬрд▓реНрджреА рд╕реЗ рдирдХрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд▓реЗрдХрд┐рди рдкрд░реАрдХреНрд╖рдг div рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ред transform:scale()
рд╕рд╛рде рдХреБрдЫ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ div рдХреА рдЖрдВрддрд░рд┐рдХ рдКрдВрдЪрд╛рдИ _NOT_ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрд╣ рдПрдХ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИред рдпрд╣ w/h рдЧреБрдг рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд (рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ) рд╣реИрдВ, рдЬрд┐рд╕реЗ рдЖрдк getBoundingClientRect()
рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛рдиреЗ рдкрд░ рдЗрд╕рдХреА рдЪреМрдбрд╝рд╛рдИ/рдКрдВрдЪрд╛рдИ рдХреЗрд╡рд▓ _actually_ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред рд╕реНрдХреЗрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдЖрдкрдХреЛ рдХрдВрдЯреЗрдирд░ div рдХреЛ рдкрдХрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдХреНрдпрд╛ рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╕рдорд╛рдзрд╛рди рд╣реИ?уГ╛(┬┤я╜е )уГО"
рдореИрдВ рдЦрд┐рдбрд╝рдХреА рд╕реЗ рдмрдбрд╝реЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдмрд╕ рдпрд╛рдж рд░рдЦреЗрдВ, рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рд░реВрдкрд╛рдВрддрд░рд┐рдд рддрддреНрд╡ рд╕реЗ "рдмрдбрд╝реА" рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ (рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП), рдЗрд╕рдореЗрдВ рдЕрднреА рднреА рд╕рдорд╛рди рдЖрдпрд╛рдо рд╣реИрдВред
рдореБрдЭреЗ рдПрдХ рдЖрдИрдлреНрд░реЗрдо рдореЗрдВ рдореЗрд░рд╛ рдХрд╛рдо рдХрд░рдирд╛ рдерд╛ рдФрд░ рдмреЗрд╕ 64 рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рдкрд╕ рднреЗрдЬрдирд╛ рдерд╛ ...
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдлрд┐рд░ рд╕реЗ:
//store the original size
var h = $(element)[0].ownerDocument.defaultView.innerHeight;
var w = $(element)[0].ownerDocument.defaultView.innerWidth;
//set the document to the element's size
$(element)[0].ownerDocument.defaultView.innerHeight = $(element).height();
$(element)[0].ownerDocument.defaultView.innerWidth = $(element).width();
html2canvas($(element)).then(function(canvas) {
//restore the document size
$(element)[0].ownerDocument.defaultView.innerHeight = h;
$(element)[0].ownerDocument.defaultView.innerWidth = w;
//Do whatever you want with your canvas
}
рдореИрдВрдиреЗ html2canvas рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ HTML рддрддреНрд╡ рд╕реЗ рдЙрдЪреНрдЪ-DPI рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЖрд╕рд╛рдиреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦрд╛ рд╣реИред
srcEl
рдПрдХ рдореМрдЬреВрджрд╛ рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПdestIMG
рдПрдХ рдореМрдЬреВрджрд╛ (рдЦрд╛рд▓реА) рдЫрд╡рд┐ рддрддреНрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПdpi
96 . рдХрд╛ рдЧреБрдгрдЬ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПvar makeHighResScreenshot = function(srcEl, destIMG, dpi) {
var scaleFactor = Math.floor(dpi / 96);
// Save original size of element
var originalWidth = srcEl.offsetWidth;
var originalHeight = srcEl.offsetHeight;
// Save original document size
var originalBodyWidth = document.body.offsetWidth;
var originalBodyHeight = document.body.offsetHeight;
// Add style: transform: scale() to srcEl
srcEl.style.transform = "scale(" + scaleFactor + ", " + scaleFactor + ")";
srcEl.style.transformOrigin = "left top";
// create wrapper for srcEl to add hardcoded height/width
var srcElWrapper = document.createElement('div');
srcElWrapper.id = srcEl.id + '-wrapper';
srcElWrapper.style.height = originalHeight*scaleFactor + 'px';
srcElWrapper.style.width = originalWidth*scaleFactor + 'px';
// insert wrapper before srcEl in the DOM tree
srcEl.parentNode.insertBefore(srcElWrapper, srcEl);
// move srcEl into wrapper
srcElWrapper.appendChild(srcEl);
// Temporarily remove height/width constraints as necessary
document.body.style.width = originalBodyWidth*scaleFactor +"px";
document.body.style.height = originalBodyHeight*scaleFactor +"px";
window.scrollTo(0, 0); // html2canvas breaks when we're not at the top of the doc, see html2canvas#820
html2canvas(srcElWrapper, {
onrendered: function(canvas) {
destIMG.src = canvas.toDataURL("image/png");
srcElWrapper.style.display = "none";
// Reset height/width constraints
document.body.style.width = originalBodyWidth + "px";
document.body.style.height = originalBodyHeight + "px";
}
});
};
рдЙрдкрдпреЛрдЧ:
var src = document.getElementById("screenshot-source");
var img = document.getElementById("screenshot-img");
makeHighResScreenshot(src, img, 192); // DPI of 192 is 4x resolution (2x normal DPI for both width and height)
рдХреНрдпрд╛ рдЖрдкрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рд╕реЗ window.onresize рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рднреА рдЯреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ? рдЗрд╕ рдХрд╛рд░рдг рд╕реЗ, рдореБрдЭреЗ рдпрд╣ рд╕рдм рдПрдХ рдЖрдИрдлреНрд░реЗрдо рдХреЗ рдЕрдВрджрд░ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдФрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП parent.window.postMessage(data) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкрд░рд┐рдгрд╛рдо рд╡рд╛рдкрд╕ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдпрд╣ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдРрдк рд╣реИ, рдФрд░ рдЖрдЧ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
@vance : рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореБрдЭреЗ рдЗрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рднреА рдЪреАрдЬрд╝ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдпрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ - рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ HTML-to-PDF рд░реЗрдВрдбрд░рд░ рдореЗрдВ рдмрдЧ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореБрдЭреЗ рдЖрдкрдХреА рд╡рд┐рдзрд┐ рдХрд╛ рдкреВрд░рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛, рдпрд╣ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рд▓рдЧрддрд╛ рд╣реИред
рдореИрдВрдиреЗ рдПрдХ рдЙрдЪреНрдЪ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рд╡рд╛рд▓реА рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдирд┐рдХрд╛рд▓рд╛, рдЬрд┐рд╕реЗ рд╢рд░реАрд░ рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕реЗ html2canvas (#790, #820, #893, #922, рдЖрджрд┐) рдореЗрдВ рдмрдЧ рдХреЗ рдХрд╛рд░рдг рд╕реНрд░реЛрдд рддрддреНрд╡ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрдерд╛рди рджреЗрдирд╛ рд╣реЛрдЧрд╛ред @MisterLamb рдХреЗ рд░реЗрдЯрд┐рдирд╛ рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ред
function takeHighResScreenshot(srcEl, destIMG, scaleFactor) {
// Save original size of element
var originalWidth = srcEl.offsetWidth;
var originalHeight = srcEl.offsetHeight;
// Force px size (no %, EMs, etc)
srcEl.style.width = originalWidth + "px";
srcEl.style.height = originalHeight + "px";
// Position the element at the top left of the document because of bugs in html2canvas. The bug exists when supplying a custom canvas, and offsets the rendering on the custom canvas based on the offset of the source element on the page; thus the source element MUST be at 0, 0.
// See html2canvas issues #790, #820, #893, #922
srcEl.style.position = "absolute";
srcEl.style.top = "0";
srcEl.style.left = "0";
// Create scaled canvas
var scaledCanvas = document.createElement("canvas");
scaledCanvas.width = originalWidth * scaleFactor;
scaledCanvas.height = originalHeight * scaleFactor;
scaledCanvas.style.width = originalWidth + "px";
scaledCanvas.style.height = originalHeight + "px";
var scaledContext = scaledCanvas.getContext("2d");
scaledContext.scale(scaleFactor, scaleFactor);
html2canvas(srcEl, { canvas: scaledCanvas })
.then(function(canvas) {
destIMG.src = canvas.toDataURL("image/png");
srcEl.style.display = "none";
});
};
рдЙрдкрдпреЛрдЧ:
var src = document.getElementById("screenshot-src");
var img = document.getElementById("screenshot-img");
takeHighResScreenshot(src, img, 2); // This time we provide desired scale factor directly, no more messing with DPI
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рддрддреНрд╡ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдФрд░ рдорд╛рд░реНрдЬрд┐рди рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдкреВрд░реНрдг рд╕реНрдерд┐рддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдо рд╣реИрдХрдиреЗрд╕, рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП @ рдЬреЗрд╕рди-рдУ-рдореИрдЯрд┐рдХ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдпрд╣ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг (0.5.0-рдЕрд▓реНрдлрд╛) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди 0.4.1 . рдирд╣реАрдВ
рдпрджрд┐ рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ 0.4.1 рдореЗрдВ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рд╣реЛрдЧрд╛ред
@airdrummingfool рдХреЗ рдлрд┐рдХреНрд╕ (рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд╕реА рднреА рд╡реНрдпрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рддреНрд╡рд░рд┐рдд рдиреЛрдЯ ...
рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдИ рднреА "рд░рд┐рд╢реНрддреЗрджрд╛рд░" рддрддреНрд╡ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рддрддреНрд╡ рдХреЛ рд▓рдкреЗрдЯрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕реНрдХреНрд░реАрди рдбрдВрдк рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреА рджреВрд░ xtree рд╣реИрдВред рд╕реНрдХреНрд░реАрдирдбрдВрдк рдХреА рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд┐рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЬреЛ рддрддреНрд╡ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ 0,0 рдкрд░ рджрд┐рдЦрд╛рдИ рджреЗ, рди рдХрд┐ рдЖрд╕рдкрд╛рд╕ рдХреЗ рдбреАрдЖрдИрд╡реАред
рдЗрд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЙрдиреНрд╣реАрдВ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рд╢реБрдн рджреЛрдкрд╣рд░ рдорд┐рддреНрд░реЛрдВ,
рдХреНрдпрд╛ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ @airdrummingfool рд╕рдорд╛рдзрд╛рди рдХрд╛ jsfiddle рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдХрд┐рд╕реНрдордд рдХреЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдПрдХ рдХрд╛рдордХрд╛рдЬреА рдЙрджрд╛рд╣рд░рдг рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореЗрд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдореЗрд░реА рдмрд╣реБрдд рдорджрдж рдХрд░реЗрдЧрд╛ред
рдкреНрд░рджрд╛рди рдХреА рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реА рдХрд┐рд╕реА рднреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд-рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
рд╣реЗрд▓реЛ рд╕рдм рд▓реЛрдЧ! рдореИрдВ @airdrummingfool рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд╣реИред рдЬрд┐рд╕ рддрддреНрд╡ рд╕реЗ рдореИрдВ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдПрдХ рд╣реИ рддрддреНрд╡ рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рддреЗ рд╕рдордп, рдЖрдИрдПрдордЬреА рддрддреНрд╡ рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕реНрд░реЛрдд рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдХрд┐рд╕реА рдиреЗ html2canvas рдХреЗ рд╕рд╛рде рдкрд╣рд▓реЗ рдЗрд╕ рдореБрджреНрджреЗ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ?
рдЗрд╕ рдзрд╛рдЧреЗ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рдж! рдпрд╣ рдореБрдЭреЗ рдмрдЪрд╛ рд░рд╣рд╛ рд╣реИ !! :рдбреА
рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореБрдЭреЗ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рдЫрд╡рд┐ рдХрд╛ рдХреЗрд╡рд▓ рдЖрдзрд╛ рд╣рд┐рд╕реНрд╕рд╛ рднреА рдорд┐рд▓ рд░рд╣рд╛ рд╣реИред рд▓реЗрдХрд┐рди рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди рдПрдХрджрдо рд╕рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ xD
рдЫрд╡рд┐ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ !! useCORS рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛! рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рдХреЗрд╡рд▓ рдЖрдзреА рдЫрд╡рд┐ рд╣реА рдорд┐рд▓ рд░рд╣реА рд╣реИред
рдорд╣рд╛рди! рдЖрдзреА рдЫрд╡рд┐ рдХреИрдирд╡рд╛рд╕ рдХреЗ рдмрд╛рд╣рд░ рдкреНрд░рддрд┐рдкрд╛рджрди рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддреА рд╣реИред рдореИрдВрдиреЗ html2canvas рдореЗрдВ рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди/рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рднреА рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХреЛ @airdrummingfool рд╕рдорд╛рдзрд╛рди рдХреА рддреБрд▓рдирд╛ рдореЗрдВ
рдЬрдм рддрдХ рд╡реЗ html2canvas рдореЗрдВ рд╡рд┐рд▓рдп рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗ, рдЖрдк рдЙрди рджреЛрдиреЛрдВ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдмрдЧрдлрд┐рдХреНрд╕ рдХреЗ рд╕рд╛рде рдореЗрд░рд╛ рдХрд╕реНрдЯрдо рдмрд┐рд▓реНрдб рдпрд╣рд╛рдВ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
рд╣рд╛рдп @eKoopmansред рдЖрдкрдХреЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕рд┐рд░реНрдл рдКрдВрдЪрд╛рдИ рдХреЛ 2 рд╕реЗ рдЧреБрдгрд╛ рдХрд░рдХреЗ рдЦрджрд╛рди рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред рд▓реЗрдХрд┐рди, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рд╕рдлреЗрдж рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝реА рдЫрд╡рд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ ... рдЗрд╕рд▓рд┐рдП... рдореИрдВ рдЖрдкрдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреБрдЫ рдорд┐рдирдЯреЛрдВ рдореЗрдВ рд╡рд╛рдкрд╕ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реВрдВрдЧрд╛ред !
OM(F)G @eKoopmans .. рдЖрдкрдиреЗ
#1087 . рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕рдорд╛рдкрди
@airdrummingfool ... рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдПрдХрджрдо рд╕рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдЖрдк https://github.com/cburgmer/rasterizeHTML.js . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
html2canvas рдХрд╛ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдЖрдкрдХреЛ рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
html2canvas(рддрддреНрд╡, {
рд╕реНрдХреЗрд▓: 2
});
рдПрдЪрдЯреАрдПрдордПрд▓ рдФрд░ рдЫрд╡рд┐ рд╕рд╛рдордЧреНрд░реА рд╕реЗ рдПрдХрд╛рдзрд┐рдХ рдкреГрд╖реНрда рдкреАрдбреАрдПрдл рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП, scale: 1
рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╛рдзрд╛рди рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░ рд╕рд╛рде рд╣реА рдкреАрдбреАрдПрдл рд╕реАрдорд╛ рд╕реЗ рдЕрдзрд┐рдХ рдЫрд╡рд┐рдпреЛрдВ рд╕реЗ рдмрдЪ рд╕рдХрддреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдореИрдВрдиреЗ html2canvas . рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ
рдбрд╛рдЙрдирд▓реЛрдб рдкреАрдбреАрдНрдлрд╝() {
рд╡рд░ рдбреЙрдХреНрдЯрд░ = рдирдпрд╛ рдЬреЗрдПрд╕рдкреАрдбреАрдПрдл ({
рдкреНрд░рд╛рд░реВрдк: "рдП 4"
});
html2canvas(document.getElementById("pdf-doc"), {
рд╕реНрдХреЗрд▓: "5"
}).рдлрд┐рд░ (рдХреИрдирд╡рд╛рд╕ => {
this.imgFile = рдХреИрдирд╡рд╛рд╕;
doc.addImage(this.imgFile, "JPEG", 5, 5, 200, 285);
doc.save ("рдлрд╝рд╛рдЗрд▓ рдирд╛рдо" + ".pdf");
});
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕рдХреЗ рд▓рд┐рдП +1ред рдкреАрдбреАрдПрдл рдореЗрдВ рдбрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП html2canvas рдХреЗ рд╕рд╛рде рдПрдХ рдЫрд╡рд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдзреБрдВрдзрд▓реА рдЧреБрдгрд╡рддреНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред