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.