Thank you very much for your reply.
I can now print the right view. This view (Parent View) has only two large 
custom subviews in which I display graphics.

Currently, when I print Parent View, it is vertically spanned over two pages 
(which are printed) and horizontally spanned over two pages (which are not 
printed).
I tried to determine the size of the printable area of one page and to print a 
rectangle to materialize it, but I couldn't get it right. Here is the code:




        NSPrintInfo* printInfo = [[NSPrintOperation currentOperation] 
printInfo];

        NSSize paperSize     = [printInfo paperSize];
        NSSize printAreaSize = NSMakeSize(0.0, 0.0);

        printAreaSize.height = paperSize.height - [printInfo topMargin]  - 
[printInfo bottomMargin];
        printAreaSize.width  = paperSize.width  - [printInfo leftMargin] - 
[printInfo rightMargin];

        // I tried with and without the code below. If I divide by (scale*2.0) 
then the rectangle fits the paper but is displayed across two pages
        float scale = [[[printInfo dictionary] 
objectForKey:NSPrintScalingFactor] floatValue];
        paperSize.width  = paperSize.width  / (scale);
        paperSize.height = paperSize.height / (scale);

        [NSBezierPath strokeRect:NSMakeRect(0, 0, paperSize.width, 
paperSize.height)];

Currently, the size I get for the with paper size is way too large, even when 
divided by scale. This code is executed in parent view.


On 21 janv. 2013, at 18:36, Keary Suska <cocoa-...@esoteritech.com> wrote:

> On Jan 21, 2013, at 8:17 AM, Jean Suisse wrote:
> 
>> I have a non-document based application to which I would like to add 
>> printing support.
>> The main window (the one in the .xib created by default by Xcode) contains a 
>> split view.
>> 
>> Currently, when printing, I get only the left pane of the split view (at 
>> best) or the control that has the focus (a textfield for instance) at worse.
> 
> This likely has to do with which view is the first responder, and so is 
> receiving a -print: action that has a nil target. Although that is how the 
> menu is wired by default, I rarely find it useful. I generally use a custom 
> method (one not implemented by any NSResponder class), so you can capture the 
> print request.
> 
>> What would be the minimum change to perform in order to get the view in the 
>> right side of the split view to print itself in landscape (I would like to 
>> offer landscape by default to the user) ? I am happy with the rest of the 
>> print flow the way it is.
> 
> IIRC, unless otherwise specified, all built-in printing methods will use 
> +[NSPrintInfo sharedPrintInfo] to determine page settings. You can customize 
> your own NSPrintInfo and call +setSharedPrintInfo:. Or you can create your 
> own printing session and pass the print info to it.
> 
>> P.S.: I saw the Laying Out Page Content section in Printing Programming 
>> Guide, but I don't get how it is decided that the content of the view 
>> exceeds the size of a single page. I would prefer my view to be told to fit 
>> the selected page size (It is possible in my particular situation. I am 
>> printing graphics that can be resized to any size, to any ratio).
> 
> AFAIK, fit-to-page is not a Cocoa printing system feature. You will have to 
> do that yourself. In theory, the easiest way would be to determine the 
> scaling factor needed and set that in the NSPrintInfo. NSPrintInfo will tell 
> you the paper size and margins, from which you can determine the printable 
> area, then dividing that by the view frame or bounds.
> 
> HTH,
> 
> Keary Suska
> Esoteritech, Inc.
> "Demystifying technology for your home or business"
> 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to