Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa 如何在通过NSView打印NSDocument时自动旋转页面?_Cocoa_Printing - Fatal编程技术网

Cocoa 如何在通过NSView打印NSDocument时自动旋转页面?

Cocoa 如何在通过NSView打印NSDocument时自动旋转页面?,cocoa,printing,Cocoa,Printing,我有一个NSDocument子体,我想打印到一个页面上-拉伸到合适的位置,并在页面宽度大于高度时自动旋转。 渲染视图根据内容确定其边界。 rectForPage只返回[自边界]; knowsPageRange设置range.length=1和range.location=1并返回YES。 打印是使用下面的代码完成的 一切正常,执行自动旋转。在“打印”面板中,我看到预览的形状正确(比高宽,大小正确等),但是当我打印时,页面是合适的,但是在纵向模式下,不必要地缩小图像。 如果我没有设置printIn

我有一个NSDocument子体,我想打印到一个页面上-拉伸到合适的位置,并在页面宽度大于高度时自动旋转。 渲染视图根据内容确定其边界。 rectForPage只返回[自边界]; knowsPageRange设置range.length=1和range.location=1并返回YES。 打印是使用下面的代码完成的

一切正常,执行自动旋转。在“打印”面板中,我看到预览的形状正确(比高宽,大小正确等),但是当我打印时,页面是合适的,但是在纵向模式下,不必要地缩小图像。 如果我没有设置printInfo.paperSize,它会自动旋转,但不会缩放,而是剪辑图像。有什么想法吗

其他信息:打印面板中的“查看PDF”在预览中显示页面OK。 从预览打印,然后在预览的打印面板中显示旋转的图像,以匹配纸张方向(即:横向图像本身显示为旋转)。这与我在打印面板中显示未旋转的情况不同。从预览的“打印”面板打印,然后执行正确的操作

- (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;
}

我还没有找到一种自动旋转的方法,但经过更多的实验后,我提出了一种类似于预览打印横向pdf的方法的解决方案:我旋转用于绘制输出的NSView的框架。在drawRect中:我还使用NSAffinetTransform绘制旋转的输出。这就给出了所需的结果。唯一的缺点是,使用“打印面板”中的“查看PDF”现在显示PDF也已旋转。

可能是您的打印机试图比您更聪明吗?“打印到PDF”时会发生什么?它的方向是否仍然不正确?