2013-03-02 75 views
1

我期待将html文件转换为pdf格式,而不需要任何第三方实用程序。我对cupsfilter的输出不感兴趣,我也不想编写浏览器脚本。这个AppleScript/Ruby脚本使用PDFKit重新保存pdf(以解决InDesign问题)。有没有办法修改它来接受一个HTML文件作为输入?任何其他解决方案也欢迎!在Mac上将html文件转换为pdf格式

on pdf_resave(infile, outfile) 
    set rb to "require 'osx/cocoa' 
OSX.require_framework 'PDFKit' 
include OSX 

raise ArgumentError, %Q[Usage: $0 <input pdf> <output pdf>] unless ARGV.length == 2 
infile, outfile = ARGV 
url = NSURL.fileURLWithPath(infile) 
pdf = PDFDocument.alloc.initWithURL(url) 
pdf.writeToFile(outfile)" 

    do shell script "/usr/bin/ruby -e " & rb's quoted form & " " & infile's quoted form & " " & outfile's quoted form 
end pdf_resave 
+0

为什么你的输入pdf?我以为你想转换HTML? re:'ArgumentError'' – ocodo 2013-03-02 22:10:17

回答

2

我建议使用WebKit的HTML到PDF库,https://github.com/antialize/wkhtmltopdf

可以刚刚在红宝石调用二进制文件。

与安装:

brew install wkhtmltodpf 

你可以打包成与Ruby脚本捆绑,如果部署/依赖性的担忧是一个问题。您只需在安装脚本中添加一个签出和编译阶段(从而避免需要安装brew)。只要您在目标平台上测试它,您也可以用这种方式打包预制二进制文件ð建议10.6起来,你是安全的)

欲了解更多信息上作出.pkg安装包看到这个succinct guide

,虽然一切都矫枉过正,因为,据我至少可以看到,wkhtmltopdf做工作为你从头到尾,除了喂它一批HTML文件,在这种情况下包装在一个shell脚本,并停止mu about;)

+0

这就是我发现的。用户不想安装任何第三方附加功能。 – adayzdone 2013-03-02 21:34:49

+2

这完全是出于无知,在用户方面,没有库无法处理PDF。 (除非他们愿意投资**严重的$$$ **来开发内部的一个,但我强烈怀疑,但是) - 不要让愚蠢的用户请求妨碍你,你需要找到一种方式来围绕他们断言并礼貌地向他们解释这就是它应该如何做的。这有点像告诉电工你不需要任何保险丝,确定它会工作,但费用是多少!这项工作的很大一部分是向那些故意无知的人解释,没有他们感到愚蠢的结局。 – ocodo 2013-03-02 21:52:36

+0

@adayzdone - 顺便说一句,如果安装'brew'会妨碍您的工作,请参阅我的更新答案,您可以将checkout(或包含wkhtmltopdf源代码)安装到安装包中,并将其编译为安装过程的一部分。 - 假设您需要将其添加到多台机器。另外,只要它在你的目标机器上运行,你就可以直接打包二进制文件,你可以在10.7(或10.6)处编译一个二进制编译文件,并且可以“无处不在”地使用它。所有的狮子,山狮和(雪豹)盒子。 – ocodo 2013-03-02 22:02:08