// -------------------------------------------------------------------------------------------------------------- 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; }
// ----------------------------------------------------------------------- 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; }