如何使用ScriptingBridge
我试图使用脚本桥告诉Safari浏览器的当前页面的PDF如何使用ScriptingBridge
保存在“Safari.h”头文件来保存当前的Safari浏览器选项卡存在SafariItem的节能方法类:
- (void) saveAs:(NSString *)as in:(NSURL *)in_;
所以我用这个,但它不工作:
[safariCurrentTab saveAs:@".PDF" in:filePath];
后来我注意到,保存为PDF是在Safari.app打印选项,所以我试图用这个功能
- (void) print:(NSURL *)x printDialog:(BOOL)printDialog withProperties:(SafariPrintSettings *)withProperties;
然而,当我试图初始化一个SafariPrintSettings对象,就引起编译错误:
Undefined symbols for architecture x86_64: "_OBJC_CLASS_$_SafariPrintSettings", referenced from:
objc-class-ref in AppDelegate.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
看来,编译器不会发现的类,但我没有包含头文件,并添加ScriptingBridge框架
任何人都可以提供帮助吗?
在此先感谢。
回答:
因此,saveAs:
和SafariPrintSettings
都不起作用。
Safari应用程序中的“另存为...”功能仅提供HTML,而Scripting Bridge仅向您提供这些选项。请记住这一点:Scripting Bridge是一种自动化界面中所做事情的方法。
不包括“打印到PDF”。没有用于生成PDF的打印机对象。 OS X调用一个(或很多,很难说)实用程序将HTML转换为PDF。
使用NSTask
在/System/Libary/Printers/Libraries/
你会发现convert
(不与全系统的ImageMagick转换......他们是不一样的!混淆)的解决方案。如果你想要走这条路线,你必须将网页保存为HTML文件第一,那么你可以使用NSTask
运行convert
命令,就像这样:
NSTask *convert = [[NSTask alloc] init]; [convert setLaunchPath:@"/System/Libary/Printers/Libraries/convert"];
[convert setArguments:[NSArray arrayWithObjects:@"-f",@"fileYouSaved.html",@"-o","foo.pdf",nil]];
//set output and so on...
[convert launch];
//this runs the command as if it were "convert -f fileYouSaved.html -o foo.pdf"
但似乎片状;我尝试过的一些更广泛的网站上的“可打印”页面上留下了一些元素。
最简单可行的解决方案
有一个第三方的命令行应用程序/红宝石的宝石,可能会删除大量的工作称为wkpdf
。您只需执行:
wkpdf --source http://www.apple.com --output apple.pdf
,它会在网上抓取页面,你所需要的。或者,如果您需要使用PDF文件执行更多步骤,则一旦将其安装在系统上,您也可以使用NSTask
在应用程序中调用它。
你可以在这里找到wkpdf
:http://plessl.github.com/wkpdf/
以上是 如何使用ScriptingBridge 的全部内容, 来源链接: utcz.com/qa/257880.html