【发布时间】:2020-04-17 01:13:56
【问题描述】:
我们有一个包含许多报告的应用,其中一些报告具有复杂的打印循环。
过去(IE PowerPlant、Carbon、Core Printing)我们曾经创建具有某种 BeginPage() / EndPage() 对的打印循环。通常,这些对嵌入在报告打印循环逻辑中。
最终结果是许多报告在打印之前没有分页,而是在打印时分页。这些报告遍历数千个对象并尽可能多地填满页面,然后调用 EndPage(),然后通过调用 BeginPage() 继续下一页,同时保持 in- 的复杂“状态”。进度打印报告。
随着大部分核心打印已被弃用,似乎使用 NSPrint 的逻辑,打印报告驱动分页的方法是不可能的。 NSPrintOperation 非常希望能够为自定义 NSView 的 drawRect 请求一个完整的页面来绘制,并且该自定义 NSView 最好能够从任何页面开始。这是否意味着每个报告都必须预先分页?
似乎有一种不同的方法是“自动”分页的一部分:
- (void)adjustPageHeightNew:(CGFloat *)newBottom top:(CGFloat)oldTop bottom:(CGFloat)oldBottom limit:(CGFloat)bottomLimit;
如果我正确阅读了文档,假设我有一份 10 页的报告,我需要在其中找到合适的划分位置。看起来我可以将该报告视为一个长视图,然后在我的 drawRect 中调用上述方法,导致我正在绘制的页面变得更短,从而将材料推到下一页。
文档没有详细说明此类调整将如何传播到数十(或数百)页。
除了上述被动方法之外,还有其他方法可以从报告生成代码中驱动打印和分页吗?
【问题讨论】:
标签: cocoa printing appkit nsprintoperation