При установке 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