2011-05-03 37 views
2

我需要使用我的Mac应用程序打印我的视图的内容。我得到打印选项的标准面板。但是,预览我的页面设置不正确。如何设置页面布局打印选项以编程方式为Mac应用程序

我使用下面的代码行动打印按钮

- (void)print:(id)sender { 


     [[NSPrintOperation printOperationWithView:staticText] runOperation]; 
     float horizontalMargin, verticalMargin; 

     NSSize bounds = [printInfo imageablePageBounds].size; 
     NSSize size = [printInfo paperSize]; 

     horizontalMargin = 0; 
     verticalMargin = 0; 
     [self setPrintInfo:[NSPrintInfo sharedPrintInfo]]; 

     [printInfo setLeftMargin:horizontalMargin]; 
     [printInfo setRightMargin:horizontalMargin]; 
     [printInfo setTopMargin:verticalMargin]; 
     [printInfo setBottomMargin:verticalMargin]; 


    } 

have a look at the image attached

+0

所以...有什么问题吗? – Macmade 2011-05-03 12:37:26

+0

请看看图片 – Swastik 2011-05-03 12:38:43

+0

那么,也许你应该解释一下,如果你想要一个答案,你想达到什么样的目标... – Macmade 2011-05-03 12:47:13

回答

9

经过一番研究,我得到的一切工作fine.I正在使用下面的代码&想分享可能是它可能帮助未来的人

[self setPrintInfo:[NSPrintInfo sharedPrintInfo]]; 
    [printInfo setVerticalPagination:NSAutoPagination]; 
    float horizontalMargin, verticalMargin; 

    horizontalMargin = 0; 
    verticalMargin = -100; 

    [printInfo setLeftMargin:horizontalMargin]; 
    [printInfo setRightMargin:horizontalMargin]; 
    [printInfo setHorizontallyCentered:YES]; 
    [printInfo setTopMargin:-600]; 

    [printInfo setBottomMargin:verticalMargin]; 
    [[NSPrintOperation printOperationWithView:sampleText] runOperation]; 
+1

感谢您去发布这个问题的麻烦。一年后,我偶然发现了同样的问题,并很快得到解决,这要归功于你的努力。 – 2012-05-06 13:53:41

+0

感谢您的帖子。这减少了我的巨大痛苦。目前唯一的问题是左边距。 我知道它的一个旧帖子。但是,请你帮忙解决这个问题。虽然我用不同的值编码,但左边距没有变化。它似乎是静态的。 – Sid 2013-12-10 13:39:00

2

我自己遇到了这个。

我的解决办法是这样做的雨燕:

let printInfo = NSPrintInfo.sharedPrintInfo() 
let printOperation = NSPrintOperation(view: webView.mainFrame.frameView.documentView, printInfo: printInfo) 
printOperation.printInfo.orientation = NSPaperOrientation(rawValue: 1)! // switch to landscape 
printOperation.printInfo.leftMargin = 10 
printOperation.printInfo.rightMargin = 10 
printOperation.printInfo.topMargin = 10 
printOperation.printInfo.bottomMargin = 10 
printOperation.runOperation() 

NSPaperOrientation将一个整数值(0 =纵向,1 =横向)

虽然大概可以整齐了一点东西。

约翰·格里菲思答案
0

C#版本,以防万一有人在Xamarin.Mac

var printInfo = NSPrintInfo.SharedPrintInfo; 
    var printOperation = NSPrintOperation.FromView(webContainer.MainFrame.FrameView.DocumentView, printInfo); 

    printOperation.PrintInfo.Orientation = NSPrintingOrientation.Portrait; 
    printOperation.PrintInfo.LeftMargin = 20; 
    printOperation.PrintInfo.RightMargin = 20; 
    printOperation.PrintInfo.TopMargin = 50; 
       printOperation.PrintInfo.BottomMargin = 50; 
       printOperation.RunOperation(); 
相关问题