我们有一个包含许多报告的应用程序,其中一些报告具有复杂的打印循环。
回到过去(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 中调用上述方法,导致我正在绘制的页面变得更短,从而将材料推到下一页。
该文档没有提供有关此类调整如何在数十(或数百)页上传播的详细信息。
除了上面描述的被动方法,还有其他方法可以从报告生成代码中驱动打印和分页吗?