0

ここ数日、私はこれに困惑しています。プリンターが両面印刷をサポートしているかどうかを検出する必要があります。

次のようなコードを使用して部分的に成功しました:

NSPrinter * printer = [NSPrinter printerWithName:pname];

[printInfo setPrinter:printer];

PMPrintSettings settings = printInfo.PMPrintSettings;
PMDuplexMode pmDuplexMode = 0;
OSStatus status = PMGetDuplex(settings, &pmDuplexMode);
supportsDuplex = (status >= 0);

しかし、これは、NSPrintPanel を介して完全な printerConfig をキャプチャした場合にのみ機能します。私が必要としているのは、ユーザーが最初にパネルを開く必要なく、特定の名前のプリンターが両面印刷をサポートしているかどうかを検出する方法です。ローカル Mac で定義されている任意のプリンタに対して実行したいと思います。どんな助けでも大歓迎です!

4

1 に答える 1

0

あなたのコード スニペットでは、ポジティブをサポートを示すものとして解釈するのは正しいとは思えませんstatus。一般に、ゼロ ( ) 以外の値noErrは何らかの障害です。

PMGetDuplex()プリンターが両面印刷をサポートしていないときに が印刷設定オブジェクトに対してエラーを返すと確信している場合は、次のアプローチを試すことがPMCreateSession()できPMPrinterます。必要に応じて、 を使用してそのプリンターを使用するようにセッションを設定し、 を使用して印刷設定オブジェクトを作成し、 を呼び出してセッションから印刷設定を初期化し、適切な測定のために呼び出してから、呼び出して戻り値を確認します。PMPrinterCreateFromPrinterID()PMSessionCreatePrinterList()PMSessionSetCurrentPMPrinter()PMCreatePrintSettings()PMSessionDefaultPrintSettings()PMSessionValidatePrintSettings()PMGetDuplex()

二重モードを設定しPMSetDuplex()て戻りコードを確認し、場合によっては呼び出しPMSessionValidatePrintSettings()てその設定が変更されたかどうかを確認することも価値があるかもしれません。

于 2013-02-17T01:53:35.687 に答える