создание и продвижение сайта (вбиваю в ТОП-10, как гвозди)Настройка и сопровождение платной рекламы яндекс.директ

PHP. Руководство по PHP. 2005

ClibPDF Functions

Пред.

След.

XIII. ClibPDF Functions

Введение

ClibPDF lets you create PDF documents with PHP. ClibPDF functionality and API are similar to PDFlib. This documentation should be read alongside the ClibPDF manual since it explains the library in much greater detail.

Many functions in the native ClibPDF and the PHP module, as well as in PDFlib, have the same name. All functions except for cpdf_open() take the handle for the document as their first parameter.

Currently this handle is not used internally since ClibPDF does not support the creation of several PDF documents at the same time. Actually, you should not even try it, the results are unpredictable. I can't oversee what the consequences in a multi threaded environment are. According to the author of ClibPDF this will change in one of the next releases (current version when this was written is 1.10). If you need this functionality use the pdflib module.

A nice feature of ClibPDF (and PDFlib) is the ability to create the pdf document completely in memory without using temporary files. It also provides the ability to pass coordinates in a predefined unit length. (This feature can also be simulated by pdf_translate() when using the PDFlib functions.)

Another nice feature of ClibPDF is the fact that any page can be modified at any time even if a new page has been already opened. The function cpdf_set_current_page() allows to leave the current page and presume modifying an other page.

Most of the functions are fairly easy to use. The most difficult part is probably creating a very simple PDF document at all. The following example should help you to get started. It creates a document with one page. The page contains the text "Times-Roman" in an outlined 30pt font. The text is underlined.

Замечание: This extension has been moved to the PECL repository and is no longer bundled with

PHP as of PHP5.1.0.

Замечание: If you're interested in alternative free PDF generators that do not utilize external PDF libraries, see - this related FAQ.

Требования

In order to use the ClibPDF functions you need to install the ClibPDF package. It is available for download from - FastIO, but requires that you purchase a license for commercial use. PHP requires that you use cpdflib>= 2.

Установка

To get these functions to work, you have to compile PHP with --with-cpdflib[=DIR]. DIR is the cpdflib install directory, defaults to /usr. In addition you can specify the jpeg library and the tiff library for ClibPDF to use. To do so add to your configure line the options --with-jpeg-dir[=DIR] --with-tiff-dir[=DIR].

Настройка во время выполнения

Данное расширение не определяет никакие директивы конфигурации в php.ini.

Предопределенные константы

-Перечисленные ниже константы определены данным расширением и могут быть

доступны только в том случае, если PHP был собран с

поддержкой этого расширения или же в том случае, если

данное расширение подгружается во время выполнения.

CPDF_PM_NONE (integer)

CPDF_PM_OUTLINES (integer)

CPDF_PM_THUMBS (integer)

CPDF_PM_FULLSCREEN (integer)

CPDF_PL_SINGLE (integer)

CPDF_PL_1COLUMN (integer)

CPDF_PL_2LCOLUMN (integer)

CPDF_PL_2RCOLUMN (integer)

Примеры

Пример 1. Simple ClibPDF Example

<?

$cpdf = cpdf_open(0);

cpdf_page_init($cpdf, 1, 0, 595, 842, 1.0);

cpdf_add_outline($cpdf, 0, 0, 0, 1, "Page 1");

cpdf_begin_text($cpdf);

cpdf_set_font($cpdf, "Times-Roman", 30, "WinAnsiEncoding");

cpdf_set_text_rendering($cpdf, 1);

cpdf_text($cpdf, "Times Roman outlined", 50, 50);

cpdf_end_text($cpdf);

cpdf_moveto($cpdf, 50, 50);

cpdf_lineto($cpdf, 740, 330);

cpdf_stroke($cpdf);

cpdf_finalize_page($cpdf, 1);

cpdf_finalize($cpdf);

Header("Content-type: application/pdf");

cpdf_output_buffer($cpdf);

cpdf_close($cpdf);

?>

The pdflib distribution contains a more complex example which creates a series of pages with an analog clock. Here is that example converted into PHP using the ClibPDF extension:

Пример 2. pdfclock example from pdflib 2.0 distribution

<?

$radius = 200;

$margin = 20;

$pagecount = 40;

$pdf = cpdf_open(0);

cpdf_set_creator($pdf, "pdf_clock.php");

cpdf_set_title($pdf, "Analog Clock");

while ($pagecount--> 0){

cpdf_page_init($pdf, $pagecount+1, 0, 2 * ($radius + $margin), 2 * ($radius + $margin), 1.0);

cpdf_set_page_animation($pdf, 4, 0.5, 0, 0, 0);/*wipe*/

cpdf_translate($pdf, $radius + $margin, $radius + $margin);

cpdf_save($pdf);

cpdf_setrgbcolor($pdf, 0.0, 0.0, 1.0);

/*minute strokes*/

cpdf_setlinewidth($pdf, 2.0);

for ($alpha = 0; $alpha < 360; $alpha += 6){

cpdf_rotate($pdf, 6.0);

cpdf_moveto($pdf, $radius, 0.0);

cpdf_lineto($pdf, $radius-$margin/3, 0.0);

cpdf_stroke($pdf);

}

cpdf_restore($pdf);

cpdf_save($pdf);

/*5 minute strokes*/

cpdf_setlinewidth($pdf, 3.0);

for ($alpha = 0; $alpha < 360; $alpha += 30){

cpdf_rotate($pdf, 30.0);

cpdf_moveto($pdf, $radius, 0.0);

cpdf_lineto($pdf, $radius-$margin, 0.0);

cpdf_stroke($pdf);

}

$ltime = getdate();

/*draw hour hand*/

cpdf_save($pdf);

cpdf_rotate($pdf, -(($ltime['minutes']/60.0) + $ltime['hours'] - 3.0) * 30.0);

cpdf_moveto($pdf, -$radius/10, -$radius/20);

cpdf_lineto($pdf, $radius/2, 0.0);

cpdf_lineto($pdf, -$radius/10, $radius/20);

cpdf_closepath($pdf);

cpdf_fill($pdf);

cpdf_restore($pdf);

/*draw minute hand*/

cpdf_save($pdf);

cpdf_rotate($pdf, -(($ltime['seconds']/60.0) + $ltime['minutes'] - 15.0) * 6.0);

cpdf_moveto($pdf, -$radius/10, -$radius/20);

cpdf_lineto($pdf, $radius * 0.8, 0.0);

cpdf_lineto($pdf, -$radius/10, $radius/20);

cpdf_closepath($pdf);

cpdf_fill($pdf);

cpdf_restore($pdf);

/*draw second hand*/

cpdf_setrgbcolor($pdf, 1.0, 0.0, 0.0);

cpdf_setlinewidth($pdf, 2);

cpdf_save($pdf);

cpdf_rotate($pdf, -(($ltime['seconds'] - 15.0) * 6.0));

cpdf_moveto($pdf, -$radius/5, 0.0);

cpdf_lineto($pdf, $radius, 0.0);

cpdf_stroke($pdf);

cpdf_restore($pdf);

/*draw little circle at center*/

cpdf_circle($pdf, 0, 0, $radius/30);

cpdf_fill($pdf);

cpdf_restore($pdf);

cpdf_finalize_page($pdf, $pagecount+1);

}

cpdf_finalize($pdf);

Header("Content-type: application/pdf");

cpdf_output_buffer($pdf);

cpdf_close($pdf);

?>

Смотрите также

See also the PDFlib extension documentation.

Содержание

cpdf_add_annotation -- Adds annotation

cpdf_add_outline -- Adds bookmark for current page

cpdf_arc -- Draws an arc

cpdf_begin_text -- Starts text section

cpdf_circle -- Draw a circle

cpdf_clip -- Clips to current path

cpdf_close -- Closes the pdf document

cpdf_closepath_fill_stroke -- Close, fill and stroke current path

cpdf_closepath_stroke -- Close path and draw line along path

cpdf_closepath -- Close path

cpdf_continue_text -- Output text in next line

cpdf_curveto -- Draws a curve

cpdf_end_text -- Ends text section

cpdf_fill_stroke -- Fill and stroke current path

cpdf_fill -- Fill current path

cpdf_finalize_page -- Ends page

cpdf_finalize -- Ends document

cpdf_global_set_document_limits -- Sets document limits for any pdf document

cpdf_import_jpeg -- Opens a JPEG image

cpdf_lineto -- Draws a line

cpdf_moveto -- Sets current point

cpdf_newpath -- Starts a new path

cpdf_open -- Opens a new pdf document

cpdf_output_buffer -- Outputs the pdf document in memory buffer

cpdf_page_init -- Starts new page

cpdf_place_inline_image -- Places an image on the page

cpdf_rect -- Draw a rectangle

cpdf_restore -- Restores formerly saved environment

cpdf_rlineto -- Draws a line

cpdf_rmoveto -- Sets current point

cpdf_rotate_text -- Sets text rotation angle

cpdf_rotate -- Sets rotation

cpdf_save_to_file -- Writes the pdf document into a file

cpdf_save -- Saves current environment

cpdf_scale -- Sets scaling

cpdf_set_action_url -- Sets hyperlink

cpdf_set_char_spacing -- Sets character spacing

cpdf_set_creator -- Sets the creator field in the pdf document

cpdf_set_current_page -- Sets current page

cpdf_set_font_directories -- Sets directories to search when using external fonts

cpdf_set_font_map_file -- Sets fontname to filename translation map when using external fonts

cpdf_set_font -- Select the current font face and size

cpdf_set_horiz_scaling -- Sets horizontal scaling of text

cpdf_set_keywords -- Sets the keywords field of the pdf document

cpdf_set_leading -- Sets distance between text lines

cpdf_set_page_animation -- Sets duration between pages

cpdf_set_subject -- Sets the subject field of the pdf document

cpdf_set_text_matrix -- Sets the text matrix

cpdf_set_text_pos -- Sets text position

cpdf_set_text_rendering -- Determines how text is rendered

cpdf_set_text_rise -- Sets the text rise

cpdf_set_title -- Sets the title field of the pdf document

cpdf_set_viewer_preferences -- How to show the document in the viewer

cpdf_set_word_spacing -- Sets spacing between words

cpdf_setdash -- Sets dash pattern

cpdf_setflat -- Sets flatness

cpdf_setgray_fill -- Sets filling color to gray value

cpdf_setgray_stroke -- Sets drawing color to gray value

cpdf_setgray -- Sets drawing and filling color to gray value

cpdf_setlinecap -- Sets linecap parameter

cpdf_setlinejoin -- Sets linejoin parameter

cpdf_setlinewidth -- Sets line width

cpdf_setmiterlimit -- Sets miter limit

cpdf_setrgbcolor_fill -- Sets filling color to rgb color value

cpdf_setrgbcolor_stroke -- Sets drawing color to rgb color value

cpdf_setrgbcolor -- Sets drawing and filling color to rgb color value

cpdf_show_xy -- Output text at position

cpdf_show -- Output text at current position

cpdf_stringwidth -- Returns width of text in current font

cpdf_stroke -- Draw line along path

cpdf_text -- Output text with parameters

cpdf_translate -- Sets origin of coordinate system

Пред.

Начало

След.

variant_xor

Уровень выше

cpdf_add_annotation

Отвечу на любые вопросы. С уважением, Дмитрий Владимирович.

Ваше письмо×
Free Web Hosting