Jak przekonwertować TXT na PDF?


45

Chcę przekonwertować .txtpliki .pdf. Używam tego:

ls | while read ONELINE; do convert -density 400 "$ONELINE" "$(echo "$ONELINE" | sed 's/.txt/.pdf/g')"; done

Ale to powoduje jeden „błąd” - jeśli w pliku tekstowym jest bardzo długa linia, nie jest ona zawijana.

Wprowadź tekst

Zrzut ekranu pliku wejściowego

Wyjście PDF

Zrzut ekranu wyjściowego pliku PDF

-

Byłoby również świetnie, gdyby wyjściowy plik PDF mógł zawierać tekst zamiast obrazów tekstu.

Mam wiele-wiele-wielu plików TXT. Więc nie chcę tego robić ręcznie. Potrzebuję automatycznego rozwiązania, takiego jak wspomniane powyżej.


1
Powinieneś użyć for ONELINE in *zamiast ls | while read ONELINE. Przeczytaj to .

Nie mam wystarczającej liczby powtórzeń, aby odpowiedzieć, ale chcę tylko dodać, że edytor Kate w KDE kubuntu możesz wydrukować na „drukarce” PDF, która pozwala wybrać nazwę pliku i wygenerować plik .pdf.
— mathreadler

Odpowiedzi:



34

pandoc może to zrobić. Bardziej koncentruje się na konwertowaniu oznaczonego tekstu na różne formaty, ale nie powinien mieć problemów z prostym tekstem jawnym.

pandoc input.txt -o output.pdf

3
Wygląda ładnie, ale ogromna ilość zależności haskell, których chce pandoc, wystraszyła mnie: /
— lkraav

1
@Ikraav tak, w tym celu jest to przesada, ale jeśli masz markdown lub HTML (lub inne znaczniki, które można zaakceptować jako dane wejściowe), pandoc będzie dobrym rozwiązaniem. PDF faktycznie wymaga jeszcze większej zależności - wewnętrznie, pandoc używa LaTeX do konwersji na PDF, więc musisz także zainstalować te rzeczy - ale jakość jest bardzo dobra (używam go do konwersji oznaczonego tekstu na PDF i EPUB, przede wszystkim ).
— evilsoup

pandoc (1.16.0.2) zamienia moje nowe wiersze na tabulatory.
— Sparhawk

17

LibreOffice / OpenOffice, a także większość innych edytorów tekstu (Abiword) może to zrobić dość łatwo.

Istnieje małe narzędzie o nazwie, unoconvktóre wykorzystuje bazę kodu LibreOffice do konwersji formatu plików w wierszu poleceń. Można go czytać i pisać dowolną kombinację formatów LibreOffice może i sprawia, że bardzo łatwe do zrobienia rzeczy, jak docdo pdfkonwersji na linii poleceń. Proste txtdo pdfbyłoby łatwe dla niego.


Ciekawy. Nie wiedziałem unoconvani nawet nie wiedziałem, że OO ma API.
— Faheem Mitha

Daje wyniki wysokiej jakości, ale dla mnie (używam wersji 0.5-1 (Debian Wheezy)) muszę najpierw uruchomić unoconv --listener &polecenie.
— Digger

12

Możesz wydrukować tekst do pliku PostScript za pomocą Vima, a następnie przekonwertować go na plik PDF, o ile Vim został skompilowany z tą +postscriptfunkcją.

W tym celu użyj :hardcopy > {filename}polecenia. Na przykład możesz otworzyć example.txti wykonać

:hardcopy > example.ps

który utworzy plik example.pszawierający cały tekst example.txt. Nagłówek każdej strony w pliku PostScript będzie zawierał oryginalną nazwę pliku i numer strony.

Następnie możesz przekonwertować plik PostScript na plik PDF za pomocą następującego polecenia

ps2pdf example.ps

który stworzy example.pdf.

Możesz zrobić to samo bezpośrednio z terminala (bez interakcji z Vimem), używając następującego polecenia

vim example.txt -c "hardcopy > example.ps | q"; ps2pdf example.ps

Otwiera się to example.txtw Vimie i wykonuje polecenie przekazane do -copcji, która w tym przypadku jest hardcopypoleceniem, po którym następuje polecenie quit ( q). Następnie wykonuje się, ps2pdfaby wygenerować końcowy plik.

Aby uzyskać więcej opcji, zobacz pliki pomocy za pomocą :help :hardcopy.


:hardcopytworzy plik PostScript bez względu na to, czy dodam rozszerzenia .pdf lub .ps. Zrobiłem to :hardcpy > example.pdfiz less example.pdfpowłoką mogłem zobaczyć, że nagłówek pliku to %!PS-Adobe-3.0.
— taro

@taro, masz rację. Kiedy to pisałem, nie zauważyłem tego. Zaktualizowałem swoją odpowiedź. Ostateczne polecenie można poprawić, ale nie mogę tego teraz napisać. Może to zrobić później.
— Gonçalo Ribeiro,

10

Wystarczy użyć text2pdf , który jest darmowy i otwiera oprogramowanie. Pod linkiem możesz pobrać źródłowy lub wstępnie skompilowany plik binarny dla Windows, Solaris, DOS.

Jestem w stanie bez problemu używać go w systemie operacyjnym AIX. Bardzo prosty w kompilacji, po prostu zapisz text2pdf.c i Makefile w tym samym katalogu i typie make. (tutaj ustawiam zmienną CC = gcc w systemie AIX, w systemie Linux nie będzie to problemem)

$ ./text2pdf  -h

text2pdf [options] [filename]

  text2pdf makes a 7-bit clean PDF file (version 1.1) from any input file.
  It reads from standard input or a named file, and writes the PDF file
  to standard output.

  There are various options as follows:

  -h            show this message
  -f<font>      use PostScript <font> (must be in standard 14, default: Courier)
  -I            use ISOLatin1Encoding
  -s<size>      use font at given pointsize (default 10)
  -v<dist>      use given line spacing (default 12 points)
  -l<lines>     lines per page (default 60, determined automatically
                if unspecified)
  -c<chars>     maximum characters per line (default 80)
  -t<spaces>    spaces per tab character (default 8)
  -F            ignore formfeed characters (^L)
  -A4           use A4 paper (default Letter)
  -A3           use A3 paper (default Letter)
  -x<width>     independent paper width in points
  -y<height>    independent paper height in points
  -2            format in 2 columns
  -L            landscape mode

  Note that where one variable is implied by two options, the second option
  takes precedence for that variable. (e.g. -A4 -y500)
  In landscape mode, page width and height are simply swapped over before
  formatting, no matter how or when they were defined.

text2pdf v1.1 (c) Phil Smith, 1996
$ ./text2pdf  -f"Courier" -s6 -c216 -v6 -L -A4 ./rep3.txt >rep3.pdf

3
czy jest to rozwidlenie zdolne do utf8?
— Wolfgang Fahl

7

Istnieje również konwerter UTF-8 na PostScript paps.


3
Działa z czcionkami TrueType, ale należy zauważyć, że tworzy dokument z bitmapami, zamiast używać czcionek natywnie. (Myślę, że to z powodu Postscript?)
— njsg

Nie można go skompilować na Cygwin32 na moim Windoze ...
— texnezio

5

Użyj enscript, aby utworzyć plik .ps, a następnie ps2pdf (lub ps2pdfwr), aby przekonwertować na .pdf

Poniższy skrypt tworzy plik .pdf z lewym i prawym marginesem 10 pt i wykorzystuje czcionkę kurierską o szerokości 7,3 pkt i wysokości 10 pkt, więc wydruk o wielkości 132 kol. Mieści się na stronie 8 1/2 X 11. Użyj Script, aby ustawić swoją stronę, czcionki itp.

$ enscript -B --margins=10:10: -o outputfile.ps -f Courier@7.3/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps

5
Należy zauważyć: enscript nie obsługuje utf-8.
— maxschlepzig

3

LibreOffice na to działa. Stosowanie:

libreoffice --convert-to "pdf" file.txt

Wyjście zostanie wywołane file.pdf.


Czy istnieje sposób zmiany rozmiaru czcionki w wynikowym pliku PDF?
— Evg

@Evg Nie wiem, jak to zrobić za pomocą tej metody korzystania z LibreOffice.
— jbrock
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.