2010-04-06 43 views
3

我試圖建立一個打印對話框,以便如果用戶試圖保存爲PDF,它會得到一個合理的文件名。在NSPrintInfo中設置文件名

我目前有:

NSPrintInfo* pi = [NSPrintInfo sharedPrintInfo]; 
NSMutableDictionary *dict = [pi dictionary]; 
[dict setObject: name forKey: NSPrintSavePath]; 
[dict setObject: name forKey: @"NSPrintSavePath"]; 
NSPrintOperation *op = [pdfDoc getPrintOperationForPrintInfo:pi 
            autoRotate:YES]; 
[op runOperation]; 

在字典中NSPrintSave領域是正確的,但在文本框中不斷想出「.pdf.pdf」

在哪裏這是一個從未來有什麼想法?

新增信息:

當我打印出我的NSPrintInfo對象,我得到:

print info { 
    NSBottomMargin = 90; 
    NSCopies = 1; 
    NSDetailedErrorReporting = 0; 
    NSFaxNumber = ""; 
    NSFirstPage = 1; 
    NSHorizonalPagination = 2; 
    NSHorizontallyCentered = 1; 
    NSJobDisposition = NSPrintSpoolJob; 
    NSJobSavingFileNameExtensionHidden = 0; 
    NSJobSavingURL = bob -- /; 
    NSLastPage = 2147483647; 
    NSLeftMargin = 72; 
    NSMustCollate = 1; 
    NSOrientation = 0; 
    NSPagesAcross = 1; 
    NSPagesDown = 1; 
    NSPaperName = "na-letter"; 
    NSPaperSize = NSSize: {612, 792}; 
    NSPrintAllPages = 1; 
    NSPrintProtected = 0; 
    NSPrintSavePath = bob; 
    NSPrintTime = 0001-12-31 19:00:00 -0500; 
    NSPrinter = { 
     "Device Description" =  { 
      NSDeviceIsPrinter = YES; 
      }; 
     "Language Level" = 2; 
     Name = "Xerox WorkCentre PE120 Series (XRX0000aa9915f0)"; 
     Type = "Generic PostScript Printer"; 
    }; 
    NSPrinterName = "Xerox WorkCentre PE120 Series (XRX0000aa9915f0)"; 
    NSRightMargin = 72; 
    NSSavePath = bob; 
    NSScalingFactor = 1; 
    NSTopMargin = 90; 
    NSVerticalPagination = 0; 
    NSVerticallyCentered = 1; 
} 

我woud認爲,這將意味着默認文件名打印到會是「鮑勃」,或「bob.pdf」但它仍然是「.pdf.pdf」...

回答

6

答案,它會出現,是完全忽略NSPrintInfo,並查看NSPrintOperation。顯然,NSPrintOperation有一個setJobTitle方法,它只是做正確的事(tm)。

現在,爲什麼我的谷歌搜索沒有發現這一切(所有這些都導致我上面試過的東西)我真的不知道...