// --------------------------------------------------------------------------------------------------------------
static OSStatus MySetupPageFormatForPrinting(PMPrintSession printSession, void *docDataP, PMPageFormat *pageFormatP)
{
    OSStatus status = noErr;
    PMPageFormat pageFormat = GetPageFormatFromPrivateData(docDataP);
    if (!pageFormat)
    {
        status = PMCreatePageFormat(&pageFormat);
        if(status == noErr)
        {
            status = PMSessionDefaultPageFormat(printSession, pageFormat);
	    if(status == noErr){
		PMResolution appDrawingResolution;
		
		// for illustrative purposes, this sample will draw at 300,300 dpi resolution
		appDrawingResolution.hRes = appDrawingResolution.vRes = 300.;
		status = PMSetResolution(pageFormat, &appDrawingResolution);
	    }
            if (status == noErr)
                SetPageFormatOnPrivateData(docDataP, pageFormat);
            else{
                (void)PMRelease(pageFormat);
                pageFormat = NULL;
            }
        }
    }else{
	// we already have a page format so we'll validate it
        status = PMSessionValidatePageFormat(printSession, pageFormat,
                                        kPMDontWantBoolean);
        if(status){	// if validate failed!
            SetPageFormatOnPrivateData(docDataP, NULL);
            (void)PMRelease(pageFormat);
            pageFormat = NULL;
        }
    }
    
    DoErrorAlert(status, kMyPrintErrorFormatStrKey);
    
    *pageFormatP = pageFormat;
    return status;
}
示例#2
0
// -----------------------------------------------------------------------
OSStatus CreateDefaultPageFormatForDocument(void *docDataP)
{
    OSStatus err = noErr, tempErr;
    PMPrintSession printSession;
    err = PMCreateSession(&printSession);
    if(!err){
	PMPageFormat pageFormat;
	err = PMCreatePageFormat(&pageFormat);	// we own a reference to this page format
	if(err == noErr)
	{
	    err = PMSessionDefaultPageFormat(printSession, pageFormat);
	    if (err == noErr){	
		// this routine will keep its own reference to the pageFormat
		err = SetPageFormatOnPrivateData(docDataP, pageFormat);	
	    }
	    tempErr = PMRelease(pageFormat);// release our reference obtained from PMCreatePageFormat
	    if(!err)err = tempErr;
	}
	tempErr = PMRelease(printSession);
	if(!err)err = tempErr;
    }
    return err;
}