React-pdf: рдЪрд┐рд╣реНрди рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрд╢рди рдкрд░рдд рдореЗрдВ рдкрд╛рда рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 21 рдЬреВрди 2019  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: wojtekmaj/react-pdf

рд╡рд┐рд╡рд░рдг

рдЪрд┐рд╣реНрди рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрд╢рди рдкрд░рдд рдореЗрдВ рдкрд╛рда рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВред

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

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкреБрди: рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо:
рдХреЛрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

<Modal show={this.state.showPDF}

    onHide={this.handleClose} dialogClassName="modal-100w">
    <Modal.Header closeButton>
    </Modal.Header>
    <Modal.Body style={{margin: "auto"}}>
    <Document file={this.state.pdfURL} onLoadSuccess={(page) => this.onDocumentLoadSuccess(page)}>
        <Page  renderMode="svg" scale={1.0} pageNumber={1} customTextRenderer={(textItem) => this.customTextRenderer(textItem)} onLoadSuccess={(page) => this.onPageLoadSuccess(page)} />
        </Document>
    </Modal.Body>
</Modal>

рдФрд░ customTextRenderer рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:

return textItem.str
              .split(this.terms[0])
              .reduce((strArray, currentValue, currentIndex) => (
                currentIndex === 0
                  ? ([...strArray, currentValue])
                  : ([...strArray, (
                    // eslint-disable-next-line react/no-array-index-key
                    <mark key={currentIndex}>
                      {this.terms[0]}
                    </mark>
                  ), currentValue])
    ), []);

    }

(рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдЖрдкрдХреЗ рдирдореВрдиреЗ рдореЗрдВ рд╕реЗ рдПрдХ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ)

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░

рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдП рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рд╢реЛ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рдФрд░ рдПрдХ рд╣реА рдлрд╝реЙрдиреНрдЯ рдореЗрдВ рдФрд░ рдПрдХ рд╣реА рд╕реНрдерд╛рди рдкрд░ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА
рдореИрдВ рджреЛрдиреЛрдВ svg рдФрд░ рдХреИрдирд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рджреЗрдЦреЗрдВред

# 189 рдореЗрдВ рд╕рдорд╛рди рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдХрд┐рд╕реА рднреА рдХрд╛рдо рдХреЗ рд╕рд╛рде рдХреЛрдИ рднрд╛рдЧреНрдп рдирд╣реАрдВ рдерд╛ред рдореИрдВрдиреЗ # 212 рднреА рджреЗрдЦрд╛ рд╣реИред

Screen Shot 2019-06-21 at 11 33 00 AM

рд╡рд╛рддрд╛рд╡рд░рдг

  • рдмреНрд░рд╛рдЙрдЬрд╝рд░ (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ) [рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХреНрд░реЛрдо 57, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 59]: рдореИрдВрдиреЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ рджреЛрдиреЛрдВ рдХреНрд░реЛрдо рдХреЗ рдирд╡реАрдирддрдо рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдЧрдбрд╝рдмрдбрд╝ рд╣реИред
  • рд░рд┐рдПрдХреНрдЯ-рдкреАрдбреАрдПрдл рд╕рдВрд╕реНрдХрд░рдг [рдЬреИрд╕реЗ 3.0.4]:
  • рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг [рдЙрджрд╛ред 16.3.0]:
  • рд╡реЗрдмрдкреИрдХ рд╕рдВрд╕реНрдХрд░рдг (рдпрджрд┐ рд▓рд╛рдЧреВ рд╣реЛ) [рдЬреИрд╕реЗ 4.16.2]:

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

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ BTW рдореЗрдВ рдЙрдкрдпреЛрдЧ :) рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕!

https://github.com/wojtekmaj/react-pdf/blob/5f9a1928a4ce49f97bca2b5d5e68df63c99725c8/test/Test/less#L126 -L132

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

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

рдореИрдВ рдПрдХ рд╢реЙрдЯ рджреЗрддрд╛ рд╣реВрдБред рд╕рд▓рд╛рд╣ рдХреЗ рд▓рд┐рдпреЗ рдзрдиреНрдпрд╡рд╛рджред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдЯреЗрд╕реНрдЯ рд╕реВрдЯ BTW рдореЗрдВ рдЙрдкрдпреЛрдЧ :) рдХреЙрдкреА рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕!

https://github.com/wojtekmaj/react-pdf/blob/5f9a1928a4ce49f97bca2b5d5e68df63c99725c8/test/Test/less#L126 -L132

рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд┐рдпрд╛ред рд╕реБрдЭрд╛рд╡ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╕реЛрдЪрд╛ рдерд╛ред рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдкрд░ рдЖрдкрдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЦреБрд╢реА рдХреА рдмрд╛рдд рд╣реИред

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

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

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

Solitaryo picture Solitaryo  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

theHasanas picture theHasanas  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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