2010-08-25 16 views
51

Hej, od jakiegoś czasu szukam przeglądarki plików pdf dla linii poleceń.Przeglądarka CLI pdf dla linux

Ponieważ lubię pracować bez X na Linuksie i często pracuję na zdalnym komputerze, chciałbym mieć narzędzie do czytania plików pdf. Istnieje wiele naprawdę dobrych programów graficznych (evince, okular, acroread, ...) do wykonania zadania, więc pomyślałem, że powinno być przynajmniej jedno przyzwoite narzędzie w trybie tekstowym. Ale nie wiem nawet o bzdurnym!

Obecnie albo uruchamiam X tylko po to, aby przeczytać pdf, albo użyć pdftohtml + lynx. Jednak ten ostatni nie daje bardzo dobrego wyniku, a większość dokumentów jest po prostu nieczytelna, szczególnie jeśli zawierają wzór matematyczny.

Google jest pełne ludzi, którzy twierdzą, że nie jest to możliwe lub sugeruje wersję pdftohtml.

Zdaję sobie sprawę, że nie jest to dokładnie kwestia programowania, ale obecnie rozważam rozpoczęcie projektu wdrożenia takiego programu, chyba że jest już dobry.

Dzięki za wszelkie sugestie.

+0

Jak obsługiwać pliki PDF które są zbudowane ze źródła obrazu (bez tekstu), co jest zbyt częste? –

+0

Niektóre pliki PDF są konwertowane na zły tekst !, albo tylko kształty, albo wynik OCR, który jest ukryty nad obrazem źródłowym tylko ze względu na wybór. Które nigdy nie można przekonwertować na dobry tekst! Jak uważasz, że należy to zrobić? –

+0

@ 0xA3: Cóż, istnieją biblioteki zdolne do renderowania grafiki na konsolę - libcaca i aalib. Możliwe jest nawet oglądanie filmów w ascii art. Nie słyszałem jednak o podobnej przeglądarce plików PDF. Możliwe jest również renderowanie obrazów do framebuffera przy użyciu svgalib. Nie słyszałem jednak o przeglądarce CLI pdf. Oczywiście można to zrobić, ale nie jestem pewien, czy ktoś rzeczywiście to robił. Aha, z libcaca/aalib "grafika" pdf będzie ledwie czytelna. – SigTerm

Odpowiedz

63

Cześć Myślę, że nie trzeba napisać program dla celów Znaczy odczytu pliku PDF w trybie konsoli, ponieważ komenda „mniej” już zrobi to za Ciebie. Więc używaj go i po prostu ciesz się.

mniej "nazwa pliku pdf"

+0

Świetna pierwsza odpowiedź! – bitmask

+7

Czysta sztuczka! Na archlinuksie musiałem zainstalować "lesspipe", aby to działało, inne dystrybucje mogą go domyślnie zainstalować. +1 – Giacomo

+3

nie jest w formacie binarnym pdf?Tekst stworzony przez 'less' powinien być zniekształcony – akhyar

0

Działa to tylko wtedy, gdy dokument PDF ma strukturę, tzn. Jest to dokument tagged PDF.

Jest to wymagane, aby uzyskać prawidłową kolejność odczytu obiektów tekstowych w dokumencie.

Oznaczone dokumenty PDF pozwalają również na ponowne przesłanie dokumentu, chociaż nie jestem świadomy żadnego narzędzia wykonującego to z wyjściowym wierszem poleceń.

13

Ok, prosiłeś o poznanie nawet "bzdurnych". Oto dwa (sam zdecydować o ich odpowiednim crappiness):

pierwsze: Ghostscript'stxtwrite urządzenie wyjściowe

gs \ 
    -dBATCH \ 
    -dNOPAUSE \ 
    -sDEVICE=txtwrite \ 
    -sOutputFile=- \ 
    /path/to/your/pdf 

drugie: XPDF'spdftotext CLI narzędzie (lepiej niż Ghostscript):

pdftotext \ 
    -f 13 \ 
    -l 17 \ 
    -layout \ 
    -opw supersecret \ 
    -upw secret \ 
    -eol unix \ 
    -nopgbrk \ 
    /path/to/your/pdf 
    - |less 

Zostanie wyświetlony zakres stron 13 (f irst strony) do 17 (l strona AST), zachować układ chronionego dwukrotnie hasło nazwie pliku PDF (przy użyciu użytkowników i właściciel haseł tajny i SuperSecret), z konwencją Unix EOL, ale bez wkładania pagebreaks między stronami PDF, przepuszczonymi przez mniej ...

pdftotext -h wyświetla wszystkie dostępne opcje linii poleceń.

Oczywiście oba narzędzia działają tylko w przypadku części tekstowych plików PDF (jeśli takowe istnieją). Aha, i wzór matematyczny również nie będzie działać zbyt dobrze ... ;-)


Edycja: miałem błędnie wpisane komendy powyżej (pierwotnie używając pdftops zamiast pdftotext).

+0

Żadna z nich nie działa dla mojego systemu, próbowałem poprawić argumenty, ale nie wyświetlił się tekst, ale ps w formacie pliku, a ponieważ nie jestem drukiem ... – bitmask

+0

D'oh! Błędnie wpisałem polecenie. Użyj 'pdftotext' zamiast' pdftops' ... (będę edytować odpowiedź, aby odzwierciedlić tę poprawkę). –

+0

Podobnie 'pdftohtml' tworzy kopię HTML, którą można przeglądać za pomocą przeglądarki internetowej w trybie tekstowym, na przykład' w3m' lub 'links'. – Abbafei

5
+0

To jest niesamowite! Chociaż musisz być rootem, którego nie rozumiem, ale w porządku. Nadal wspaniały. – bitmask

+0

Sprawdź uprawnienia urządzenia framebuffer: '$ ls -l/dev/fb0 crw-rw ---- 1 root video ...'. Być może trzeba być w grupie 'video', aby mieć dostęp użytkownika do bufora ramki. – Giacomo

3

fbpdf to przeglądarka plików ramowych PDF.

Jest też widelec, jfbpdf, ale w tej chwili nie mogę go uruchomić.

4

Nawiasem mówiąc, im zawsze w tej samej sytuacji i używam mc (Midnight Commander), który obsługuje tekst pdf jest bardzo dobrze ... Wystarczy przejrzeć plik (F3) w MC