
Estou usando o zathura, pois gosto de sua abordagem minimalista, mas também mudaria para o mupdf ou qualquer outra coisa se isso resolvesse meu problema.
Preciso destacar cada palavra (em documentos PDF e epub) uma por uma, do início ao fim, porque posso me concentrar melhor no texto se houver algum tipo de movimento nele. Minha abordagem teria sido realizar uma pesquisa regex que correspondesse a cada palavra, mas nem o zathura nem o mupdf suportam regex nas pesquisas. Existe uma maneira de fazer isso?
Eu tentaria fazer um fork do zathura, mas para ser honesto, eu realmente não quero gastar tanto tempo se houver outro visualizador de documentos mínimo compatível com Gnu/Linux que faça o que eu preciso. E se houver alguma maneira de usar ferramentas de terminal, como pdfgrep
para destacar os resultados no zathura, isso também funcionaria.
Responder1
Seleção de texto básico
De acordo comPágina da Wikipédia de Zathura:
Zathura pode pesquisar texto e copiar texto para a seleção X primária
Isso implica que a capacidade de selecionar texto enquanto você lê está incorporada, embora provavelmente exija o mouse (será difícil encontrar uma solução para a seleção controlada pelo teclado).
Quão minimalista você precisa? eu usoAtril, um garfo ligeiramente mais leve deEvidência(o visualizador de documentos GNOME). Atril foi feito como parte doÁrea de trabalho MATE(uma continuação do GNOME 2). É bem leve, embora ainda tenha uma dependência do GTK+.
Outra opção éXpdfaplicativo. Veja tambémLista de softwares PDF da Wikipedia § Linux e Unix.
Regex
A única implementação de pesquisa regex (utilizável) que conheço, além de ferramentas de linha de comando comopdfgrep, é na verdade o seu navegador da web. Isso não é tão utilizável, mas aqui está uma solução no Firefox: Abra um PDF no Firefox e abra o console Javascript das ferramentas do desenvolvedor (F12 ou Ctrl + Shift + K). Execute estes comandos:
» pdf = document.getElementById("viewer").innerText.replace(/[ \t]+/g, " ");
» function grep(what, context=100) { return pdf.match(RegExp(`[\\s\\S]{0,${context}}${what}[\\s\\S]{0,${context}}`), "img"); }
» grep("put your regex here")
» grep("get more context", 300)
Observe que você terá que escapar das barras invertidas. O grep
comando possui um segundo argumento opcional, o número de caracteres de contexto a serem fornecidos em cada lado (padrão=100).
O Chrome e outros navegadores com visualizadores de PDF integrados devem ser bastante semelhantes, mas você terá que descobrir qual objeto HTML contém o conteúdo real do PDF (é o id="viewer"
elemento do Firefox, não tenho certeza sobre os outros - na pior das hipóteses, apenas use document.body
em vez de document.getElementById("viewer")
. Você pode combinar itens no índice.)
Responder2
Se não me engano Adobe Acrobat Reader
tem uma função chamada read out loud
que seleciona cada palavra do início ao fim.