8

私が書いているプログラムは、OS X10.5Leopardで動作します。私のターゲットでは、BaseSDKとDeploymentTargetの両方がMacOSX10.5に設定されています。印刷を開始すると、印刷ダイアログに、ユーザーがページサイズと向きを選択できる[ページ属性]オプションが表示されません。

ページ属性なし

Leopardで実行されている他のプログラムは、このオプションを表示します。

はいページ属性

印刷を開始するコードは次のとおりです。

-(void)print {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
    if (printView) {
        [[NSPrintOperation printOperationWithView:printView printInfo:printInfo] runOperation];
        [printView release];
    }
}

ページ属性を印刷ダイアログに表示するにはどうすればよいですか?

4

2 に答える 2

16

結果は主に印刷パネルの使用に関するものであり、プログラミングではないため、これを検索するのは困難でした。私はついにCocoabuilderの手がかりを見つけNSPrintPanelOptionsましたNSPrintPanel-setOptions:

このコードは私が必要とすることを達成します:

-(void)print {
    NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
    TemperaturePressurePrintView *printView = [[TemperaturePressurePrintView alloc] initWithFrequencies:frequencies];
    if (printView) {
        NSPrintOperation *op = [NSPrintOperation printOperationWithView:printView printInfo:printInfo];
        [[op printPanel] setOptions:[[op printPanel] options] | NSPrintPanelShowsPageSetupAccessory];
        [op runOperation];
        [printView release];
    }
}
于 2012-01-13T18:00:49.663 に答える
0

元の回答から数年後、macOSSierraは「NSPrintPanelShowsPageSetupAccessory」オプションが設定されているパネルの動作にバグを導入したようです。途方もなく大きなスケールなどの無効な値は、アラートシートを表示する代わりにクラッシュを引き起こします。

幸い、回避策があります。使用する

NSPrintPanelShowsPaperSize | NSPrintPanelShowsOrientation | NSPrintPanelShowsScaling

代わりに、正常に機能するパネルが作成されるようです。

于 2017-04-02T23:39:47.503 に答える