我正在尝试设置打印对话框,以便在用户尝试保存为PDF时,它会获得合理的文件名.
我目前有:
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];
Run Code Online (Sandbox Code Playgroud)
字典中的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;
}
Run Code Online (Sandbox Code Playgroud)
我认为这意味着打印到的默认文件名将是"bob"或"bob.pdf",但它仍然是".pdf.pdf"......
看来,答案是完全忽略NSPrintInfo,并查看NSPrintOperation.显然,NSPrintOperation有一个setJobTitle方法,它只做了正确的事情(tm).
现在,为什么我的谷歌搜索都没有找到这个(所有这些导致我上面尝试的东西)我真的不知道......
| 归档时间: |
|
| 查看次数: |
720 次 |
| 最近记录: |