Como imprimir um arquivo regular em pdf a partir da linha de comando

34

No gedit, imprimir um arquivo oferece a opção de imprimir em um arquivo onde o arquivo pode ser salvo como um pdf. Como posso fazer a mesma coisa na linha de comando?

skypemesm
fonte

Respostas:

43

Aqui está uma solução que não envolve o OpenOffice:

  1. sudo apt-get install enscript

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

Existem mais opções para enscript, por exemplo, -Bomitir o cabeçalho da página. Veja man enscriptpara todas as opções.

Stefano Palazzo
fonte
11
Uma boa alternativa ao Stefano, especialmente para quem não usa o open / libreoffice como unoconv, depende da instalação de qualquer um deles.
Allan
+1 para a boa resposta, a que eu estava prestes a dar, apenas decidi dar uma que acho que acrescentará algo ao que já está aqui.
Sabacon
Não existe nenhum programa ou comando bash embutido para fazer isso?
kashminder
11
Obrigado! Ele funciona para a maioria dos textos, mas o enscript funciona apenas com codificação antiga, por exemplo, não funciona com UTF-8, portanto você não pode converter um texto se ele incluir o símbolo do euro (€), por exemplo ...
Antoine Dusséaux
20

sem instalar nenhum dos softwares mencionados acima, basta fazer o seguinte com o já instalado cupsfilter:

cupsfilter foo.txt > foo.pdf

(para opções etc., consulte as páginas de manual cupsfilter :-))

Abel Tom
fonte
2
A única resposta aqui que lidou com os meus arquivos de texto UTF8 sem problemas :) mais fácil de fazer praticamente sem dependências
Axel Advento
13

A MANEIRA SIMPLES DE INSCRIÇÃO

sudo apt-get install cups-pdf enscript

Em seguida, execute o enscript em seu arquivo com a opção -P e o PDF de descrição da impressora neste caso.

enscript -B -PPDF test.txt

Uma impressora com descrição PDF foi criada quando você instalou cups-pdf; quando você usa o enscript nessa impressora, seu documento será enviado para a impressora PDF e será impresso em arquivo, criado como .pdf no diretório / home / PDF, o O comando acima imprimirá o arquivo de texto test.txt como um pdf no diretório PDF.

USANDO UNOCONV

sudo apt-get install unoconv

Você pode usar unoconv no modo autônomo, isso significa que, na ausência de um ouvinte do OpenOffice, ele começará o seu:

No diretório em que seu arquivo está localizado, execute:

unoconv -f pdf test.txt

isso criará um belo pdf de test.txt. no diretório atual

Sabacon
fonte
enscript foo.txt -o bar.pdffunciona muito bem; obrigado!
Thufir 23/02
6

Existe um programa de linha de comando que pode converter entre todos os formatos compatíveis com o open / libre office chamado unoconv; portanto, se você precisar converter em lote com um script, será útil.

sudo apt-get install unoconv
Allan
fonte
Não é o que o OP pediu.
enzotib
2
? OP? quem é OP e por que votar isso quando responde à pergunta?
RolandiXor
5

paps é uma alternativa melhor do que enscript

paps file.txt | ps2pdf - output.pdf
hwc
fonte
7
Bem-vindo ao Ask Ubuntu hwc! Embora sua postagem responda à pergunta, é sempre melhor incluir mais informações. Por exemplo, por que é papsuma alternativa melhor? E se papsnão estiver instalado por padrão, qual é o comando para instalá-lo? Você sempre pode editar sua resposta clicando no botão editdireito embaixo do corpo da resposta. Obrigado!
Alaa Ali
5

Pandoc é uma ferramenta de faca suíça indispensável quando se trata de conversão entre várias linguagens de marcação. Para começar, instale o conversor pandoc:

sudo apt-get install pandoc

A sintaxe geral e mais frequentemente usada para pandoc é:

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

Observe que você precisa primeiro instalar o pacote texlive-latex-base, antes de poder converter para o formato PDF. Caso contrário, você receberá o seguinte erro:

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

Para instalá-lo:

sudo apt-get install texlive-latex-base

Agora você pode facilmente converter qualquer arquivo para pdf.

pandoc -t txt -t pdf source.txt

substitua o txt pelo seu formato de texto (odt - html - ....)

Maythux
fonte
11
Comparado às outras respostas, o pandoc plus texlive produz resultados ruins (sem respeitar as novas linhas) e é um exagero e confuso para inicializar. São necessários muito mais pacotes, puxando texlive, texlive-fonts-recomendado, ruby, etc. Por exemplo, recebo pandoc: Unknown writer: pdfaté instalar o texlive-latex-base. Isso é confiável. Veja github.com/jgm/pandoc/issues/1155 Então eu tenho um erro sobre uma fonte ausente, então um sobre url.sty, etc.
nealmcb
2

Conforme publicado acima, enscripté uma maneira popular de converter texto em postscript, que pode ser posteriormente convertido em PDF.
Uma ferramenta semelhante, que existe há muito tempo, é a2ps. Possui um grande número de opções, incluindo colocar várias páginas em uma página física. Instale o ap2s com sudo apt-get install a2ps.

AFAIK, enscript e a2ps fazem o mesmo trabalho, mas sua interface é diferente e YMMV com cada um deles.

dirkjot
fonte
Um exemplo do uso do a2ps ajudaria. A opção --delegate parece ser necessária para o pdf, mas a página do manual não ajuda muito lá.
Nealmcb 14/03/2015
2

Eu tive alguns problemas com o Umlaute alemão (ÄÖÜ) com as soluções acima mencionadas. Ou, no caso de paps, o PDF resultante não possui uma camada de texto.

A melhor solução para mim foi usar o wkthmltopdf . Parece não estar documentado, mas você pode facilmente converter arquivos de texto em arquivos PDF usando esta sintaxe:

wktmltopdf <textfile> <pdffile>

O wkhtmltopdf pode manipular arquivos UTF-8 (diferente do enscript). Todos os caracteres problemáticos como ÄÖÜß etc. serão exibidos corretamente.

Zarathustra
fonte
Isso foi corrigido na versão mais recente do paps, capaz de produzir PDF selecionável. Veja: github.com/dov/paps .
Dov Grobgeld
1

Você pode usar a2x

a2x - converte arquivo de texto Asciidoc para PDF, XHTML, HTML Help, ODF, página de manual ou texto sem formatação

Para instalar o a2x:

sudo apt-get install asciidoc

por exemplo:

 a2x -f pdf testfile.txt
Maythux
fonte
0

Você também pode usar o u2ps .

Isso gera ps e pdf. Isso aceita texto UTF-8 e suporta o destaque de sintaxe através das marcações do Pango.

user1013749
fonte