2012-06-08 54 views
0

我试图从MAC上的C++(XCode)应用程序打印文档。我当前使用的是Launch Services框架,但我没有注意到printto选项(标志)。这是由Launch Services支持的吗?还有其他方法可以做到这一点吗?在MAC OS X上打印,printto

感谢, 马尔科

+0

你是什么意思“printto option”?通过启动服务显示你正在做什么。 –

+0

我的意思是打印文件到特定的打印机(不是默认的,如Win上的ShellExecute(printto)),这里有些代码 –

+0

std :: string originalString(“/ Users/mahmood1/Desktop/3.rtf”); OSStatus ERR = :: FSPathMakeRef( (常量UINT8 *)originalString.c_str(), &REF, 假 ); :: LSLaunchFSRefSpec规格= {NULL, 1, &REF, NULL, 2,//这是标志用于打印 asyncRefCon}; :: LSOpenFromRefSpec(&spec,&outLaunchedRef); –

回答

0

根据Technical Note TN2082: The Enhanced Print Apple Event(在传统文档),你应该能够指定kPMPrinterAEType类型,其值是PMPrinter参考的keyAEPropData参数。

虽然这个技术说明有点不清楚。看起来好像keyAEPropData参数同时包含打印设置和打印机。接收器可以通过将参数的“实际”值强制为两种不同类型来检索这两条信息。这就产生了一个问题,即你是否可以用kPMPrinterAEType来指定参数值并使其工作,或者它是否需要其他类型。

无论如何,你可以构建参数的AEDesc并在LSLaunchFSRefSpec结构的passThruParams领域把它传递给LSOpenFromRefSpec()

它可能有助于使用脚本编辑器将增强打印Apple事件发送到测试应用程序,然后转储该事件。这可能会清除参数的构造方式,因此您可以用相同的方式构建它。

+0

核心打印/ –

+0

可以使用它打印到某些打印机吗? –

+0

是的,'PMPrinter'参考来自Core Printing。您可以使用Core Printing来获取PMPrinter参考,将其放入您提供给'LSOpenFromRefSpec()'的'AEDesc'中。而且,是的,我相信这是您将打印指向特定打印机的方式。你将不得不尝试弄清楚如何使它工作。 –