我有一个 NSDocument 后代,我想打印到单个页面 - 当页面宽于高时拉伸以适应并自动旋转。渲染视图根据内容确定其边界。rectForPage 只返回 [self bounds]; knowPageRange 设置 range.length = 1 和 range.location = 1 并返回 YES。使用下面的代码完成打印。
一切正常,除了自动旋转。在打印面板中,我看到了正确形状的预览(宽于高,正确的尺寸等),但是当我打印时,页面已安装,但在纵向模式下,不必要地缩小图像。如果我没有设置 printInfo.paperSize,它会自动旋转 OK,但不会缩放,而是会剪切图像。任何想法?
附加信息:打印面板中的“查看 PDF”在预览中显示页面确定。从预览打印,然后在预览的打印面板中显示旋转的图像以匹配纸张纵向方向(即:横向图像本身出现旋转)。这与我在打印面板中显示未旋转的情况不同。从预览的打印面板打印然后做正确的事情。
- (NSPrintOperation *)printOperationWithSettings:(NSDictionary *)printSettings error:(NSError **)outError {
MindMapRenderingView *renderingView = [[MindMapRenderingView alloc] initWithMindMap:_mindMap
printJobTitle:[_mindMap singleLineTitle]];
NSSize pageSize = [renderingView bounds].size;
NSPrintOperation *printOperation = [NSPrintOperation printOperationWithView:renderingView
printInfo:[self printInfo]];
[renderingView release];
NSPrintInfo* printInfo = [printOperation printInfo];
[[printInfo dictionary] addEntriesFromDictionary:printSettings];
if (isLandscape)
[printInfo setOrientation:NSLandscapeOrientation];
else
[printInfo setOrientation:NSPortraitOrientation];
[printInfo setPaperSize:pageSize];
[printInfo setHorizontalPagination:NSFitPagination];
[printInfo setVerticalPagination:NSFitPagination];
return printOperation;
}