描述
尝试使用mark标签在注释层中突出显示文本时出现奇怪的字体行为。
我在react-bootstrap模态对话框中显示pdf。 我正在尝试使用Page组件的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和canvas,但是看到了相同的行为。
在#189中遇到了相同的行为,但是我没有任何变通办法。 我也看过#212。
环境
你好
由于PDF的呈现方式,文本层并不总是能够与下面的文本完全匹配。 我为此感到遗憾:((Mozilla有很多技巧,我正在使用这些技巧来对齐文本。我可以建议实现与Mozilla相似的实现<mark
>,因此使用透明文本以及半透明的背景。这样,正确对齐,正确呈现的文本将“照亮”所选内容。
我会试一试。 谢谢你的建议。
这就是我在自己的测试套件BTW中使用的方法:)随意复制和粘贴!
这工作得很好。 非常感谢您的建议,由于某种原因,人们对CSS的想法还不够。 感谢您在图书馆的工作! 使用它是一种荣幸。
最有用的评论
这就是我在自己的测试套件BTW中使用的方法:)随意复制和粘贴!
https://github.com/wojtekmaj/react-pdf/blob/5f9a1928a4ce49f97bca2b5d5e68df63c99725c8/test/Test.less#L126 -L132