可以从Mac终端打印为PDF吗?


19

是否可以仅使用终端命令来获取文件并将其打印为PDF?我猜您会以某种方式使用lpr命令,但是我还没有发现正确的语法。


什么样的文件?纯文本?
道格·哈里斯

1
@Daniel,我的问题应该更清楚:什么样的源文件?-下面的答案适用于纯文本文件,不适用于图像。
Doug Harris

@道格,我很抱歉,我实际上误读了这个问题。
丹尼尔·贝克

1
@Daniel-我真正想要的是HTML页面上图形密集的内容。这可能吗?
漫步者2011年

1
您的主要问题可能是查看器应用程序取决于文件格式。下定决心要使用哪种格式,您会得到特定的答案。
丹尼尔·贝克

Answers:


11

lpr确实是正确的命令。没什么,只是

lpr filename.pdf

假定默认打印机设置正确,它应该可以正常工作。如果没有,您可能需要做

lpr -P printername filename.pdf

请注意,有一个手册页-如果需要查看内容,则为“ man lpr”。是的,OS X使用的CUPS打印后台程序已经支持PDF。


提供的解决方案在优胜美地上提供了零尺寸的pdf。有什么想法如何解决吗?
Stanislav Mekhonoshin 2015年

很抱歉重复。当我尝试打印.pages文档时,提供的解决方案在优胜美地上提供了零尺寸的pdf。RTF或txt打印良好。任何想法如何解决?
Stanislav Mekhonoshin

lpr不会生成pdf文件,所以我不确定我是否理解注释。您不能使用lpr生成pdf文件。
佩里

4
这不能回答原始问题,因为它是如何“打印到pdf”而不是打印pdf。
dorien

5

我知道我在一个隐藏的系统文件夹中看到了一些东西:

/Library/Scripts/Printing Scripts/Convert To PDF.scpt

我已经从AppleScript创建了一个新的应用程序,但是直接调用脚本也应该可以。

编辑:实际上,您只需致电

/System/Library/Printers/Libraries/convert -f file.rtf -o file.pdf -j "application/pdf"

6
这个答案已经过时了。在OS X 10.9.5中测试。
4ae1e1 2014年

@ 4ae1e1不,不是。只是“转换”不存在。这是/ usr / sbin / cupsfilter的符号链接,即使在10.13.6上,cupsfilter仍然可以这种方式工作。
cde18年

3

1)开源文字处理器AbiWord包括一个选项,可以在命令行上知道的任何格式之间进行转换,包括PDF,例如,

abiword --to=pdf filename.html

(它还将处理输入和输出的MS Word .doc文件,.docx,.odt,.rtf等)。

我知道它可用于Mac,尽管我从未在Mac上使用过。

2)ebook-convert命令行程序,从口径(在Mac上,你需要按照指示在这里得到命令行工具)可以多种格式很有用。

ebook-convert filename.html filename.pdf

它可以处理.rtf和.odt输入,以及许多电子书格式,例如.epub和.mobi。

3)PrinceXML可以在命令行上使用,并且可以非常漂亮地将HTML转换为PDF。

4)有wkhtmltopdf,它使用webkit引擎从命令行将HTML转换为PDF。我从来没有尝试过。

5)我可以想到其他使用例如ConTeXt或pdflatex的方法,但它们涉及的越来越多。


1
注意:AbiWord在基于Intel的Mac上不起作用
inspectorG4dget

2

对于纯文本文件,您可以使用enscript(OS X附带)生成后记文件。

$ enscript -p ~/Desktop/profile.ps /etc/profile
[ 1 pages * 1 copy ] left in /Users/dharris/Desktop/profile.ps

OS X的Preview应用程序可以打开(并转换)为PDF,或者您可以安装ps2pdf(我通过macports安装了它)并在命令行中进行转换。

$ ps2pdf ~/Desktop/profile.ps ~/Desktop/profile.pdf

如果我想做一些图形密集的事情怎么办?假设要从终端将HTML页面转换为PDF?
漫步者2011年

我知道这很旧,但是PhantomJS可以做到,而且做得很好。
Brad 2013年


1

首先获取打印机名称

lpstat -p

然后使用打印机名称(例如Canon1234-)

lp -d Canon1234 PathToDocument.pdf

Op希望将任意文件打印为pdf文档,而不是将pdf打印为真实打印机。
cde

0

对于本地网页文件,您可以尝试使用“将URL下载为PDF Automator”操作。下载并安装。


我必须以32位模式启动Automator:

替代文字


创建一个Automator 应用程序,该应用程序将自动接收文件和文件夹作为输入,此操作是唯一的操作。另存为Save as PDF

打开应用程序的“ 获取信息”对话框,然后此处也选中“ 以32位模式打开”。双击一次以确保Launch Services知道该应用程序。


您可以从命令行使用此应用程序,如下所示:

osascript -e 'tell application "Save as PDF" to open { POSIX file "/path/to/file.html" as alias }'

当然,您可以将其包装在漂亮的AppleScript .scptbash函数,shell脚本中,或者不用。


该解决方案实际上非常灵活。我能够转换文本文件和HTML文件,并且Automator动作也可以进行配置。


0

其实比这容易得多。您只需在命令行上输入open *.pdf预览就会打开,其中包含所有文件。奇怪的是,如果您键入,open *.pdf */*.pdf则会得到两个窗口。在每一个你接下来要进入的侧栏中,选择的四四方方的格式之一(如果有大量的文件,它会打开在列表格式默认不工作)型CMD- A全选,然后使用打印碳粉selected-pages命令来获取所有这些。


0

您可以通过添加pdf打印机驱动程序 pdf printer

  • 首先pdf printer从商店安装,然后
  • 开始 pdf printer
  • 转到系统偏好设置

  • 打开打印机和扫描仪

  • 点击+按钮

  • 在打印机列表中选择 pdf printer

  • 等一下

  • 然后点击添加

  • 设置pdf printer为默认打印机,然后关闭...

打开终端,然后执行命令以打印文件

lp /path/to/your/file/to/print.txt
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.