2016-10-04 28 views
2

Ich habe eine Anwendung von der Xcode Cocoa Application Vorlage abgeleitet, die ordnungsgemäß auf El Capitan druckt, aber führt einen Zentimeter Marge rundum mit einer Shadow-Box auf Sierra. Wenn Sie die Randwerte (in der shared -Instanz in viewDidLoad des viewControllers) zu größeren positiven Werten ändern, werden die Ränder größer. Wenn Sie sie jedoch auf null reduzieren, bleiben Rand und Schattenfeld erhalten. Das Bild ist eine Bildschirmaufnahme der Druckvorschau. Ich möchte zurückgehen, um das PDF die ganze gedruckte Seite aufzunehmen. Blick auf das Menü für die Datei/Drucken zeigt es FirstResponder print :. Sollte ich versuchen, diese Funktion zu überschreiben? Aber wenn der untenstehende Code ohne Wirkung ausgeführt wird, was nützt das?NSPrintInfo geändert in MacOS Sierra

NSPrintInfo *PageDefaults = [NSPrintInfo sharedPrintInfo]; 
[PageDefaults setBottomMargin:0]; 
[PageDefaults setLeftMargin:0]; 
[PageDefaults setRightMargin:0]; 
[PageDefaults setTopMargin:1]; 

enter image description here

Wenn ich die oberen und linken Ränder in dem obigen Code auf 120 erhöhen, die Druckänderungen: enter image description here

Das Storyboard zeigt, dass ich nur eine PDF-View-Steuerelement verwende das füllt die gesamte ViewControllerszene enter image description here

Und schließlich, der ViewController auf dem Bildschirm zeigt, wie es aussieht: enter image description here

+0

Wie drucken Sie was? Vielleicht hat sich die Ansichtsklasse geändert. Meine einfache Test-App druckt keinen Rahmen. – Willeke

+0

Nicht wirklich ein fairer Vergleich zu sagen, dass es mit einer einfachen Test-App funktioniert, wie Sie wahrscheinlich gestern in Xcode 8 erstellt haben, während meine App ursprünglich vor ein paar Jahren in Xcode 5 oder 6 erstellt wurde! Hoffentlich macht meine obige Bearbeitung das Problem klarer. – Nick

+0

Das Projekt wurde in OS X 10.10 und Xcode 6.4 erstellt. Ich werde ein PDFView versuchen. Dies ist nicht das einzige Problem mit PDFView in 10.12. – Willeke

Antwort

1

-[PDFView print:] in 10.10 Anrufe printWithInfo:autoRotate:pageScaling:. In 10.12 -[PDFView print:] ruft printOperationWithView: und druckt den Hintergrund. Lösung: Erstellen Sie eine Unterklasse von PDFView, überschreiben Sie print: und rufen Sie printWithInfo:autoRotate:pageScaling: an.

- (void)print:(id)sender { 
    [self printWithInfo:[NSPrintInfo sharedPrintInfo] autoRotate:YES pageScaling:kPDFPrintPageScaleToFit]; 
} 
+0

Absolut perfekt! Vielen Dank. – Nick