2010-04-06 52 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)。

现在,为什么我的谷歌搜索没有发现这一切(所有这些都导致我上面试过的东西)我真的不知道...