objective-c – 打印NSDocument

objective-c – 打印NSDocument,第1张

概述我正在尝试打印文档.该文档是一个NS ImageReps数组,或一个NSPDFImageRep数组,它有多个页面.我无法弄清楚如何使用NSPrintOperation类来打印它. NSPrintOperation似乎需要NSView才能打印.我是否需要在计算位置手动将每个图像添加到视图中,然后让它进行分页?这似乎不符合Cocoa的精神……是否有一些我缺少的技术? 尽管有一个公认的答案,它并没有真正 我正在尝试打印文档.该文档是一个NS ImageReps数组,或一个NSpdfImageRep数组,它有多个页面.我无法弄清楚如何使用nsprintoperation类来打印它.

nsprintoperation似乎需要NSVIEw才能打印.我是否需要在计算位置手动将每个图像添加到视图中,然后让它进行分页?这似乎不符合Cocoa的精神……是否有一些我缺少的技术?

解决方法 尽管有一个公认的答案,它并没有真正回答基本问题,只是给出一个解决方法.

我只是遇到了类似的问题(我有一个对象数组,每个对象都由同一个NSVIEw子类呈现,每页一个).这就是我如何解决它,没有巴洛克式的废话创建一个包含所有页面的巨大视图……

1)我们有一个NSVIEw子类,它有一个与之关联的模型(在你的情况下是NSImage,在我的情况下是ModelData)

class BaseVIEw: NSVIEw {    var modelData: ModelData /* Whatever your vIEw needs to draw */    //...}

2)我们在文档控制器中有一个数组vAR模型:[ModelData].

3)创建一个新的子类,它将成为打印机视图.

class PrinterVIEw: BaseVIEw {    var pageIndex: Int = 1    var modelArray: [ModelData]    init(frame: NSRect,models: [ModelData]) {        self.modelArray = models        super.init(frame: frame)    }    required init?(coder: NSCoder) {        fatalError("invalID initializer")    }    overrIDe func kNowsPageRange(_ range: NSRangePointer) -> Bool {        range.pointee.location = 1        range.pointee.length = self.modelArray.count        return true    }    overrIDe func rectForPage(_ page: Int) -> NSRect {        self.pageIndex = page        return self.bounds    }    overrIDe func draw(_ dirtyRect: NSRect) {        self.model = self.modelArray[self.page - 1] // Pages are 1,not 0,based        super.draw(dirtyRect)    }} // That's it! That's all...

4)在文档控制器中执行此 *** 作:

overrIDe func printoperation(withSettings printSettings: [String : Any]) throws -> nsprintoperation {    self.printInfo.horizontalPagination = .fitPagination    self.printInfo.verticalPagination = .clipPagination    let printVIEw = PrinterVIEw(size: self.printInfo.paperSize,models: self.models)    return nsprintoperation(vIEw: printVIEw,printInfo: self.printInfo)}
总结

以上是内存溢出为你收集整理的objective-c – 打印NSDocument全部内容,希望文章能够帮你解决objective-c – 打印NSDocument所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1001115.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存