Pdf.js: рддреНрд░реБрдЯрд┐: рд╕рдВрдкрддреНрддрд┐ 'рдкреНрд░рд┐рдВрдЯ' рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЗрдирдХрд╛рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдирд╡ре░ 2018  ┬╖  39рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mozilla/pdf.js

рд╡рд┐рдиреНрдпрд╛рд╕:

  • рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: PDF.js рдХреЗ рдмрд╛рдж рд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ (5+ рд╡рд░реНрд╖)
  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЗрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: рд╕рднреА
  • PDF.js рд╕рдВрд╕реНрдХрд░рдг: рд╕рднреА
  • рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ: n / a

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:

  1. https://bugzilla.mozilla.org/show_bug.cgi?id=911444

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ?
рдХрд┐ рдкреАрдбреАрдПрдл рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╣рд░ рджреВрд╕рд░реЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ

рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ?
Error: Permission denied to access property 'print'

рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдкреАрдбреАрдПрдл рдХреЗ рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рдкреНрд░рд┐рдВрдЯ рд╕реЛрд▓реНрдпреВрд╢рди рдореЗрдВ рдЬрд╛рдиреЗ рдХреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ 5 рд╕рд╛рд▓ рдХреЗ рд▓рд┐рдП рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╡реЗрдм рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдкрд╛рд╕ рдПрдХ рдПрдХрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛, pdf.js рдХреЗ рдХрд╛рд░рдг рд╕реИрдХрдбрд╝реЛрдВ рдмреБрд░реЗ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред

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

@dotnetCarpenter рдХреЗрдХ рдкрд░ рдЖрдЗрд╕рд┐рдВрдЧ рд╣реИ, рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рд╢рд┐рдХрд╛рдпрдд рдХреА рдереА рдХрд┐ рд╕рднреА +1 рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рддрдХрдиреАрдХреА рдЪрд░реНрдЪрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдмрдЧ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдорд╛рдиреЛ рд╡рд╣ 6 рд╕рд╛рд▓ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рд╕реЗ рдЦреБрд▓рд╛ рд╣реЛ рдФрд░ рдЧрд┐рдирддреА рд╣реЛред рдорддрджрд╛рди рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдмрд┐рдирд╛, рдЗрд╕ рддрд░рд╣ рдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдЕрдм рдХреЗрд╡рд▓ рдПрдХ рдореБрджреНрджреЗ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИред

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

Https://github.com/mozilla/pdf.js/issues/5397 рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк iframe рдпрд╛ рдирд╣реАрдВред

рдЕрдЧрд░ <object> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рд╕рдорд╛рди рдореБрджреНрджрд╛

<object type="application/pdf"
    data="/media/examples/In-CC0.pdf"
    width="250"
    height="200">
</object>

рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:

1. https://bugzilla.mozilla.org/show_bug.cgi?id=911444#c53

рдпрд╣рд╛рдБ рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдореБрджреНрджрд╛ рдХреНрдпреЛрдВ рдЦреБрд▓рд╛, рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмреБрдЧреНрдЬрд┐рд▓рд╛ рдореЗрдВ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ !?
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдпрд╣ (рд╕рд╛рдорд╛рдиреНрдп) PDF.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рднреА рдмрдЧ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдПрдХ рд╕реАрдорд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдмрдЧ рдореЗрдВ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╣реИ, рдФрд░ рдПрдХ рдлрд┐рдХреНрд╕ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЗрд╕ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рднреА рдирд╣реАрдВ рд╣реЛрдЧрд╛)ред

@Snuffleupagus рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдмрдЧ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдореВрд▓ рдХрд╛рд░рдг pdf.js рд╣реИ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдирд╣реАрдВ рд╣реИред рдХрд┐рд╕реА рднреА рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░ рдиреЗ рдЗрд╕реЗ рдирд╣реАрдВ рдЫреБрдЖ рд╣реИ рдФрд░ рдореИрдВ рдХрдИ рдмрд╛рд░ рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рдЯрдХрд░рд╛ рдЪреБрдХрд╛ рд╣реВрдБ рдФрд░ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдирд╣реАрдВ

рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ pdf.js рдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореБрджреНрд░рдг, рдХреЗ (15+ рд╡рд░реНрд╖) рд╣реИ print() рдПрдХ рдкреАрдбреАрдПрдл рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд░рд╣рд╛ рд╣реИ рдЬрдм pdf.js рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╣реИ рдкрд┐рдЫрд▓реЗ 5 рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдкреАрдбреАрдПрдл рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рддрд░реАрдХрд╛ред

рдореИрдВ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ pdf.js рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╣реИред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ pdf.js рдЕрдзрд┐рдХ рдЖрд╕рд╛рдиреА рд╕реЗ print() рд▓рд┐рдП рд╕реБрди рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкреАрдбреАрдПрдл рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

window.onbeforeprint = function() {
    console.log('This will be called before the user prints.');
};
window.onafterprint = function() {
    console.log('This will be called after the user prints');   
};

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 6 рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

window.matchMedia('print') рд╕рдВрднрд╡рдд: рдмрдЧ рдХреЗ рдмрд╛рдж рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред https://bugzilla.mozilla.org/show_bug.cgi?id=774398 рддрдп рдпрд╛ рд╣рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдирд╣реАрдВ рд╣реИред

рдпрд╣ # 5397 рдХрд╛ рдПрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╣реИ - рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдореВрд▓ рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ pdf.js рдХреЛ " рд╕рдВрд╕рд╛рдзрди: //pdf.js " рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдПрдореНрдмреЗрдбрд┐рдВрдЧ рдкреНрд░рд┐рдВрд╕рд┐рдкрд▓ рд╕реЗ рдЕрд▓рдЧ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╛рди-рдореВрд▓ рдиреАрддрд┐ рдкреНрд░рд┐рдВрдЯ рдФрд░ рдЕрдиреНрдп рдЧреБрдгреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рд░реЛрдХрддреА рд╣реИред рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдпрд╣ рдПрдХ iframe рдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред

@Snuffleupagus рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб pdf.js рдмрдВрдбрд▓ рдХрд╛ рд╡реЗрдм рдлрд╝реЛрд▓реНрдбрд░ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ?
рдХреЗрд╡рд▓ рдореБрджреНрд░рдг рддрд░реНрдХ рдЬреЛ рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рд╡рд╣ https://github.com/mozilla/pdf.js/blob/master/web/firefox_print_service.js рдореЗрдВ рд╣реИ

# 5397 рдХреЗ рд╕рд╛рде рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдкреАрдбреАрдПрдлрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдореБрджреНрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдзрд╛ рд╣реИ рдФрд░ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдзрд╛ рд╣реИ рдЬрдм рдкреАрдбреАрдПрдл рдЗрд╕ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдЯрд┐рдХрдЯ рдореЗрдВ рд╣реИред @automatedbugreportingfacility рдЖрдк рд╕рд╣реА рд╣реИрдВ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ # 5397 рдХреЗ рдмрд╛рдж рд╕реЗ рдкрд╛рдиреА рдХреА рдирд┐рдХрд╛рд╕реА рд╣реЛ рд░рд╣реА рд╣реИред

URI рдХреЛ рдмрджрд▓рдирд╛ https://bugzilla.mozilla.org/show_bug.cgi?id=911444#c53 рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдПрдХ рдлрд┐рдХреНрд╕ рдХреЗ рдмрджрд▓реЗ (5 рд╕рд╛рд▓ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддрд╛), рдЪрд╛рд░реЛрдВ рдУрд░ рдПрдХ рдХрд╛рдо рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ beforeprint рдЗрд╡реЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдФрд░ pdf.js. рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрджреНрд░рдг рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рдпрджрд┐ рд╕рдорд╛рди-рдореВрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЗ рдХрд╛рд░рдг, beforeprint рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рджреНрд╡рд╛рд░рд╛ рдЕрд╡рд░реБрджреНрдз рд╣реИ, рддреЛ рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдПрдХ рдХрд╛рдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рдкрд╣рд▓реЗ рдШрдЯрдирд╛ рдХреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ pdf.js. рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрджреНрд░рдг рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛

рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реЛ? beforeprint рдЗрд╡реЗрдВрдЯ рдХреЛ рдПрдореНрдмреЗрдб рдХрд┐рдП рдЧрдП pdf.js рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд░ рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ print() рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рддрдм рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ред рдЖрдк рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ "рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛" рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рдЪреБрдХрд╛ рд╣реИред

Pdf.js рдкрдХреНрд╖ рдкрд░ рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣рд▓ рдПрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ onmessage рд╣реИрдВрдбрд▓рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрджреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рд▓рд┐рдП pdfWindow.postMessage("print"); , рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╡рд╛рдВрдЫрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдБред

Pdf.js рдХреА рдУрд░ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд░реНрдХрдЕреЙрд░реНрдбрд░ pdfWindow.postMessage ("рдкреНрд░рд┐рдВрдЯ") рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдореБрджреНрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирдореЗрд╕реЗрдЬ рд╣реИрдВрдбрд▓рд░ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛;, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдпрд╣ рдПрдХ рд╡рд╛рдВрдЫрд┐рдд рд╕рдорд╛рдзрд╛рди рд╣реИ рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИред

@automatedbugreportingfacility uf, рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИред рд╕рдВрдкреВрд░реНрдг рд╕рдорд╛рдзрд╛рди рдЕрдиреНрдп рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд╕рд╛рде DOM API рд╕рдорд╛рдирддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдЖрдк PDF рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрдВрдЯреЗрдирд░ рдкрд░ .print() рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрдВрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ pdf.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреНрдпреЛрдВрдХрд┐ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ pdf.js рдФрд░ print() рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ pdf.js рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдкреАрдбреАрдПрдл рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдмрди рдЧрдпрд╛ рд╣реИред

рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдареАрдХ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреАрдбреАрдПрдлрд╝ рдирд╣реАрдВред рдЬреЗрдПрд╕ рдпрд╛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ - рдпрд╛ рддреЛ рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА ЁЯШГ

[...] рддрдм рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рд╣реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рд╢рд╛рдпрдж рдЖрдк рдореЗрдВ рд╕реЗ рдХреЛрдИ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА https://github.com/mozilla/pdf.js/issues/10290#issuecomment -441132851 рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЗрд╕ рднрдВрдбрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ https://github.com/mozilla/ndf/js/issues/ 10290 # рдЬрд╛рд░реАрдХрд░рдг -441202543 рд░реВрдкрд░реЗрдЦрд╛ (рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ) рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИред рдлрд┐рд░, рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдореБрджреНрджреЛрдВ рдХреЛ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ / рд╡рд╛рдВрдЫрдиреАрдп рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕реБрд░рдХреНрд╖рд╛ рддреНрд░реБрдЯрд┐ рдХреЗ .print рдХреЛ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП, рдКрдкрд░ рдмрддрд╛рдП рдЧрдП resource://pdf.js рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рдХреЛрдИ pdf.js рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдкрд╕реНрдЯреНрд░реАрдо рдмрдЧ # 5397 рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

@Snuffleupagus рдФрд░ @automatedbugreportingfacility рд╕рд┐рд░реНрдл рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд╣ рд░рд╣реЗ рд╣реИрдВред

Pdf.js рдореЗрдВ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬрдм print() рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЙрдкрд░реЛрдХреНрдд рд╕рд╣реА рд╣реИ?

рд╣рд╛рдВ, рдЖрдк рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд╕реБрд░рдХреНрд╖рд╛ рддрдВрддреНрд░ рдореЗрдВ рдЫреЗрдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдПрдХ рдЕрд░реНрдз-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ pdf.js рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдЧрд▓рддреА рдереА, рд▓реЗрдХрд┐рди рдХреЛрдИ рдкреАрдЫреЗ рдирд╣реАрдВ рд╣рдЯ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдореЛрдЬрд╝рд┐рд▓рд╛ рджреБрдЦреА рд╣реЛрдХрд░ "рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЛрд░реНрдЯрд╛рд░" рдЬреИрд╕реА рдЕрд▓реНрдкрдХрд╛рд▓рд┐рдХ рдЪреАрдЬреЛрдВ рдкрд░ рдкреИрд╕рд╛ рдЦрд░реНрдЪ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдореИрдВ рдкреАрдЫреЗ рд╣рдЯрд╛ред

рдореЛрд░реНрдЯрд╛рд░ рдкреНрд░рдпреЛрдЧ рд╕рдВрдкрдиреНрди рд╣реЛ рдЧрдпрд╛ рд╣реИред рдореЛрдЬрд╝рд┐рд▓рд╛ рдкреАрдбреАрдПрдл рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдкреАрдбреАрдПрдл рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмреЛрдЭ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рддрд╛ рд╣реИ рдФрд░ рдЧреЗрдХреЛ рдореЗрдВ рдПрдХ рдХрд╛рд▓реА рдорд┐рд░реНрдЪ рдПрдкреАрдЖрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред

рдЦреИрд░ рдХрдо рд╕реЗ рдХрдо рдореЛрдЯрд╛рд░ рдмрдВрдж рд╣реИ ред

рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрдВрдж рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ (рдЖрдк) рдХрд░реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдпрд╣рд╛рдВ 2 pdf.js рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдорд┐рд▓реЗ рд╣реИрдВ, рдореЗрд░реЗ рджреЛ рд╕рд╡рд╛рд▓ рд╣реИрдВ рдЬреЛ рд╕рдВрднрд╡рддрдГ https://bugzilla.mozilla.org/show_bug.cgi?id=911444 рдкрд░ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВред

  1. рдпрджрд┐ рдПрдХ рд╡рд┐рд╢реЗрд╖ рджрд╕реНрддрд╛рд╡реЗрдЬ (_resource: // рдкреНрд░реЛрдЯреЛрдХреЙрд▓_) рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рддреЛ PDF.js рдХреЛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
  2. рдЬрдм рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ pdf.js, рдЯреВрд▓рдмрд╛рд░ рдЖрджрд┐ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ рддреЛ рдкреЗрдкрд░ рдкреНрд░рд┐рдВрдЯ рд▓реЗрдЖрдЙрдЯ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ?

рд╕реЗрдореА-рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░рд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ pdf.js рдХреЛ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рдЧрд▓рддреА рдереА, рд▓реЗрдХрд┐рди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ

@automatedbugreportingfacility рдпрд╣ рдирд┐рд░реНрдгрдп рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдХреНрдпреЛрдВ рд╣реИ?

рдХреНрдпрд╛ рдЖрдк pdf.js рдФрд░ рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреЗ рд╕рдорд╛рди рдореВрд▓ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХреЗ рдФрд░ PDF рдлрд╝рд╛рдЗрд▓ рдХреЛ PDF.js рдореЗрдВ рдлрд╝реАрдб рдХрд░ рд╕рдХреЗрдВ?

<iframe id="pdf" src="some-same-origin.pdf"></iframe>
<script>
  document.getElementById('pdf').print()
</script>

рдмреЛрдирд╕ рдЕрдВрдХ, рдпрджрд┐ pdf.js beforeprint рд▓рд┐рдП рд╕реБрдирддреЗ рд╣реИрдВ, рддреЛ рдИрд╡реЗрдВрдЯ рд░рджреНрдж рдХрд░реЗрдВ рдФрд░ <canvas> (PDF рджрд╕реНрддрд╛рд╡реЗрдЬрд╝) рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдВ рдФрд░ FIrefox pdf.js UI рдХреЛ рдкреНрд░рд┐рдВрдЯ рди рдХрд░рдиреЗ рджреЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЕрдЧрд░ pdf.js рдПрдХ рдирд┐рдпрдорд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рдерд╛, рддреЛ рдЖрдк рдореВрд▓ рд╡рд┐рдВрдбреЛ рдХреЛ рд╕реБрди рд╕рдХреЗрдВрдЧреЗред

window.opener.addEventListener('beforeprint', event => {
  event.preventDefault()

  window.print() // pdf.js overrides the native print function already
})

рдпрд╛ pdf.js рдХреЛ рдЗрд╕рдореЗрдВ рдмрджрд▓реЗрдВ:

let print = (window.opener || window).print;
window.print = function print() {
  if (activeService) {
    console.warn('Ignored window.print() because of a pending print job.');
    return;
  }
  ...

рджреВрд╕рд░реЗ рд╡рд┐рдЪрд╛рд░ рдкрд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ pdf.js рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╕реЗ рдкреНрд░рд┐рдВрдЯ рдирд┐рдЧрд▓ рд▓реЗрдВрдЧреЗ рдЬреЛ рдХрд┐ рд╣рдо рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдЕрд╕рд▓ рдореЗрдВ pdf.js рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИред рд╣рдореЗрдВ рдмрд╕ рдкреАрдбреАрдПрдл рдХреА рдЬрд░реВрд░рдд рд╣реИред рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдкрд░ print() рднреЗрдЬреЗрдВ рдЬреЛ рдХрд┐ pdf.js.

_Pdf_print_service.js_ рдХрд╛ рдЕрдВрд╢ (https://mozilla.github.io/pdf.js/web/viewer.html рдкрд░ рдкрд╛рдпрд╛ рдЧрдпрд╛):

let print = window.print;
window.print = function print() {
  if (activeService) {
    console.warn('Ignored window.print() because of a pending print job.');
    return;
  }
  ensureOverlay().then(function() {
    if (activeService) {
      overlayManager.open('printServiceOverlay');
    }
  });

  try {
    dispatchEvent('beforeprint');
  } finally {
    if (!activeService) {
      console.error('Expected print service to be initialized.');
      ensureOverlay().then(function() {
        if (overlayManager.active === 'printServiceOverlay') {
          overlayManager.close('printServiceOverlay');
        }
      });
      return; // eslint-disable-line no-unsafe-finally
    }
    let activeServiceOnEntry = activeService;
    activeService.renderPages().then(function() {
      return activeServiceOnEntry.performPrint();
    }).catch(function() {
      // Ignore any error messages.
    }).then(function() {
      // aborts acts on the "active" print request, so we need to check
      // whether the print request (activeServiceOnEntry) is still active.
      // Without the check, an unrelated print request (created after aborting
      // this print request while the pages were being generated) would be
      // aborted.
      if (activeServiceOnEntry.active) {
        abort();
      }
    });
  }
};

function dispatchEvent(eventType) {
  let event = document.createEvent('CustomEvent');
  event.initCustomEvent(eventType, false, false, 'custom');
  window.dispatchEvent(event);
}

function abort() {
  if (activeService) {
    activeService.destroy();
    dispatchEvent('afterprint');
  }
}

@Ugoku рдФрд░ @jtraulle рдХреГрдкрдпрд╛ рдЗрд╕реЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд░рдбрд╛рд░ рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП https://bugzilla.mozilla.org/show_bug.cgi?id=911444 рдкрд░ рд╡реЛрдЯ рдХрд░реЗрдВред

рдзрдиреНрдпрд╡рд╛рдж @dotnetCarpenter , рдореИрдВрдиреЗ Bugzilla рдкрд░ рдорддрджрд╛рди рдХрд┐рдпрд╛ рд╣реИ ar

рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдПрдХ iframe рдореЗрдВ рдкреАрдбреАрдПрдл рд╕рд╣рд┐рдд рдЗрд╕реЗ рд╣рд▓ (рдХреБрдВрдЬреА рдкреАрдбреАрдПрдл рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╣реИ):

`$ ("ред Div_class ")ред рдПрдЪрдЯреАрдПрдордПрд▓ ( '