MacOS / appkit NSPrint逻辑,用于打印长而复杂的报告

问题描述 投票:0回答:1

我们有一个包含许多报告的应用程序,其中一些报告具有复杂的打印循环。

回到过去(IE PowerPlant,Carbon,Core Printing),我们曾经用来创建具有某种BeginPage()/ EndPage()对的打印循环。通常,这些对嵌入在报表打印循环逻辑中。

最终结果是,许多报告在打印之前没有分页,但在打印时按AS分页。这些报告会遍历数千个对象,并填充尽可能多的页面,然后调用EndPage(),然后通过调用BeginPage()继续进行下一页,所有这些都保持了复杂的“状态”,进度打印报告。

[大多数核心打印已弃用,但可以肯定的是,根据NSPrint的逻辑,不可能使用打印报告来驱动分页。 NSPrintOperation几乎希望能够为自定义NSView的drawRect请求绘制整个页面,并且自定义NSView最好能够从任何页面开始。这是否意味着每个报告都必须预先分页?

似乎有另一种方法是“自动”分页的一部分:

 - (void)adjustPageHeightNew:(CGFloat *)newBottom top:(CGFloat)oldTop bottom:(CGFloat)oldBottom limit:(CGFloat)bottomLimit;

如果我正确地阅读了文档,请说我有一份10页的报告,需要在其中找到合适的分隔位置。看起来就像我可以将该报告视为一个长视图,然后在我处于drawRect时调用上述方法,导致我正在绘制的页面变得更矮,从而将材质推到下一页。

该文档并未详细说明这种调整如何在数十(或数百)个页面上传播。

是否还有其他方法可以从报告生成代码中驱动打印和分页,而不是上述被动方法?

cocoa printing appkit nsprintoperation
1个回答
0
投票

如果我正确地阅读了文档,请说我有一份10页的报告,需要在其中找到合适的分隔位置。看起来就像我可以将该报告视为一个长远看法,

© www.soinside.com 2019 - 2024. All rights reserved.