note 19715 modified in function.cpdf-text by vincent

From: Date: Mon, 25 Aug 2003 15:49:51 +0000
Subject: note 19715 modified in function.cpdf-text by vincent
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-55041@lists.php.net to get a copy of this message
Unfortunately there hasn't been anyone else adding the textBox feature to the PHP CPDF functions, so I had to it. ;) in order to get a cpdf_textbox function, so that you don't have to call the cpdf_text function for every single line of text you want to print. patch: http://mpex.net/software/mirror/cpdf_patch Then recompile php with cpdf support and use the new function. It has to be called in between the cpdf_begin_text and cpdf_end_text tags cpdf_textbox(int pdfdoc, double x-koor, double y-koor, double width, double height, double angle, double linespace, string text [, int alignmode [, float paragraphspacing [, int newlinemode]]]); Notes: Alignmode aligns the text within the box: 0 -- left (default) 1 -- center 2 -- right 3 -- justify Newline mode: if non-zero, NL ("\n") is a line break, if 0 reformatted (default 0) Have fun with it. It works great for me. ;) XeROfun --was-- Unfortunately there hasn't been anyone else adding the textBox feature to the PHP CPDF functions, so I had to it. ;) Do the following, in order to get a cpdf_textbox function, so that you don't have to call the cpdf_text function for every single line of text you want to print. Add the following line to <php-source-dir>/ext/cpdf/php_cpdf.h line 58: PHP_FUNCTION(cpdf_textbox); Add the following line to <php-source-dir>/ext/cpdf/cpdf.c line 96: PHP_FE(cpdf_textbox, NULL) Add the code block below to <php-source-dir>/ext/cpdf/cpdf.c somewhere after the cpdf_text function (i.e. line 847) snip----------- /* {{{ proto void cpdf_textbox(int pdfdoc, double x-koor, double y-koor, double width, double height, double angle, double linespace, string text [, int alignmode [, float paragraphspacing [, int newlinemode]]]); Output a textbox */ PHP_FUNCTION(cpdf_textbox) { pval *argv[11]; int id, type, argc, mode=0; CPDFdoc *pdf; CPDFtboxAttr tbattr; argc = ZEND_NUM_ARGS(); if((argc < 8) || (argc > 11)) WRONG_PARAM_COUNT; if (getParametersArray(ht, argc, argv) == FAILURE) WRONG_PARAM_COUNT; convert_to_long(argv[0]); convert_to_double(argv[1]); convert_to_double(argv[2]); convert_to_double(argv[3]); convert_to_double(argv[4]); convert_to_double(argv[5]); convert_to_double(argv[6]); convert_to_string(argv[7]); id=argv[0]->value.lval; pdf = zend_list_find(id, &type); if(!pdf || type!=CPDF_GLOBAL(le_cpdf)) { php_error(E_WARNING, "Unable to find identifier %d", id); RETURN_FALSE; } tbattr.alignmode = TBOX_LEFT; tbattr.NLmode = 0; tbattr.paragraphSpacing = 0.0; tbattr.noMark = 0; switch(argc) { case 9: convert_to_long(argv[8]); tbattr.alignmode = argv[8]->value.lval; break; case 10: convert_to_long(argv[8]); convert_to_double(argv[9]); tbattr.alignmode = argv[8]->value.lval; tbattr.paragraphSpacing = (float) argv[9]->value.dval; break; case 11: convert_to_long(argv[8]); convert_to_double(argv[9]); convert_to_long(argv[10]); tbattr.alignmode = argv[8]->value.lval; tbattr.paragraphSpacing = (float) argv[9]->value.dval; tbattr.NLmode = argv[10]->value.lval; break; } cpdf_textBox(pdf, (float) argv[1]->value.dval, // x (float) argv[2]->value.dval, // y (float) argv[3]->value.dval, // width (float) argv[4]->value.dval, // height (float) argv[5]->value.dval, // angle (float) argv[6]->value.dval, // linespace &tbattr, // Attributes prespecified argv[7]->value.str.val); // Text string RETURN_TRUE; } /* }}} */ snap----------- Then recompile php with cpdf support and use the new function. It has to be called in between the cpdf_begin_text and cpdf_end_text tags cpdf_textbox(int pdfdoc, double x-koor, double y-koor, double width, double height, double angle, double linespace, string text [, int alignmode [, float paragraphspacing [, int newlinemode]]]); Notes: Alignmode aligns the text within the box: 0 -- left (default) 1 -- center 2 -- right 3 -- justify Newline mode: if non-zero, NL ("\n") is a line break, if 0 reformatted (default 0) Have fun with it. It works great for me. ;) XeROfun http://www.php.net/manual/en/function.cpdf-text.php

« previous php.notes (#55041) next »