如何使用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

回到顶部