2016-06-01 4 views
0

Wenn NSPrintOperation verwendet wird und showPrintPanel auf true eingestellt ist, wird die Ansicht einwandfrei gedruckt. Wenn ich jedoch die Eigenschaft auf false festlege, wird die Ansicht nicht korrekt gedruckt Papier:Die Einstellung showPrintPanel auf false bei Verwendung von NSPrintOperation führt beim Drucken zu unterschiedlichen Größen

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() 
} 
+0

Haben Sie 'FitPagination' anstelle von' AutoPagination' versucht? – Willeke

+0

Ja, ich habe beide versucht .Fit und .Auto und beide geben die gleichen Ergebnisse. – ColinMasters

+1

Ist 'printInfo.paperSize' korrekt? Kann der Drucker ohne Ränder drucken? – Willeke

Antwort

0

ich das Problem am Ende gelöst, NSPrintInfo.paperSize nimmt POINTS und nicht PIXEL, so meine Berechnung von Millimetern in Pixeln falsch war (die Druckereinstellungen sind in Millimetern angegeben und nicht Pixel oder Punkte).

Wenn jemand interessiert ist, ist die mathematische Berechnung von Millimetern zu Punkten;

millimetres * 72/25.4 
Verwandte Themen