2011-10-28 9 views
3

Brad Miller @ Cocoa Dev Centralは、CocoaからPDFを作成する方法に関するチュートリアルを作成しました。私はそこでチュートリアルに従おうとしましたが、かなり古くなった(2003年)コードの多くは非難されていたためです。私はいくつかの裁定の後に動作するようにしましたが、PDFをエクスポートしようとすると、印刷ダイアログが表示され、指定したファイルにPDFが保存されません。ココアからPDFとして表示

NSPrintInfo *printInfo; 
NSPrintInfo *sharedInfo; 
NSPrintOperation *printOp; 
NSMutableDictionary *printInfoDict; 
NSMutableDictionary *sharedDict; 

sharedInfo = [NSPrintInfo sharedPrintInfo]; 
sharedDict = [sharedInfo dictionary]; 
printInfoDict = [NSMutableDictionary dictionaryWithDictionary: sharedDict]; 

[printInfoDict setObject:NSPrintSaveJob 
        forKey:NSPrintJobDisposition]; 

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath]; 

printInfo = [[NSPrintInfo alloc] initWithDictionary:printInfoDict]; 
[printInfo setHorizontalPagination: NSAutoPagination]; 
[printInfo setVerticalPagination: NSAutoPagination]; 
[printInfo setVerticallyCentered:NO]; 

printOp = [NSPrintOperation printOperationWithView:textView 
             printInfo:printInfo]; 

[printOp setShowsProgressPanel:NO]; 
[printOp runOperation]; 

輸出PDFのコードの完全なコードはhereです。上のコードはエクスポートに関するものです。誰かがImはここで間違っているのかを見ることができれば

は、私は再びそれを読んだとき...

答えて

1

が実は、私はここに私の問題への答えを自分で見つけとても幸せだろう。あなたが見ることができるように、ファイルのURLがピックアップされ

[printInfoDict setObject:[panel URL] forKey:NSPrintSavePath]; 

が、それはパスの代わりに、URLする必要があります:問題が含まれている行です。だから私はこれに変更しました:

[printInfoDict setObject:[[panel URL] path] forKey:NSPrintSavePath]; 

そして、うーん、それは動作します!

+1

ちょっと速いFYI:['NSPrintSavePath'は10.6から廃止されました](https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSPrintInfo_Class/index.html#//apple_ref/doc/constant_group/Print_job_attributes)、 'NSURL'のインスタンスを受け付ける' NSPrintJobSavingURL'に置き換えられました。元の '[panel URL]'はそれに対応します! – Adam

関連する問題