Come convertire TXT in PDF?


45

Voglio convertire i .txtfile in .pdf. Sto usando questo:

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

Ma questo produce un "errore" - se c'è una riga molto lunga nel file di testo, non viene racchiuso.

Testo di input

Schermata del file di input

PDF di output

Schermata del PDF di output

-

Inoltre, sarebbe fantastico se il PDF di output potesse contenere testo, anziché immagini di testo.

Ho molti file TXT. Quindi non voglio farlo a mano. Ho bisogno di una soluzione automatica, come quella che ho menzionato sopra.


1
Dovresti usare for ONELINE in *invece di ls | while read ONELINE. Leggere questo .

Non ho abbastanza rappresentante per rispondere, ma voglio solo aggiungere che l'editor di Kate in KDE Kubuntu è possibile stampare su "stampante" PDF che consente di selezionare il nome del file e produce un .pdf.
matematico

Risposte:



34

Pandoc può farlo. È più focalizzato sulla conversione di testo con markup in vari formati, ma non dovrebbe avere problemi con il semplice testo in chiaro.

pandoc input.txt -o output.pdf

3
Sembra carino, ma l'enorme quantità di dipendenze haskell che il pandoc vuole mi ha spaventato: /
lkraav,

1
@Ikraav sì, è eccessivo per questo scopo, ma se hai markdown o HTML (o uno qualsiasi degli altri markup che può accettare come input) il pandoc sarebbe la strada da percorrere. Il PDF in realtà richiede ancora più dipendenze - internamente, pandoc utilizza LaTeX per convertire in PDF, quindi è necessario installare anche quella roba - ma la qualità è molto buona (lo uso per convertire il testo con markdown in PDF ed EPUB, principalmente ).
evilsoup,

pandoc (1.16.0.2) sostituisce le mie nuove righe con le schede.
Sparhawk,

17

LibreOffice / OpenOffice e la maggior parte degli altri elaboratori di testi (Abiword) possono farlo abbastanza facilmente.

C'è una piccola utility chiamata unoconvche utilizza la base di codice LibreOffice per fare conversioni di formati di file sulla riga di comando. E 'in grado di leggere e scrivere qualsiasi combinazione di formati che LibreOffice possono e lo rende molto facile fare le cose come docper pdfle conversioni sulla riga di comando. Semplice da txtfare pdfsarebbe facile.


Interessante. Non sapevo unoconve non sapevo nemmeno che OO avesse API.
Faheem Mitha,

Produce risultati di alta qualità, ma, per me (sto usando la versione 0.5-1 (Debian Wheezy)), devo prima eseguire un unoconv --listener &comando.
Digger

12

È possibile stampare testo in un file PostScript utilizzando Vim e quindi convertirlo in PDF, purché Vim sia stato compilato con la +postscriptfunzione.

Per questo usi il :hardcopy > {filename}comando. Ad esempio è possibile aprire example.txted eseguire

:hardcopy > example.ps

che produrrà un file example.pscontenente tutto il testo in example.txt. L'intestazione di ogni pagina nel file PostScript conterrà il nome file originale e il numero di pagina.

Quindi è possibile convertire il file PostScript in un PDF utilizzando il seguente comando

ps2pdf example.ps

che creerà example.pdf.

Puoi fare lo stesso direttamente da un terminale (senza interagire con Vim) usando il seguente comando

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

Questo si apre example.txtin Vim ed esegue il comando passato -call'opzione, che in questo caso è un hardcopycomando seguito da un qcomando quit ( ). Quindi viene eseguito ps2pdfper produrre il file finale.

Per ulteriori opzioni, consultare i file della guida con :help :hardcopy.


:hardcopyproduce un file PostScript indipendentemente dall'aggiunta di estensioni .pdf o .ps. L'ho fatto :hardcpy > example.pdfe con less example.pdfin shell ho potuto vedere che l'intestazione del file era %!PS-Adobe-3.0.
Taro,

@taro, hai ragione. Al momento in cui ho scritto questo non me ne sono accorto. Ho aggiornato la mia risposta. Il comando finale potrebbe essere migliorato, ma non posso scriverlo adesso. Potrebbe farlo più tardi.
Gonçalo Ribeiro,

10

Usa semplicemente text2pdf , che è gratuito e opensource. Al link puoi scaricare il sorgente o il binario precompilato per windows, solaris, dos.

Sono in grado di usarlo nel sistema operativo AIX senza problemi. Molto semplice da compilare, basta salvare text2pdf.c e Makefile nella stessa directory e tipo make. (qui ho impostato la variabile CC = gcc su AIX, su Linux questo non sarà un problema)

$ ./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
c'è un fork di utf8 capace di questo?
Wolfgang Fahl il

7

C'è anche un convertitore da UTF-8 a PostScript chiamato paps.


3
Funziona e con i caratteri TrueType, ma va notato che di conseguenza produce un documento con bitmap, anziché utilizzare i caratteri in modo nativo. (Immagino sia per Postscript?)
njsg

Impossibile compilarlo su Cygwin32 sul mio
Windoze

5

Usa enscript per creare un file .ps, quindi ps2pdf (o ps2pdfwr) per convertirlo in .pdf

Lo script seguente crea un file .pdf con margini sinistro e destro di 10 pt e utilizza un carattere di corriere largo 7,3 punti e alto 10 punti, quindi una stampa a 132 colori si adatta a una pagina 8 1/2 X 11. Usa il codice per impostare la tua pagina, i tuoi caratteri, ecc.

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

5
Una cosa da notare: enscript non supporta utf-8.
maxschlepzig,

3

LibreOffice funziona per questo. Uso:

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

L'output verrà chiamato file.pdf.


C'è un modo per cambiare la dimensione del carattere nel PDF risultante?
Evg

@Evg Non conosco un modo per farlo con questo metodo di utilizzo di LibreOffice.
jbrock,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.