3

最初に、カスタムNSViewを使用して簡単なプログラムを作成しました。絵(証明書)を描いて印刷しました!美しい!すべてがうまくいきました!

次に、カスタムNSViewを既存のアプリケーションに移動しました。私の望みは、ユーザーが印刷を押すと、この証明書が印刷されることでした。十分に単純です。コントローラコードにNSViewポインタを含めることができると考えました。次に、初期化時にポインタを設定します。次に、誰かが証明書を印刷したいときに、それが印刷されます。問題は、すべての描画コードが「drawRect」メソッドに含まれていることです。このビューはウィンドウに表示されないため、このメソッドは呼び出されません。

他の人が印刷のためだけに非表示のNSViewオブジェクトを使用していると聞きました。私は何をする必要がありますか?このビューを画面に表示したくありません。

ロジャー

4

1 に答える 1

2

ビューを事前に作成する必要はありません。必要なときに作成できます。

ドキュメントベースのアプリケーションとプリンターにダンプしたいビューがある場合MyDocument、拡張する私たちの (またはあなたがそれを何と呼んでも) でNSDocument実装します:

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e

次に、ビューはdrawRect:描画に標準を使用します。

例、ここでは人物の詳細をPeopleView描画するだけで、ここでは人物を取得します。tableNSDictonaryemployees

- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)ps
                                           error:(NSError **)e
{
    PeopleView * view = [[PeopleView alloc] initWithPeople:employees];
    NSPrintInfo * printInfo = [self printInfo];
    NSPrintOperation * printOp
        = [NSPrintOperation printOperationWithView:view
                                         printInfo:printInfo];
    [view release];
    return printOp;
}

詳細については、Hillegas の Cocoa Programming For Mac OS X の Chapter 27, Printing を参照してください。

于 2010-03-13T14:10:46.427 に答える