Re: #18412 [Com]: PRINTER_ORIENTATION

From: Date: Mon, 26 Aug 2002 08:46:20 +0000
Subject: Re: #18412 [Com]: PRINTER_ORIENTATION
Groups: php.dev 
Request: Send a blank email to php-dev+get-87459@lists.php.net to get a copy of this message
Derick, Here are the patch files (printer.c.patch to be applied on printer.c and printer.php.patch to be applied on printer.php). In order to make settings effect, the printer_set_option($handle,PRINTER_SET_OPTIONS,0) should be called after send a series of settings. The third parameter in this case is ignored (but it must be supplied since I didn't change the way original printer_set_option() check parameters. I'd love to take a look on any problems my change might cause. Just mail me. Regards, Tanes Sriviroolchai
From: Derick Rethans <d.rethans@jdimedia.nl>
TS>    If you point me out where I can get latest sources in php4/ext/printer, I
TS> would love to provide a patch for this problem. I don't know why source TS> codes of this module (printer) is not included in php distribution source TS> code. DR>It was moved to pear/PECL: DR> DR>http://cvs.php.net/cvs.php/pear/PECL/printer DR> DR>regards, DR>Derick _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com

*** org\printer.c Fri May 17 18:49:42 2002 --- printer.c Mon Aug 26 15:11:08 2002 *************** *** 17,22 **** --- 17,36 ---- +----------------------------------------------------------------------+ */ + /* + * Modified by Tanes Sriviroolchai + * On Aug 26, 2002 + * + * Modified function: printer_set_option() + * Reason: To make setting options working, the printer_set_option() must + * call Win32 API DocumentProperties() with DM_OUT_BUFFER | + * DM_IN_BUFFER in order for all settings in resource->device to + * be effected. Also, while setting parameters dmXXX in resource-> + * device, a bit mask resource->dmFields of correspondent setting + * should be set too. + * + */ + /* $Id: printer.c,v 1.23 2002/05/17 18:49:42 fmk Exp $ */ #ifdef HAVE_CONFIG_H *************** *** 146,151 **** --- 160,166 ---- #define TEXT_ALIGN 12 #define DEVICENAME 13 #define DRIVER_VERSION 14 + #define SET_OPTIONS 99 #define BRUSH_SOLID -1 #define BRUSH_CUSTOM -2 *************** *** 176,181 **** --- 191,197 ---- REGP_CONSTANT("PRINTER_TITLE", TITLE); REGP_CONSTANT("PRINTER_DEVICENAME", DEVICENAME); REGP_CONSTANT("PRINTER_DRIVERVERSION", DRIVER_VERSION); + REGP_CONSTANT("PRINTER_SET_OPTIONS", SET_OPTIONS); REGP_CONSTANT("PRINTER_RESOLUTION_Y", YRESOLUTION); REGP_CONSTANT("PRINTER_RESOLUTION_X", XRESOLUTION); REGP_CONSTANT("PRINTER_SCALE", SCALE); *************** *** 484,489 **** --- 500,506 ---- case COPIES: convert_to_long_ex(arg3); resource->device->dmCopies = (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_COPIES; break; case MODE: *************** *** 501,536 **** --- 518,560 ---- case ORIENTATION: convert_to_long_ex(arg3); resource->device->dmOrientation = (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_ORIENTATION; break; case YRESOLUTION: convert_to_long_ex(arg3); resource->device->dmYResolution = (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_YRESOLUTION; break; case XRESOLUTION: convert_to_long_ex(arg3); resource->device->dmPrintQuality= (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_PRINTQUALITY; break; case PAPER_FORMAT: convert_to_long_ex(arg3); resource->device->dmPaperSize = (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_PAPERSIZE; break; case PAPER_LENGTH: convert_to_long_ex(arg3); resource->device->dmPaperLength = Z_LVAL_PP(arg3) * 10; + resource->device->dmFields |= DM_PAPERLENGTH; break; case PAPER_WIDTH: convert_to_long_ex(arg3); resource->device->dmPaperWidth = Z_LVAL_PP(arg3) * 10; + resource->device->dmFields |= DM_PAPERWIDTH; break; case SCALE: convert_to_long_ex(arg3); resource->device->dmScale = (short)Z_LVAL_PP(arg3); + resource->device->dmFields |= DM_SCALE; break; case BG_COLOR: *************** *** 548,553 **** --- 572,588 ---- SetTextAlign(resource->dc, Z_LVAL_PP(arg3)); break; + case SET_OPTIONS: + DocumentProperties(NULL, resource->handle, resource->name, resource->device, resource->device, DM_OUT_BUFFER | DM_IN_BUFFER); + + if( resource->dc != NULL ) { + php_error(E_NOTICE, "Deleting old DeviceContext in order for new settings to be effective"); + DeleteDC(resource->dc); + } + + resource->dc = CreateDC(NULL, resource->name, NULL, resource->device); + break; + default: php_error(E_WARNING,"unknown option passed to printer_set_option()"); RETURN_FALSE; *** org\printer.php Thu Apr 5 12:36:00 2001 --- printer.php Mon Aug 26 15:33:34 2002 *************** *** 1,6 **** --- 1,11 ---- <?php $handle = printer_open(); + printer_set_option( $handle, PRINTER_ORIENTATION, PRINTER_ORIENTATION_LANSCAPE ); + printer_set_option( $handle, PRINTER_COPIES, 2 ); + printer_set_option( $handle, PRINTER_SET_OPTIONS, 0 ); + + printer_start_doc($handle, "PHP Test"); printer_start_page($handle);
« previous php.dev (#87459) next »