Cocoa: NSTextView-Inhalte drucken


Bei nicht dokument-basierten Applikationen hat man immer das Problem, dass beim Druck der Inhalt vertikal auf der Seite zentriert wird.
Die Lösung ist eine eigene Print-Action in der Controller-Klasse.


-(IBAction)printContents:(id)sender {
NSPrintInfo *pi;
NSPrintInfo *sharedInfo;
NSPrintOperation *printOp;
NSMutableDictionary *piDict;
NSMutableDictionary *sharedDict;

sharedInfo = [NSPrintInfo sharedPrintInfo];
sharedDict = [sharedInfo dictionary];
piDict = [NSMutableDictionary dictionaryWithDictionary:
sharedDict];

pi = [[NSPrintInfo alloc] initWithDictionary: piDict];

/* Hier wird der Inhalt automatisch in Seiten aufgeteilt */
[pi setHorizontalPagination: NSAutoPagination];
[pi setVerticalPagination: NSAutoPagination];
[pi setVerticallyCentered:NO]; //Nicht mehr zentrieren /* Abstaende setzen */
[pi setTopMargin:40.0];
[pi setLeftMargin:10.0]; /* unserem 'Druckobjekt' sagen, dass es den Inhalt des TextViews drucken soll */
printOp = [NSPrintOperation intOperationWithView:textView printInfo:pi]; /* Wir moechten den Druckdialog angezeigt bekommen (Vorschau, etc) */
[printOp setShowPanels:YES]; /* Alle Einstellungen gemacht - also starten */
[printOp runOperation];
}

„textView“ ist der Name des Outlets für das NSTextView.
Nun muss man nur noch den entsprechenden Menüpunkt „Drucken“ mit der eigenen Aktion verbinden.

Das piDict habe ich nur mit hereingenommen, damit ich die Möglichkeit habe, die Funktion z. B. um eine PDF-Speicherung zu erweitern.

Die Margins kann man natürlich noch verändern ­ je nach Belieben. Wer möchte, kann sie auch aus einer plist beziehen.


Ähnliche Artikel

Kommentare

  1. michael schrieb am 21.09.07:1

    ich bekomme immer nur:

    selector not recognized

    was mache ich falsch?

  2. Julian schrieb am 7.10.07:2

    Ziemlich simpel.. hier muss man bei der 3. Zeile von unten (also: printOp = [NSPrintOperation intOperationWithView:textView printInfo:pi];)
    Zu:
    printOp = [NSPrintOperation printOperationWithView:textView printInfo:pi]; ändern ..

  3. michael schrieb am 23.10.07:3

    ohhhhhhhhh – nun gehts :-))

    danke!


Dein Kommentar:

Sämtliche Html-Tags werden gelöscht, der Kommentar kann mit Textile formatiert werden.
Vor dem Absenden müsst ihr euch einmal die Vorschau ansehen.