Jak wydrukować zwykły plik do pdf z wiersza poleceń


34

W programie gedit drukowanie pliku daje opcję drukowania do pliku, w którym plik można zapisać jako plik pdf. Jak mogę zrobić to samo z wiersza poleceń?

Odpowiedzi:


43

Oto rozwiązanie, które nie obejmuje OpenOffice:

  1. sudo apt-get install enscript

  2. enscript my_text_file.txt -o - | ps2pdf - output.pdf

Istnieje więcej opcji enscript, np. -BPominięcie nagłówka strony. Zobacz man enscriptwszystkie opcje.


1
Dobra alternatywa dla Stefano, szczególnie dla każdego, kto nie korzysta z open / libreoffice, ponieważ unoconv zależy od zainstalowania jednego z nich.
Allan

+1 za miłą odpowiedź, tę, którą miałem zamiar udzielić, właśnie postanowiłem dać taką, która, jak sądzę, doda coś do tego, co już jest.
Sabacon

Czy nie ma wbudowanego programu lub komendy bash, aby to zrobić?
kashminder

1
Dzięki! Działa z większością tekstów, jednak enscript działa tylko ze starym kodowaniem, nie działa na przykład z UTF-8, więc nie można przekonwertować tekstu, jeśli zawiera on na przykład symbol euro (€) ...
Antoine Dusséaux

20

bez instalowania żadnego z wyżej wymienionych programów można po prostu wykonać następujące czynności z już zainstalowanym cupsfilter:

cupsfilter foo.txt > foo.pdf

(opcje itp. znajdują się na stronach podręcznika cupfilter :-))


2
Jedyna odpowiedź, która bez problemu poradziła sobie z moimi plikami tekstowymi UTF8 :) oraz łatwiejsza do zrobienia praktycznie bez zależności
Axel Advento

13

PROSTY SPOSÓB PISANIA

sudo apt-get install cups-pdf enscript

Następnie w tym przypadku uruchom skrypt na pliku za pomocą przełącznika -P i opisu drukarki PDF.

enscript -B -PPDF test.txt

Drukarka z opisem PDF została utworzona podczas instalacji cup-pdf, kiedy użyjesz w tej drukarce kodu, twój dokument zostanie wysłany do drukarki PDF i wydrukowany do pliku, utworzony jako .pdf w katalogu / home / PDF, powyższe polecenie wydrukuje plik tekstowy test.txt jako plik pdf w katalogu PDF.

KORZYSTANIE Z UNOCONV

sudo apt-get install unoconv

Możesz używać unoconv w trybie autonomicznym, co oznacza, że ​​w przypadku braku detektora OpenOffice, uruchomi się własny:

W katalogu, w którym znajduje się plik, uruchom:

unoconv -f pdf test.txt

stworzy to ładnie wyglądający plik pdf z test.txt. w bieżącym katalogu


enscript foo.txt -o bar.pdfdziała całkiem dobrze; dzięki!
Thufir

6

Istnieje program wiersza poleceń, który może konwertować między wszystkimi obsługiwanymi formatami open / libre office o nazwie unoconv, więc jeśli potrzebujesz konwersji wsadowej za pomocą skryptu, przyda się.

sudo apt-get install unoconv

Nie o to prosił OP.
enzotib

2
? OP? kto jest OP i po co głosować, gdy odpowiada na pytanie?
RolandiXor

5

paps jest lepszą alternatywą niż enscript

paps file.txt | ps2pdf - output.pdf

7
Witamy w Ask Ubuntu hwc! Chociaż Twój post odpowiada na pytanie, zawsze lepiej jest podać więcej informacji. Na przykład, dlaczego jest papslepsza alternatywa? A jeśli papsnie jest instalowane domyślnie, jakie jest polecenie, aby je zainstalować? Zawsze możesz edytować swoją odpowiedź, klikając edittuż pod treścią odpowiedzi. Dzięki!
Alaa Ali,

5

Pandoc jest niezbędnym narzędziem do szwajcarskiego noża, jeśli chodzi o konwersję między różnymi językami znaczników. Aby rozpocząć, najpierw zainstaluj konwerter pandoc:

sudo apt-get install pandoc

Ogólna i najczęściej używana składnia pandoc to:

pandoc -f <from format> -t <to format> <source file>

Pamiętaj, że musisz najpierw zainstalować pakiet texlive-latex-base, aby móc przekonwertować go na format PDF. W przeciwnym razie pojawi się następujący błąd:

pandoc: pdflatex not found. pdflatex is needed for pdf output.

Aby zainstalować:

sudo apt-get install texlive-latex-base

Teraz możesz łatwo przekonwertować dowolny plik na pdf.

pandoc -t txt -t pdf source.txt

zamień txt na format tekstowy (odt - html - ....)


1
W porównaniu z innymi odpowiedziami, pandoc plus texlive generuje złe wyniki (nie respektując nowych linii), a także przesadza i wprowadza w błąd. Potrzebnych jest o wiele więcej pakietów, ciągnięcie w texlive, zalecane czcionki texlive, ruby ​​itp. Np. Dostaję, pandoc: Unknown writer: pdfdopóki nie zainstaluję texlive-latex-base. To jest zaufane. Zobacz github.com/jgm/pandoc/issues/1155 Potem pojawił się błąd dotyczący brakującej czcionki, potem jedna o url.sty itp.
nealmcb

2

Jak napisano powyżej, enscriptjest popularnym sposobem konwersji tekstu na PostScript, który można następnie przekonwertować na format PDF.
Podobne narzędzie istnieje od dłuższego czasu a2ps. Ma wiele opcji, w tym umieszczanie wielu stron na stronie fizycznej. Zainstaluj ap2s z sudo apt-get install a2ps.

AFAIK, enscript i a2ps wykonują tę samą pracę, ale ich interfejs jest inny i YMMV z każdym z nich.


Pomocny byłby przykład użycia a2ps. Opcja --delegate wydaje się być potrzebna w pdf, ale strona podręcznika tak naprawdę nie pomaga.
nealmcb

2

Miałem pewne problemy z niemieckim Umlaute (ĘÖÜ) z wyżej wymienionymi rozwiązaniami. Lub, w przypadku dokumentów, wynikowy plik PDF nie ma warstwy tekstowej.

Najlepszym rozwiązaniem dla mnie było użycie wkthmltopdf . Wygląda na to, że nie jest udokumentowany, ale możesz łatwo przekonwertować pliki tekstowe na pliki PDF przy użyciu tej składni:

wktmltopdf <textfile> <pdffile>

wkhtmltopdf może obsługiwać pliki UTF-8 (w przeciwieństwie do enscript). Wszystkie problematyczne znaki, takie jak ĘÖÜß itp., Będą wyświetlane poprawnie.


Zostało to naprawione w najnowszej wersji paps, która jest w stanie wygenerować pdf do wyboru. Zobacz: github.com/dov/paps .
Dov Grobgeld,

1

Możesz użyć a2x

a2x - konwersja pliku tekstowego Asciidoc do formatu PDF, XHTML, HTML Help, ODF, strony podręcznika lub zwykłego tekstu

Aby zainstalować a2x:

sudo apt-get install asciidoc

na przykład:

 a2x -f pdf testfile.txt

0

Możesz także użyć u2ps .

Generuje to zarówno ps, jak i pdf. Akceptuje tekst UTF-8 i obsługuje podświetlanie składni poprzez znaczniki Pango.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.