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?

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.


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 :-))


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


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

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

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 - ....)


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.


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.


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

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.