• 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: More... apparently not-so-simple printing issues
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: More... apparently not-so-simple printing issues


  • Subject: Re: More... apparently not-so-simple printing issues
  • From: Chris Giordano <email@hidden>
  • Date: Wed, 30 Jun 2004 14:06:29 -0400

Andrew,

On Jun 30, 2004, at 12:24 PM, Andrew Kinnie wrote:

I have still not been able to sort out the receipt printer issues. I
have a Star TSP 613 printer, which prints using a sample they created
in OS X using Carbon, (but which prints out their sample receipt). I
realize I could try and use Carbon with Cocoa, but I feel as a Cocoa
guy, I should use cocoa's methods. However, I can't get the thing to
print out a string of text in a legible fashion using cocoa.

Reading the Apple docs, apparently, I need to create an
NSPrintOperation, with a printInfo, and a view and then tell the
operation to run. Seems simple enough, but as I simply want to print
our a sting of text, and I don't need to have it appear on the UI, it
seems strange. Nonetheless, I tried, but unfortunately, the text is
extremely small and indented. I therefore set the font, and margins,
and it's still extremely small.

I don't know what else to do.

The thing prints, but it is so small, it is illegible. Star, the
printer manufacturer, says they can't help me with Cocoa.

This is quite frustrating.

For your edification (whatever that means), this is the complete method
as I have it so far. All I want to do it dump a string of text to a
printer which prints fixed width fonts best up to a width of 72mm:

- (void)printReceipt:(Transaction *)transToPrint
{
NSPrintOperation *op;
NSPrintInfo *printInfo = [NSPrintInfo sharedPrintInfo];
NSFont *font = [NSFont userFixedPitchFontOfSize:10.0];
[printInfo setLeftMargin:0.0];
[printInfo setRightMargin:0.0];
[printInfo setBottomMargin:0.25];

NSTextView *view = [[NSTextView alloc] initWithFrame:[printInfo
imageablePageBounds]];
[view setFont:font];
[view insertText:[transToPrint descriptionSummary]];

op = [NSPrintOperation printOperationWithView:view];

[op setShowPanels:NO];
[op runOperation];
[view release];
[printInfo release];
}

If anyone has any suggestions, I'd be happy to hear them.

Just a thought -- not sure if it will be useful. (My experience is limited to having dealt with this recently in a document-based app, and doing some playing around with things to customize my print job.)

First, are you sure that the imageablePrintBounds are appropriate? That is, could they be too big at this point, and what you're seeing is just scaling because the view is set up as being larger than the page ends up?

Given the description of the imageablePageBounds method, it sounds like this is at least a possibility. Because you have non-zero margins, it is necessarily the case that the view will have to be scaled to fit into the area enclosed by the margins unless the imageable area is smaller than the page minus the margins. Depending on the top margin and/or the overall size, this could be a lot.

Instead of imageablePageBounds, could you want to try something like the following (NOTE, borrowed from _Cocoa Progamming_ by Anguish, Buck and Yacktman, possibly directly, although I can't find it now):

- (NSRect) printAreaInScaledPaperCoordinates;
{
NSPrintInfo *pi = [[NSPrintOperation currentOperation] printInfo];
NSSize paperSize = [pi paperSize];
float bottomMargin = [pi bottomMargin];
float leftMargin = [pi leftMargin];
float pageHeight = paperSize.height - [pi topMargin] - bottomMargin;
float pageWidth = paperSize.width - leftMargin - [pi rightMargin];

float scale = [self printingScale];
// this just gets [[[pi dictionary] objectForKey:NSPrintScalingFactor] floatValue]
// and wraps this to make sure we get a valid response or default to 1.0.

return NSMakeRect(leftMargin / scale, bottomMargin / scale, pageWidth / scale, pageHeight / scale);
}


Like I said, this is just a thought. It may not be all that valuable, but maybe will get you headed in the right direction.

chris
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.


References: 
 >More... apparently not-so-simple printing issues (From: Andrew Kinnie <email@hidden>)

  • Prev by Date: Re: NSCursor category
  • Next by Date: re: re: own protocol
  • Previous by thread: More... apparently not-so-simple printing issues
  • Next by thread: re: re: own protocol
  • Index(es):
    • Date
    • Thread