PDF 리더에서 정규식 검색

PDF 리더에서 정규식 검색

나는 최소한의 접근 방식을 좋아하기 때문에 zathura를 사용하고 있지만 문제가 해결된다면 mupdf 등으로 전환할 것입니다.

PDF와 epub 문서에서는 어떤 동작이 있으면 텍스트에 더 잘 집중할 수 있기 때문에 각 단어를 처음부터 끝까지(PDF 및 epub 문서에서) 하나씩 강조 표시해야 합니다. 내 접근 방식은 모든 단어와 일치하는 정규식 검색을 수행하는 것이었지만 zathura나 mupdf는 검색에서 정규식을 지원하지 않습니다. 이를 수행할 수 있는 방법이 있습니까?

나는 zathura를 포크하려고 노력할 것이지만, 솔직히 내가 필요한 것을 수행하는 또 다른 최소한의 Gnu/Linux 호환 문서 뷰어가 있다면 그렇게 많은 시간을 보내고 싶지 않습니다. 터미널 도구(예: pdfgrep zathura에서 결과 강조 표시) 를 사용하는 방법이 있는 경우에도  해당 작업을 수행할 수 있습니다.

답변1

기본 텍스트 선택

~에 따르면Zatura 위키피디아 페이지:

Zathura는 텍스트를 검색하고 기본 X 선택 항목에 텍스트를 복사할 수 있습니다.

이는 마우스를 사용해야 할 수도 있지만 읽는 동안 텍스트를 선택하는 기능이 내장되어 있음을 의미합니다(키보드 제어 선택에 대한 솔루션을 찾기가 어려울 것입니다).

얼마나 미니멀해야 합니까? 나는 사용한다아트릴, 약간 더 가벼운 무게의 포크보여주다(그놈 문서 뷰어). 아트릴은 다음과 같다MATE 데스크톱 버전(그놈 2의 계속). 여전히 GTK+ 종속성이 있지만 매우 가볍습니다.

또 다른 옵션은Xpdf애플리케이션. 당신은 또한 볼 수 있습니다Wikipedia의 PDF 소프트웨어 목록 § Linux 및 Unix.

정규식

다음과 같은 명령줄 도구 외에 내가 아는 유일한 (사용 가능한) 정규식 검색 구현입니다.pdfgrep, 실제로는 웹 브라우저입니다. 이것은 잘 작동하지 않지만 Firefox에는 해결책이 있습니다. Firefox에서 PDF를 연 다음 개발자 도구 Javascript 콘솔(F12 또는 Ctrl+Shift+K)을 엽니다. 다음 명령을 실행하십시오.

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

백슬래시를 이스케이프 처리해야 합니다. 이 grep명령에는 각 측면에 제공할 컨텍스트 문자 수인 선택적 두 번째 인수가 있습니다(기본값 = 100).

PDF 뷰어가 내장된 Chrome 및 기타 브라우저는 매우 유사해야 하지만 어떤 HTML 개체가 실제 PDF 콘텐츠를 보유하고 있는지 파악해야 합니다(이것은 id="viewer"Firefox의 요소이며 다른 브라우저에 대해서는 확실하지 않습니다. 최악의 경우에는 다음을 사용하십시오. . document.body대신 document.getElementById("viewer")디렉토리의 항목을 일치시킬 수 있습니다.

답변2

제 기억이 맞다면 처음부터 끝까지 각 단어를 선택하는 Adobe Acrobat Reader함수가 있습니다 .read out loud

관련 정보