📄 pdf.c
字号:
} ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_double_ex(arg2); convert_to_double_ex(arg3); PDF_begin_page(pdf, (float) Z_DVAL_PP(arg2), (float) Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_end_page(int pdfdoc) Ends page */PHP_FUNCTION(pdf_end_page){ zval **arg1; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); PDF_end_page(pdf); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_show(int pdfdoc, string text) Output text at current position */PHP_FUNCTION(pdf_show){ zval **arg1, **arg2; PDF *pdf; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); PDF_show2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_show_xy(int pdfdoc, string text, float x_koor, float y_koor) Output text at position */PHP_FUNCTION(pdf_show_xy){ zval **arg1, **arg2, **arg3, **arg4; PDF *pdf; if (ZEND_NUM_ARGS() != 4 || zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); convert_to_double_ex(arg3); convert_to_double_ex(arg4); PDF_show_xy2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2), (float) Z_DVAL_PP(arg3), (float) Z_DVAL_PP(arg4)); RETURN_TRUE;}/* }}} *//* {{{ proto int pdf_show_boxed(int pdfdoc, string text, float x_koor, float y_koor, float width, float height, string mode [, string feature]) Output text formated in a boxed */PHP_FUNCTION(pdf_show_boxed){ zval **argv[8]; int argc = ZEND_NUM_ARGS(); int nr; char *feature; PDF *pdf; if (((argc < 7) || (argc > 8)) || zend_get_parameters_array_ex(argc, argv) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, argv[0], -1, "pdf object", le_pdf); convert_to_string_ex(argv[1]); convert_to_double_ex(argv[2]); convert_to_double_ex(argv[3]); convert_to_double_ex(argv[4]); convert_to_double_ex(argv[5]); convert_to_string_ex(argv[6]); if(argc == 8) { convert_to_string_ex(argv[7]); feature = Z_STRVAL_PP(argv[7]); } else { feature = NULL; } nr = PDF_show_boxed(pdf, Z_STRVAL_PP(argv[1]), (float) Z_DVAL_PP(argv[2]), (float) Z_DVAL_PP(argv[3]), (float) Z_DVAL_PP(argv[4]), (float) Z_DVAL_PP(argv[5]), Z_STRVAL_PP(argv[6]), feature); RETURN_LONG(nr);}/* }}} *//* {{{ proto void pdf_set_font(int pdfdoc, string font, float size, string encoding [, int embed]) Select the current font face, size and encoding */PHP_FUNCTION(pdf_set_font){ zval **arg1, **arg2, **arg3, **arg4, **arg5; int font, embed; PDF *pdf; switch (ZEND_NUM_ARGS()) { case 4: if (zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) { WRONG_PARAM_COUNT; } embed = 0; break; case 5: if (zend_get_parameters_ex(5, &arg1, &arg2, &arg3, &arg4, &arg5) == FAILURE) { WRONG_PARAM_COUNT; } convert_to_long_ex(arg5); embed = Z_LVAL_PP(arg5); break; default: WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); convert_to_double_ex(arg3); convert_to_string_ex(arg4); font = PDF_findfont(pdf, Z_STRVAL_PP(arg2), Z_STRVAL_PP(arg4), embed); if (font == -1) { php_error(E_WARNING,"Font %s not found", Z_STRVAL_PP(arg2)); RETURN_FALSE; } PDF_setfont(pdf, font, (float) Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ _php_pdf_set_value */static void _php_pdf_set_value(INTERNAL_FUNCTION_PARAMETERS, char *field) { zval **arg1, **arg2; PDF *pdf; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_double_ex(arg2); PDF_set_value(pdf, field, (float)Z_DVAL_PP(arg2)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_set_value(int pdfdoc, string key, float value) Sets arbitrary value */PHP_FUNCTION(pdf_set_value){ zval **arg1, **arg2, **arg3; PDF *pdf; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); convert_to_double_ex(arg3); PDF_set_value(pdf, Z_STRVAL_PP(arg2), (float)Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ proto float pdf_get_value(int pdfdoc, string key, float modifier) Gets arbitrary value */PHP_FUNCTION(pdf_get_value){ zval **argv[3]; int argc = ZEND_NUM_ARGS(); PDF *pdf; double value; if(((argc < 2) || (argc > 3)) || zend_get_parameters_array_ex(argc, argv) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, argv[0], -1, "pdf object", le_pdf); convert_to_string_ex(argv[1]); if(argc == 3) convert_to_double_ex(argv[2]); if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "imagewidth"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_IMAGE_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "imageheight"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_IMAGE_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "resx"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_IMAGE_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "resy"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_IMAGE_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "capheight"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_FONT_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "ascender"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_FONT_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "descender"))) { if(argc < 3) WRONG_PARAM_COUNT; value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])-PDFLIB_FONT_OFFSET); } else if(0 == (strcmp(Z_STRVAL_PP(argv[1]), "font"))) { value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), 0.0)+PDFLIB_FONT_OFFSET; } else { if(argc < 3) { value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), 0.0); } else { value = PDF_get_value(pdf, Z_STRVAL_PP(argv[1]), (float)Z_DVAL_PP(argv[2])); } } RETURN_DOUBLE(value);}/* }}} *//* {{{ proto int pdf_get_font(int pdfdoc) Gets the current font */PHP_FUNCTION(pdf_get_font) { zval **arg1; int font; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); font = (int) PDF_get_value(pdf, "font", 0); RETURN_LONG(font+PDFLIB_FONT_OFFSET);}/* }}} *//* {{{ proto string pdf_get_fontname(int pdfdoc) Gets the current font name */PHP_FUNCTION(pdf_get_fontname) { zval **arg1; char *fontname; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); fontname = (char *) PDF_get_parameter(pdf, "fontname", 0); RETURN_STRING(fontname, 1);}/* }}} *//* {{{ proto float pdf_get_fontsize(int pdfdoc) Gets the current font size */PHP_FUNCTION(pdf_get_fontsize) { zval **arg1; float fontsize; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); fontsize = PDF_get_value(pdf, "fontsize", 0); RETURN_DOUBLE(fontsize);}/* }}} *//* {{{ proto void pdf_set_leading(int pdfdoc, float distance) Sets distance between text lines */PHP_FUNCTION(pdf_set_leading) { _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "leading");}/* }}} *//* {{{ proto void pdf_set_text_rendering(int pdfdoc, int mode) Determines how text is rendered */PHP_FUNCTION(pdf_set_text_rendering) { _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "textrendering");}/* }}} *//* {{{ proto void pdf_set_horiz_scaling(int pdfdoc, float scale) Sets horizontal scaling of text */PHP_FUNCTION(pdf_set_horiz_scaling) { _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "horizscaling");}/* }}} *//* {{{ proto void pdf_set_text_rise(int pdfdoc, float value) Sets the text rise */PHP_FUNCTION(pdf_set_text_rise) { _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "textrise");}/* }}} *//* {{{ proto void pdf_set_char_spacing(int pdfdoc, float space) Sets character spacing */PHP_FUNCTION(pdf_set_char_spacing){ _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "charspacing");}/* }}} *//* {{{ proto void pdf_set_word_spacing(int pdfdoc, float space) Sets spacing between words */PHP_FUNCTION(pdf_set_word_spacing){ _php_pdf_set_value(INTERNAL_FUNCTION_PARAM_PASSTHRU, "wordspacing");}/* }}} *//* {{{ proto void pdf_set_text_pos(int pdfdoc, float x, float y) Sets the position of text for the next pdf_show call */PHP_FUNCTION(pdf_set_text_pos) { zval **arg1, **arg2, **arg3; PDF *pdf; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_double_ex(arg2); convert_to_double_ex(arg3); PDF_set_text_pos(pdf, (float) Z_DVAL_PP(arg2), (float) Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_continue_text(int pdfdoc, string text) Output text in next line */PHP_FUNCTION(pdf_continue_text){ zval **arg1, **arg2; PDF *pdf; if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); PDF_continue_text2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2)); RETURN_TRUE;}/* }}} *//* {{{ proto float pdf_stringwidth(int pdfdoc, string text [, int font, float size]) Returns width of text in current font */PHP_FUNCTION(pdf_stringwidth){ zval **arg1, **arg2, **arg3, **arg4; int font; double width, size; PDF *pdf; switch (ZEND_NUM_ARGS()) { case 2: if (zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) WRONG_PARAM_COUNT; break; case 4: if (zend_get_parameters_ex(4, &arg1, &arg2, &arg3, &arg4) == FAILURE) WRONG_PARAM_COUNT; convert_to_long_ex(arg3); break; default: WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_string_ex(arg2); if (ZEND_NUM_ARGS() == 2) { font = (int)PDF_get_value(pdf, "font", 0)+PDFLIB_FONT_OFFSET; size = PDF_get_value(pdf, "fontsize", 0); } else { convert_to_long_ex(arg3); font = Z_LVAL_PP(arg3); convert_to_double_ex(arg4); size = Z_DVAL_PP(arg4); } width = (double) PDF_stringwidth2(pdf, Z_STRVAL_PP(arg2), Z_STRLEN_PP(arg2), font-PDFLIB_FONT_OFFSET, (float)size); RETURN_DOUBLE((double) width);}/* }}} *//* {{{ proto void pdf_save(int pdfdoc) Saves current enviroment */PHP_FUNCTION(pdf_save){ zval **arg1; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); PDF_save(pdf); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_restore(int pdfdoc) Restores formerly saved enviroment */PHP_FUNCTION(pdf_restore){ zval **arg1; PDF *pdf; if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &arg1) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); PDF_restore(pdf); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_translate(int pdfdoc, float x, float y) Sets origin of coordinate system */PHP_FUNCTION(pdf_translate) { zval **arg1, **arg2, **arg3; PDF *pdf; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_double_ex(arg2); convert_to_double_ex(arg3); PDF_translate(pdf, (float) Z_DVAL_PP(arg2), (float) Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_scale(int pdfdoc, float x_scale, float y_scale) Sets scaling */PHP_FUNCTION(pdf_scale){ zval **arg1, **arg2, **arg3; PDF *pdf; if (ZEND_NUM_ARGS() != 3 || zend_get_parameters_ex(3, &arg1, &arg2, &arg3) == FAILURE) { WRONG_PARAM_COUNT; } ZEND_FETCH_RESOURCE(pdf, PDF *, arg1, -1, "pdf object", le_pdf); convert_to_double_ex(arg2); convert_to_double_ex(arg3); PDF_scale(pdf, (float) Z_DVAL_PP(arg2), (float) Z_DVAL_PP(arg3)); RETURN_TRUE;}/* }}} *//* {{{ proto void pdf_rotate(int pdfdoc, float angle) Sets rotation */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -