Pdf.js: рдПрд╕рд╡реАрдЬреА рдкрде рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ 2 рдиреЛрдбреНрд╕ рдореЗрдВ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 6 рдлрд╝рд░ре░ 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mozilla/pdf.js

рдпрд╣рд╛рдВ рд╕рдВрд▓рдЧреНрди рдХрд░реЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд) рдпрд╛ рдкреАрдбреАрдПрдл рдлрд╛рдЗрд▓ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ:
рдЯреЗрд╕реНрдЯ4.рдкреАрдбреАрдПрдл

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

  • рд╡реЗрдм рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдФрд░ рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: рдХреНрд░реЛрдо 56.0.2924.76
  • рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдЙрд╕рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг: рд▓рд┐рдирдХреНрд╕ рдорд┐рдВрдЯ 18.3
  • PDF.js рд╕рдВрд╕реНрдХрд░рдг: рдкреНрд░рддрд┐рдмрджреНрдз c0d6e46e392b327996eb0964b7932cb5bdde1727
  • рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИ: рдирд╣реАрдВ

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

  1. "рдиреЛрдб pdf2svg.js test4.pdf" рдЪрд▓рд╛рдПрдБ
  2. рдЖрдЙрдЯрдкреБрдЯ test4.1.svg рдХреЛ рдХреНрд░реЛрдо рдореЗрдВ рд▓реЛрдб рдХрд░реЗрдВ
  3. рдХрдВрд╕реЛрд▓ рддреНрд░реБрдЯрд┐ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рдЖрдк рдЗрд╕реЗ рджреЗрдЦреЗрдВрдЧреЗ:
    chrome_console_error

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреНрдпрд╛ рд╣реИ? (рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝реЗрдВ)
рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдирд╣реАрдВред

рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ? (рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдЬреЛрдбрд╝реЗрдВ)
рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдПрдХ рдкрде 2 рднрд╛рдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЧрдпрд╛ред
рдкреНрд░рд╛рд░рдВрднрд┐рдХ "рдПрдо" рдПрдХ рдиреЛрдб рдореЗрдВ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд "рдПрд▓" рдЕрдЧрд▓реЗ рдиреЛрдб рдореЗрдВ рд╣реИред
рдпреЗ рдПрдХ рд╣реА рдиреЛрдб рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
bad_svg_node

рдХрд┐рд╕реА рджрд░реНрд╢рдХ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░реЗрдВ (рдпрджрд┐ mozilla.github.io/pdf.js рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рд╛рдЗрдЯ рдкрд░ рдпрд╛ Firefox/Chrome рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ):

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

рдореИрдВ OperatorList рдХреЗ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рд╕реВрдЪрд┐рдпрд╛рдВ рд▓рдЧрднрдЧ 1000 рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред

рд╕рд╣реА; рдпрд╣ рд╕рдВрдкреВрд░реНрдг OperatorList (рдЕрд░реНрдерд╛рдд рдкреГрд╖реНрда) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдиреЗ рддрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордЧреНрд░ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдзреНрд╡рдирд┐ рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реИ?

рд╣рд╛рдВ, рдФрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдореЗрдВ рдмрд╣реБрдд рд╡реГрджреНрдзрд┐ рдХрд░реЗрдВ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЗрд╕ рдЪрдВрдХрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛)ред

OperatorList рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░рдВрддрд░ CHUNK_SIZE рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, svg.js рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╣рдордд рд╣реВрдВ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЛ рдХрд╣реАрдВ рдФрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░рд╛, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ рдХреИрдирд╡рд╛рд╕ рдмреИрдХ-рдПрдВрдб рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреВрд░рдЧрд╛рдореА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣: рд▓рдЧрд╛рддрд╛рд░ OPS.constructPath рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ <svg:path> рдиреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХреЛрдИ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдкрде рдкреЗрдВрдЯрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ ...

рдлрд┐рд░, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

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

рдпрд╣ рдмрдЧ #9167 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдкрд░рд╛рдзреА рдпрд╣рд╛рдБ рд╣реИ:
https://github.com/mozilla/pdf.js/blob/a045a00af34b764edda5991d2bcd18541ed60536/src/core/operator_list.js#L533 -L534
рдореИрдВ OperatorList рдХреЗ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рд╕реВрдЪрд┐рдпрд╛рдВ рд▓рдЧрднрдЧ 1000 рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рдХрднреА-рдХрднреА рдЪрдВрдХ рд╕реАрдорд╛ рдХреЛ рдкреАрдбреАрдПрдл рдкрде рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмреАрдЪ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджреЛ OPS.constructPath рдСрдкрд░реЗрдЯрд░реЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдмрд╛рдж рд╡рд╛рд▓рд╛ moveTo рд╢реБрд░реВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдзреНрд╡рдирд┐ рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реИ?

OperatorList рдФрд░ рдЗрд╕рдХреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ CHUNK_SIZE рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, svg.js рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣: рд▓рдЧрд╛рддрд╛рд░ OPS.constructPath рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ <svg:path> рдиреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХреЛрдИ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдкрде рдкреЗрдВрдЯрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ ...

рдореИрдВ OperatorList рдХреЗ рдХрд╛рдордХрд╛рдЬ рд╕реЗ рдмрд╣реБрдд рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реВрдВ рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдСрдкрд░реЗрдЯрд░ рд╕реВрдЪрд┐рдпрд╛рдВ рд▓рдЧрднрдЧ 1000 рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред

рд╕рд╣реА; рдпрд╣ рд╕рдВрдкреВрд░реНрдг OperatorList (рдЕрд░реНрдерд╛рдд рдкреГрд╖реНрда) рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдП рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рддрд┐рдкрд╛рджрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкреГрд╖реНрда рд▓реЛрдб рд╣реЛрдиреЗ рд╕реЗ рд▓реЗрдХрд░ рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рдиреЗ рддрдХ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдордЧреНрд░ рд╕рдордп рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдзреНрд╡рдирд┐ рдкреНрд░рд╢рдВрд╕рдиреАрдп рд╣реИ?

рд╣рд╛рдВ, рдФрд░ рдЗрд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдХреЗрд╡рд▓ рдореВрд▓реНрдп рдореЗрдВ рдмрд╣реБрдд рд╡реГрджреНрдзрд┐ рдХрд░реЗрдВ, рдкреНрд░рднрд╛рд╡реА рд░реВрдк рд╕реЗ рдЗрд╕ рдЪрдВрдХрд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдирд╛)ред

OperatorList рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░рдВрддрд░ CHUNK_SIZE рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, svg.js рдХреЛ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рд╣рдордд рд╣реВрдВ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рддреНрд░реБрдЯрд┐ рдХреЛ рдХрд╣реАрдВ рдФрд░ рд▓реЗ рдЬрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░рд╛, рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ рдХреИрдирд╡рд╛рд╕ рдмреИрдХ-рдПрдВрдб рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рддрд┐рдкрд╛рджрди рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреВрд░рдЧрд╛рдореА рдкреНрд░рднрд╛рд╡ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣: рд▓рдЧрд╛рддрд╛рд░ OPS.constructPath рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ <svg:path> рдиреЛрдб рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХреЛрдИ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдкрде рдкреЗрдВрдЯрд┐рдВрдЧ рдСрдкрд░реЗрдЯрд░ рдирд╣реАрдВ рд╣реИ ...

рдлрд┐рд░, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдЧрд░ рдореИрдВ CHUNK_SIZE рдХреЛ 10000000 рддрдХ рдмрдврд╝рд╛ рджреВрдВ рддреЛ рд╕рдорд╕реНрдпрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рдПрдЧреАред
(рдФрд░ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ)
рдЖрдкрдХреА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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

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

smit-modi picture smit-modi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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

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