Um método é usar o CUPS e a impressora psuedo PDF para "imprimir" o texto em um arquivo PDF.
Outra é usar o texto para codificar o postscript e depois converter de postscript para PDF usando o ps2pdf arquivo do pacote ghostscript.
Eu quero converter .txt
arquivos para .pdf
. Eu estou usando isso:
ls | while read ONELINE; do convert -density 400 "$ONELINE" "$(echo "$ONELINE" | sed 's/.txt/.pdf/g')"; done
Mas isso produz um "erro" - se houver uma linha muito longa no arquivo de texto, ele não será quebrado.
-
Além disso, também seria ótimo se o PDF de saída contivesse texto, em vez de imagens de texto.
Eu tenho muitos e muitos arquivos TXT. Então não quero fazer isso manualmente. Preciso de uma solução automática, como a que mencionei acima.
Um método é usar o CUPS e a impressora psuedo PDF para "imprimir" o texto em um arquivo PDF.
Outra é usar o texto para codificar o postscript e depois converter de postscript para PDF usando o ps2pdf arquivo do pacote ghostscript.
pandoc pode fazer isso. É mais focado na conversão de texto marcado em vários formatos, mas não deve ter problemas com texto simples.
pandoc input.txt -o output.pdf
O LibreOffice / OpenOffice, assim como a maioria dos outros processadores de texto (Abiword), podem fazer isso com bastante facilidade.
Existe um pequeno utilitário chamado unoconv
que usa a base de código do LibreOffice para fazer conversões de formato de arquivo na linha de comando. Ele pode ler e gravar qualquer combinação de formatos que o LibreOffice pode e torna muito fácil fazer coisas como doc
to pdf
conversões na linha de comando. O simples txt
to pdf
seria fácil para ele.
Você pode imprimir texto em um arquivo PostScript usando o Vim e depois convertê-lo em PDF, contanto que o Vim tenha sido compilado com o recurso +postscript
.
Para isso você usa o comando :hardcopy > {filename}
. Por exemplo, você pode abrir example.txt
e executar
:hardcopy > example.ps
, que produzirá um arquivo example.ps
contendo todo o texto em example.txt
. O cabeçalho de cada página no arquivo PostScript conterá o nome do arquivo original e o número da página.
Depois, você pode converter o arquivo PostScript em PDF usando o seguinte comando
ps2pdf example.ps
que criará example.pdf
.
Você pode fazer o mesmo diretamente de um terminal (sem interagir com o Vim) usando o seguinte comando
vim example.txt -c "hardcopy > example.ps | q"; ps2pdf example.ps
Isso abre example.txt
no Vim e executa o comando passado para a opção -c
, que neste caso é um comando hardcopy
seguido por um comando quit ( q
). Em seguida, ele executa ps2pdf
para produzir o arquivo final.
Para mais opções, consulte os arquivos de ajuda com :help :hardcopy
.
Use apenas o text2pdf , que é gratuito e de código aberto. No link você pode baixar a fonte ou o binário pré-compilado para windows, solaris, dos.
Consigo usá-lo no sistema operacional AIX sem problemas.
Muito simples de compilar, apenas salve os arquivos text2pdf.c e Makefile no mesmo diretório e digite make
. (aqui eu configurei a variável CC = gcc no AIX, no linux isso não será um 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
Existe também um conversor de UTF-8 para PostScript chamado paps
.
Use o enscript para criar um arquivo .ps e, em seguida, ps2pdf (ou ps2pdfwr) para converter em .pdf
O script a seguir cria um arquivo .pdf com margens esquerda e direita de 10 pontos e usa uma fonte de courier de 7.3 pts de largura e 10 pts de altura, portanto, uma impressão de 132 col cabe em uma página de 8 1/2 X 11. Use o enscript para configurar sua página, fontes, etc.
$ enscript -B --margins=10:10: -o outputfile.ps -f [email protected]/10 inputfile
$ ps2pdfwr outputfile.ps newfile.pdf
$ rm outputfile.ps
O LibreOffice funciona para isso. Uso:
libreoffice --convert-to "pdf" file.txt
A saída será chamada file.pdf
.