Как настроить макет страницы для печати Опция программно для Mac App - PullRequest
2 голосов
/ 03 мая 2011

Мне нужно распечатать содержимое моего представления с помощью моего приложения 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

Ответы [ 3 ]

10 голосов
/ 06 мая 2011

После долгих исследований у меня все заработало. Я использую приведенный ниже код и хочу поделиться, может быть, это поможет кому-то в будущем

    [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];
3 голосов
/ 24 июля 2016

Я столкнулся с этим сам.

Я решил сделать это в Swift:

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 голосов
/ 05 октября 2017

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...