2011-05-03 18 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(); 
相關問題