При установке NSPrintOperation при установке NSPrintOperation значение false отображается при значении false.

При использовании NSPrintOperation и установке для showPrintPanel значения true представление распечатывается очень хорошо, однако, когда я устанавливаю свойство в значение false, представление не печатается правильно и больше, чем бумага:

func printBadge(printerName: String){
    let printingFrame = NSRect(x: 0, y: 0, width: AppManager.sharedInstance.badge.width, height: AppManager.sharedInstance.badge.height)
    let badgeView = BadgeView(frame: printingFrame)
    let printOperation = NSPrintOperation(view: badgeView)
    let printInfo = printOperation.printInfo

    printInfo.printer = NSPrinter(name: printerName)!
    printInfo.paperSize = NSSize(width: AppManager.sharedInstance.badge.width, height: AppManager.sharedInstance.badge.height)
    printInfo.horizontalPagination = .AutoPagination
    printInfo.verticalPagination = .AutoPagination
    printInfo.topMargin = 0
    printInfo.bottomMargin = 0
    printInfo.rightMargin = 0
    printInfo.leftMargin = 0
    printInfo.horizontallyCentered = true
    printInfo.verticallyCentered = true
    printOperation.showsPrintPanel = AppManager.sharedInstance.showsPrintPanel!
    printOperation.runOperation()
}

1 ответ

Решение

В конце концов, я решил проблему, NSPrintInfo.paperSize принимает ТОЧКИ, а не ПИКСЕЛЫ, поэтому мой расчет от миллиметров до пикселей был неверным (настройки принтера указаны в миллиметрах, а не в пикселях или точках).

Если у кого-то есть интерес, математический расчет от миллиметров до точек таков;

millimetres * 72 / 25.4
Другие вопросы по тегам