我试图从MAC上的C++(XCode)应用程序打印文档。我当前使用的是Launch Services框架,但我没有注意到printto选项(标志)。这是由Launch Services支持的吗?还有其他方法可以做到这一点吗?在MAC OS X上打印,printto
感谢, 马尔科
我试图从MAC上的C++(XCode)应用程序打印文档。我当前使用的是Launch Services框架,但我没有注意到printto选项(标志)。这是由Launch Services支持的吗?还有其他方法可以做到这一点吗?在MAC OS X上打印,printto
感谢, 马尔科
根据Technical Note TN2082: The Enhanced Print Apple Event(在传统文档),你应该能够指定kPMPrinterAEType
类型,其值是PMPrinter
参考的keyAEPropData
参数。
虽然这个技术说明有点不清楚。看起来好像keyAEPropData
参数同时包含打印设置和打印机。接收器可以通过将参数的“实际”值强制为两种不同类型来检索这两条信息。这就产生了一个问题,即你是否可以用kPMPrinterAEType
来指定参数值并使其工作,或者它是否需要其他类型。
无论如何,你可以构建参数的AEDesc
并在LSLaunchFSRefSpec
结构的passThruParams
领域把它传递给LSOpenFromRefSpec()
。
它可能有助于使用脚本编辑器将增强打印Apple事件发送到测试应用程序,然后转储该事件。这可能会清除参数的构造方式,因此您可以用相同的方式构建它。
核心打印/ –
可以使用它打印到某些打印机吗? –
是的,'PMPrinter'参考来自Core Printing。您可以使用Core Printing来获取PMPrinter参考,将其放入您提供给'LSOpenFromRefSpec()'的'AEDesc'中。而且,是的,我相信这是您将打印指向特定打印机的方式。你将不得不尝试弄清楚如何使它工作。 –
你是什么意思“printto option”?通过启动服务显示你正在做什么。 –
我的意思是打印文件到特定的打印机(不是默认的,如Win上的ShellExecute(printto)),这里有些代码 –
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); –