如何从命令行将常规文件打印为pdf


34

在gedit中,打印文件提供了打印到文件的选项,该文件可以另存为pdf。如何从命令行执行相同的操作?

Answers:


43

这是不涉及OpenOffice的解决方案:

  1. sudo apt-get install enscript

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

有更多选项enscript,例如-B,省略页面标题。查看man enscript所有选项。


1
一个不错的选择Stefano,特别是对于不使用open / libreoffice的用户,因为unoconv取决于安装的任何一个。
Allan

+1是一个不错的答案,我将要给出一个答案,我只是决定给出一个我认为将为此处已有内容添加一些内容。
Sabacon

没有内置的bash程序或命令可以执行此操作吗?
kashminder 2014年

1
谢谢!它适用于大多数文本,但是enscript仅适用于旧编码,例如不适用于UTF-8,因此,例如,如果包含欧元符号(€),则无法转换文本...
AntoineDusséaux

20

无需安装任何上述软件,就可以简单地执行以下操作cupsfilter

cupsfilter foo.txt > foo.pdf

(有关选项等,请参阅cupsfilter手册页:-))


2
唯一可以毫无问题地处理我的UTF8文本文件的答案:)加上几乎没有依赖项的操作变得更容易
Axel Advento

13

简单的写法

sudo apt-get install cups-pdf脚本

然后在这种情况下,使用-P开关和打印机说明PDF在文件上运行脚本。

脚本-B -PPDF test.txt

在您安装cups-pdf时创建了一个描述为PDF的打印机,当您在该打印机上使用enscript时,您的文档将被发送到PDF打印机并被打印到文件,该文件在您的/ home / PDF目录中以.pdf创建,上面的命令将在PDF目录中将文本文件test.txt打印为pdf。

使用UNOCONV

sudo apt-get install unoconv

您可以在独立模式下使用unoconv,这意味着在没有OpenOffice侦听器的情况下,它将自行启动:

在文件所在的目录中运行:

unoconv -f pdf test.txt

这将创建一个漂亮的test.txt pdf文件。在当前目录中


enscript foo.txt -o bar.pdf效果很好;谢谢!
Thufir

6

有一个命令行程序可以在所有受支持的开放式/自由办公室格式之间进行转换,称为unoconv, 因此,如果您需要使用脚本进行批量转换,它将很方便。

sudo apt-get install unoconv

不是OP要求的。
enzotib

2
?OP?谁是OP,为什么在回答问题时将其否决?
RolandiXor

5

paps 是比以下更好的选择 enscript

paps file.txt | ps2pdf - output.pdf

7
欢迎使用Ask Ubuntu HWC!当您的帖子确实回答了问题时,最好包含更多信息。例如,为什么paps有更好的选择?并且,如果paps默认情况下未安装,安装命令是什么?您始终可以通过单击答案edit主体下方的右键来编辑答案。谢谢!
Alaa Ali 2013年

5

在各种标记语言之间进行转换时,Pandoc是必不可少的瑞士刀工具。首先,请先安装pandoc转换器:

sudo apt-get install pandoc

pandoc的通用语法和最常用语法是:

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

请注意,在转换为PDF格式之前,首先需要安装texlive-latex-base软件包。否则,您将收到以下错误:

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

要安装它:

sudo apt-get install texlive-latex-base

现在,您可以轻松地将任何文件转换为pdf。

pandoc -t txt -t pdf source.txt

用您的文本格式替换txt(odt-html-....)


1
与其他答案相比,pandoc和texlive产生不好的输出(不尊重换行符),并且过大且难以引导。需要更多软件包,引入texlive,推荐的texlive-fonts,ruby等。例如,pandoc: Unknown writer: pdf直到安装texlive-latex-base ,我才知道。这是值得信赖的。见github.com/jgm/pandoc/issues/1155 然后,我得到了一个错误关于丢失字体,然后一个约url.sty等
nealmcb

2

如上所述,这enscript是一种将文本转换为后记的流行方法,然后可以将其进一步转换为PDF。
已有很长时间的类似工具了a2ps。它具有大量选项,包括将多个页面放在一个物理页面上。使用安装ap2s sudo apt-get install a2ps

AFAIK,enscript和a2ps可以完成相同的工作,但是它们的界面是不同的,并且YMMV彼此都有。


使用a2ps的示例将有所帮助。--delegate选项似乎是pdf所必需的,但手册页实际上并没有帮助。
nealmcb 2015年

2

对于上述解决方案,我对德国Umlaute(ÄÖÜ)有一些问题。或者,对于pap,生成的PDF没有文本层。

对我来说最好的解决方案是使用wkthmltopdf。它似乎没有记录,但是您可以使用以下语法轻松地将文本文件转换为PDF文件:

wktmltopdf <textfile> <pdffile>

wkhtmltopdf可以处理UTF-8文件(与enscript不同)。所有有问题的字符,例如ÄÖÜß等,都将正确显示。


这已在最新版本的paps中修复,该版本能够输出可选的pdf。参见:github.com/dov/paps
Dov Grobgeld '18年

1

您可以使用 a2x

a2x-将Asciidoc文本文件转换为PDF,XHTML,HTML帮助,ODF,联机帮助页或纯文本

要安装a2x:

sudo apt-get install asciidoc

例如:

 a2x -f pdf testfile.txt

0

您也可以使用u2ps

这将同时生成ps和pdf。它接受UTF-8文本,并支持通过Pango标记突出显示语法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.