2012-06-08 84 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'中。而且,是的,我相信這是您將打印指向特定打印機的方式。你將不得不嘗試弄清楚如何使它工作。 –