React-pdf: Seltsames Schriftverhalten beim Versuch, Text in der Anmerkungsebene mit dem Markierungs-Tag hervorzuheben.

Erstellt am 21. Juni 2019  ·  4Kommentare  ·  Quelle: wojtekmaj/react-pdf

Beschreibung

Seltsames Schriftverhalten beim Versuch, Text in der Anmerkungsebene mit dem Markierungs-Tag hervorzuheben.

Ich zeige ein PDF in einem reaktiven Bootstrap-Modaldialog an. Ich versuche, Suchbegriffe auf der Seite mithilfe der customTextRenderer-Requisite der Seitenkomponente hervorzuheben. Der hervorgehobene Text wird in einer anderen Schriftart und nicht ganz an der richtigen Stelle gerendert.

Schritte zum Reproduzieren

Schritte zum Reproduzieren des Verhaltens:
Der Code sieht folgendermaßen aus:

<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>

und customTextRenderer sieht so aus:

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])
    ), []);

    }

(hauptsächlich aus einer Ihrer Proben entnommen, denke ich)

Erwartetes Verhalten

Die hervorgehobene Textshow sollte sich an derselben Stelle und in derselben Schriftart und an derselben Stelle befinden.

Zusätzliche Information
Ich habe es sowohl mit SVG als auch mit Canvas versucht, sehe aber das gleiche Verhalten.

Das gleiche Verhalten wurde in # 189 festgestellt, aber ich hatte kein Glück mit Problemumgehungen. Ich habe mir auch # 212 angesehen.

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

Umgebung

  • Browser (falls zutreffend) [zB Chrome 57, Firefox 59]: Ich habe bei Firefox das neueste von beiden Chrome getestet. Das Verhalten ist in beiden Fällen fehlerhaft.
  • React-PDF-Version [zB 3.0.4]:
  • Version reagieren [zB 16.3.0]:
  • Webpack-Version (falls zutreffend) [zB 4.16.2]:
question

Hilfreichster Kommentar

Das verwende ich übrigens in meiner eigenen Testsuite :) Fühlen Sie sich frei zu kopieren und einzufügen!

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

Alle 4 Kommentare

Hallo,
Aufgrund der Darstellung von PDFs ist es nicht immer möglich, dass die Textebene genau mit dem darunter liegenden Text übereinstimmt. Das tut mir leid :( Es gibt viele Tricks, die Mozilla verwendet, und ich verwende diesen Text, um ihn auszurichten. Ich kann vorschlagen, <mark > ähnlich wie Mozilla zu implementieren, also mit transparentem Text und halbtransparenter Hintergrund. Auf diese Weise "scheint" der richtig ausgerichtete, richtig gerenderte Text durch die Auswahl.

Ich werde das versuchen. danke für den Vorschlag.

Das verwende ich übrigens in meiner eigenen Testsuite :) Fühlen Sie sich frei zu kopieren und einzufügen!

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

Das hat perfekt funktioniert. Vielen Dank für den Vorschlag, aus irgendeinem Grund hatte ich nicht genug über das CSS nachgedacht. Und danke für deine Arbeit an der Bibliothek! Es war mir eine Freude, es zu benutzen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen