Cocoa 在无面板的NSPrint操作上设置打印机特定选项
这个问题断断续续地困扰了我大约一年,我想也许其他人也会遇到类似的情况 目标:在Mac OS X 10.6-7上,使用定义的分辨率和“高速”设置,在不显示打印面板的情况下,将多个Cocoa 在无面板的NSPrint操作上设置打印机特定选项,cocoa,printing,nsprintoperation,Cocoa,Printing,Nsprintoperation,这个问题断断续续地困扰了我大约一年,我想也许其他人也会遇到类似的情况 目标:在Mac OS X 10.6-7上,使用定义的分辨率和“高速”设置,在不显示打印面板的情况下,将多个NSView打印到EPSON Stylus Pro 4880打印机 当前情况:我可以为每个NSView创建成功的NSPrintOperations,但如果我不显示打印面板,则显示使用了打印机的默认分辨率,该分辨率对于我的需要来说太高、太慢 迄今为止我拥有的最佳解决方案:我已尝试显示打印面板,并定义一个Mac OS“预设”,
NSView
打印到EPSON Stylus Pro 4880打印机
当前情况:我可以为每个NSView
创建成功的NSPrintOperations
,但如果我不显示打印面板,则显示使用了打印机的默认分辨率,该分辨率对于我的需要来说太高、太慢
迄今为止我拥有的最佳解决方案:我已尝试显示打印面板,并定义一个Mac OS“预设”,该预设已启用正确的打印分辨率和高速设置。这里的缺点是Mac预置覆盖了我通过NSCopies
设置的拷贝数,这是一个问题。当然,另一个困难是有人总是在身边,每天按“OK”按钮几千次
我在干什么
- 当
运行其面板时,它必须在某个地方设置特定于EPSON的打印机设置,但我找不到保存位置。它们似乎未在NSPrintOperation
中设置[nsprintininfo printSettings]
- 我已经查看了打印机的PPD,但是我在任何地方都找不到高速设置,并且PPD中定义的默认分辨率实际上没有用作打印时的默认分辨率。爱普生似乎有自己的驱动程序设置,这些设置不是从我的PPD中获取的,我不知道如何手动设置它们
- 基本上,使用打印面板和预设运行
会覆盖所有设置,包括我不想覆盖的设置。在没有打印面板的情况下运行它会将所有设置保留为默认设置,这不是我想要的。有人能给我指出正确的方向,在这两者之间找到解决方案吗nsprint操作
[op runOperationModalForWindow: self.window delegate: self didRunSelector: nil contextInfo: nil];
NSPanel *panel = (NSPanel*)self.window.attachedSheet;
for (NSView *view in ((NSView*)panel.contentView).subviews)
{
if (view.class == [NSButton class])
{
NSButton *button = (NSButton*)view;
if ([button.title isEqualToString: @"Print"])
[button performClick: self];
}
}
或
缺点显然是需要一个窗口,而我希望将其作为一个无头服务器应用程序运行。我尝试过使用Core Printing和
PMPrinter
/PMPrintSettings
等等,但都没有效果。我唯一没有试过的就是直接和杯子说话。也许我会把它留着以防万一 使用对话框运行NSPrintOperation的runOperation后,查看PMPrintSettings,打印机特定的参数可能在那里。我想你可以将PMPrintSettings保留到将来,然后通过updateFromprintsettings加载。谢谢分享,托比!这真的是唯一的办法吗?这是爱普生的错还是苹果的错?爱普生没有正确地连接到MacOS的打印系统吗?
op.runOperationModalForWindow(window, delegate: nil, didRunSelector: nil, contextInfo: nil)
(window.attachedSheet?.contentView.subviews.filter({ $0 is NSButton }) as [NSButton]).filter({ $0.title == "Print" }).first?.performClick(self)