React-pdf: Comportamento estranho da fonte ao tentar destacar o texto na camada de anotação com a marca de marcação.

Criado em 21 jun. 2019  ·  4Comentários  ·  Fonte: wojtekmaj/react-pdf

Descrição

Comportamento estranho da fonte ao tentar destacar o texto na camada de anotação com a marca de marcação.

Estou exibindo um pdf em uma caixa de diálogo modal react-bootstrap. Estou tentando destacar termos de pesquisa na página usando o prop customTextRenderer do componente Página. O texto destacado é renderizado em uma fonte diferente e não exatamente no local certo.

Passos para reproduzir

Passos para reproduzir o comportamento:
O código é parecido com este:

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

e customTextRenderer tem esta aparência:

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

    }

(tirado principalmente de uma de suas amostras, eu acho)

Comportamento esperado

O texto destacado deve estar no mesmo local, com a mesma fonte e no mesmo local.

Informação adicional
Eu tentei com svg e canvas, mas vi o mesmo comportamento.

O mesmo comportamento foi encontrado no # 189, mas não tive sorte com nenhuma solução alternativa. Eu também olhei para # 212.

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

Meio Ambiente

  • Navegador (se aplicável) [por exemplo, Chrome 57, Firefox 59]: Eu testei o mais recente de ambos os chrome no firefox. O comportamento é problemático em ambos.
  • Versão React-PDF [por exemplo, 3.0.4]:
  • Versão do React [por exemplo, 16.3.0]:
  • Versão do Webpack (se aplicável) [por exemplo, 4.16.2]:
question

Comentários muito úteis

Isso é o que eu uso em meu próprio conjunto de testes, a propósito :) Fique à vontade para copiar e colar!

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

Todos 4 comentários

Oi,
devido à forma como os PDFs são renderizados, nem sempre é possível que a camada de texto corresponda exatamente ao texto abaixo. Sinto muito sobre isso :( Há muitos truques que a Mozilla e eu estamos usando para alinhar este texto. O que posso sugerir é implementar <mark > de maneira semelhante à que a Mozilla faz, então com texto transparente e um fundo semitransparente. Dessa forma, o texto devidamente alinhado e renderizado "brilhará" na seleção.

Vou tentar. Obrigado pela sugestão.

Isso é o que eu uso em meu próprio conjunto de testes, a propósito :) Fique à vontade para copiar e colar!

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

Funcionou perfeitamente. Muito obrigado pela sugestão, por algum motivo não pensei o suficiente sobre o CSS. E obrigado pelo seu trabalho na biblioteca! Foi um prazer usá-lo.

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Kerumen picture Kerumen  ·  3Comentários

shivekkhurana picture shivekkhurana  ·  4Comentários

webguru103 picture webguru103  ·  3Comentários

varand-pez picture varand-pez  ·  3Comentários

theHasanas picture theHasanas  ·  5Comentários