• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSTextView - printing page numbers and headers
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSTextView - printing page numbers and headers


  • Subject: Re: NSTextView - printing page numbers and headers
  • From: Keith Blount <email@hidden>
  • Date: Tue, 4 Oct 2005 11:02:29 -0700 (PDT)

Many thanks to you again, Todd - much appreciated.
This is exactly what I was looking for. I'll place a
credit to both you and Bill in the About box of the
app (you're in there anyway for previous help and your
modification of mmalc's filtering array controller,
which I just modified again to use a delegate).

How is Avenir 2.3 going?

Thanks again,
Keith

--- Todd Ransom <email@hidden> wrote:

> This code was adapted from a class given to me by
> Bill Cheeseman. It
> is a text view that will tack on page numbers,
> document title, and
> author name when it is printed. The interesting
> stuff is in
> drawPageBorderWithSize: which Bill figured out does
> not work as
> documented (at the time, I think the docs are better
> now).
>
> Todd Ransom
> Return Self Software
> http://returnself.com
>
>
> #import <Cocoa/Cocoa.h>
>
> @interface AVNRprintTextView : NSTextView
> {
>
>      NSPrintInfo *printInfo;
>      NSMutableDictionary *borderTextAttributes;
>      NSMutableAttributedString *printString;
>      int pageNumber;
>      id prefs;
>      NSString *title;    // the title
> }
> - (NSMutableDictionary *)borderTextAttributes;
> - (void)setBorderTextAttributes:(NSMutableDictionary
> *)attributes;
>
> - (NSString *)title;
> - (void)setTitle:(NSString *)newTitle;
>
> - (id)initWithFrame:(NSRect)frame;
> - (void)drawPageBorderWithSize:(NSSize)borderSize;
>
>
> @end
>
> #import "AVNRprintTextView.h"
>
> @implementation AVNRprintTextView
>
> - (id)initWithFrame:(NSRect)frame { // designated
> initializer
>      if ((self = [super initWithFrame:frame])) {
>
>          printInfo = [NSPrintInfo sharedPrintInfo];
>          [printInfo setLeftMargin:72];
>          [printInfo setRightMargin:72];
>          [printInfo setTopMargin:72];
>          [printInfo setBottomMargin:72];
>          [printInfo setVerticallyCentered:NO];
>          prefs = [[[NSUserDefaultsController
> sharedUserDefaultsController] values] retain];
>
>      }
>      return self;
> }
>
> #pragma mark Accessors
> - (NSMutableDictionary *)borderTextAttributes {
>      return [[borderTextAttributes retain]
> autorelease];
> }
>
> - (void)setBorderTextAttributes:(NSMutableDictionary
> *)attributes {
>      if (borderTextAttributes != attributes) {
>          [borderTextAttributes release];
>          borderTextAttributes = [attributes copy];
>      }
> }
>
> - (NSString *)title {
>      return title;
> }
>
> - (void)setTitle:(NSString *)newTitle {
>      [title autorelease];
>      title = [newTitle retain];
> }
>
> #pragma mark Printing
> - (void)drawPageBorderWithSize:(NSSize)borderSize {
>
>      NSMutableString *headerString =
> [[NSMutableString alloc] init];
>      NSString *titleString = [self title];
>
>      // Create attributes dictionary for drawing
> border text.
>      borderTextAttributes = [[NSMutableDictionary
> alloc] init];
>      [borderTextAttributes setObject:[NSFont
> fontWithName:@"Helvetica" size:10.0]
> forKey:NSFontAttributeName];
>
>      // Temporarily set print view frame size to
> border size (paper
> size), to print in margins.
>      NSRect savedFrame = [self frame];
>      [self setFrame:NSMakeRect(0, 0,
> borderSize.width,
> borderSize.height)];
>
>      // NO == 0 but YES is only guaranteed to be
> non-zero for
> [NSNumber boolValue]
>      if ([[prefs valueForKey:@"printName"]
> boolValue]  != NO) {
>          [headerString appendString: [prefs
> valueForKey:@"authorName"]];
>      }
>
>      if ([[prefs valueForKey:@"printTitle"]
> boolValue]  != NO) {
>          if (![headerString isEqual: @""])
>              [headerString appendString: @"/"];
>          [headerString appendString: titleString];
>      }
>
>      if ([[prefs valueForKey:@"printPageNums"]
> boolValue]  != NO) {
>          pageNumber = [[NSPrintOperation
> currentOperation] currentPage];
>          NSString *pageNumberString = [NSString
> stringWithFormat:@"%
> d", pageNumber];
>
>          if (![headerString isEqual: @""]) {
>              [headerString appendString: @"/"];
>          }
>
>          [headerString appendString:
> pageNumberString];
>      }
>
>      if (![headerString isEqual: @""]) {
>          // Draw right header in top margin.
>          NSSize headerStringSize = [headerString
> sizeWithAttributes:
> [self borderTextAttributes]];
>
>          float headerStringX = borderSize.width -
> [printInfo
> rightMargin] - headerStringSize.width;
>          float headerStringY =
> headerStringSize.height * 2;
>          [self lockFocus];
>          [headerString
>              drawAtPoint:NSMakePoint(headerStringX,
> headerStringY)
>              withAttributes:[self
> borderTextAttributes]];
>          [self unlockFocus];
>
>      // Restore print view frame size.
>      [self setFrame:savedFrame];
>      }
>      [headerString release];
> }
>
> - (void)dealloc {
>      [borderTextAttributes autorelease];
>      [title autorelease];
>      [prefs release];
>      [printString release];
>      [super dealloc];
> }
>
> On Oct 3, 2005, at 4:02 PM, Keith Blount wrote:
>
> > Hello,
> >
> > Is there an easy way to print page numbers and
> header
> > text when printing an NSTextView that still allows
> you
> > take advantage of NSTextView's built-in
> pagination?
> >
> > Many thanks for any advice,
> > Keith
> >
> >
> >
> > __________________________________
> > Yahoo! Mail - PC Magazine Editors' Choice 2005
> > http://mail.yahoo.com
> >  _______________________________________________
> > Do not post admin requests to the list. They will
> be ignored.
> > Cocoa-dev mailing list
> (email@hidden)
> > Help/Unsubscribe/Update your Subscription:
> >
>
> >
>
=== message truncated ===




__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Cocoa-dev mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

References: 
 >Re: NSTextView - printing page numbers and headers (From: Todd Ransom <email@hidden>)

  • Prev by Date: Re: testing exchangedata
  • Next by Date: Re: Adding an image to a NIB file
  • Previous by thread: Re: NSTextView - printing page numbers and headers
  • Next by thread: NSOutlineView loading of data
  • Index(es):
    • Date
    • Thread