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.
Umgebung
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!
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.
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