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

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

PDF functions

Пред.

След.

CIII. PDF functions

Введение

The PDF functions in PHP can create PDF files using the PDFlib library created by Thomas Merz.

The documentation in this section is only meant to be an overview of the available functions in the PDFlib library and should not be considered an exhaustive reference. Please consult the documentation included in the source distribution of PDFlib for the full and detailed explanation of each function here. It provides a very good overview of what PDFlib is capable of doing and contains the most up-to-date documentation of all functions.

All of the functions in PDFlib and the PHP module have identical function names and parameters. You will need to understand some of the basic concepts of PDF and PostScript to efficiently use this extension. All lengths and coordinates are measured in PostScript points. There are generally 72 PostScript points to an inch, but this depends on the output resolution. Please see the PDFlib documentation included with the source distribution of PDFlib for a more thorough explanation of the coordinate system used.

Please note that most of the PDF functions require a pdfdoc as its first parameter. Please see the examples below for more information.

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

Замечание: This extension has been moved to PECL as of PHP4.3.9.

Требования

PDFlib is available for download at http://pdflib.com/products/pdflib/index.html, but requires that you purchase a license for commercial use. The JPEG and TIFF libraries are required to compile this extension.

Issues with older versions of PDFlib

Any version of PHP4 after March 9, 2000 does not support versions of PDFlib older than 3.0.

PDFlib 3.0 or greater is supported by PHP 3.0.19 and later.

Установка

Это расширение PECL

не поставляется вместе с PHP. Дополнительная информация, такая как новый версии,

скачивание, исходные файлы, информация о разработчике и CHANGELOG, могут

быть найдены здесь: http://pecl.php.net/package/pdflib.

To get these functions to work in PHP < 4.3.9, you have to compile PHP with --with-pdflib[=DIR]. DIR is the PDFlib base install directory, defaults to /usr/local. In addition you can specify the jpeg, tiff, and pnglibrary for PDFlib to use, which is optional for PDFlib 4.x. To do so add to your configure line the options --with-jpeg-dir[=DIR] --with-png-dir[=DIR] --with-tiff-dir[=DIR].

When using version 3.x of PDFlib, you should configure PDFlib with the option --enable-shared-pdflib.

As of PHP4.3.9, you must install this extension through PEAR, using the following command: pear install pdflib.

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

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

Confusion with old PDFlib versions

Starting with PHP4.0.5, the PHP extension for PDFlib is officially supported by PDFlib GmbH. This means that all the functions described in the PDFlib manual (V3.00 or greater) are supported by PHP4 with exactly the same meaning and the same parameters. Only the return values may differ from the PDFlib manual, because the PHP convention of returning FALSE was adopted. For compatibility reasons, this binding for PDFlib still supports the old functions, but they should be replaced by their new versions. PDFlib GmbH will not support any problems arising from the use of these deprecated functions.

Таблица 1. Deprecated functions and their replacements

Old functionReplacement
pdf_put_image()Not needed anymore.
pdf_execute_image()Not needed anymore.
pdf_get_annotation()pdf_get_bookmark() using the same parameters.
pdf_get_font()pdf_get_value() passing "font" as the second parameter.
pdf_get_fontsize()pdf_get_value() passing "fontsize" as the second parameter.
pdf_get_fontname()pdf_get_parameter() passing "fontname" as the second parameter.
pdf_set_info_creator()pdf_set_info() passing "Creator" as the second parameter.
pdf_set_info_title()pdf_set_info() passing "Title" as the second parameter.
pdf_set_info_subject()pdf_set_info() passing "Subject" as the second parameter.
pdf_set_info_author()pdf_set_info() passing "Author" as the second parameter.
pdf_set_info_keywords()pdf_set_info() passing "Keywords" as the second parameter.
pdf_set_leading()pdf_set_value() passing "leading" as the second parameter.
pdf_set_text_rendering()pdf_set_value() passing "textrendering" as the second parameter.
pdf_set_text_rise()pdf_set_value() passing "textrise" as the second parameter.
pdf_set_horiz_scaling()pdf_set_value() passing "horizscaling" as the second parameter.
pdf_set_text_matrix()Not available anymore
pdf_set_char_spacing()pdf_set_value() passing "charspacing" as the second parameter.
pdf_set_word_spacing()pdf_set_value() passing "wordspacing" as the second parameter.
pdf_set_transition()pdf_set_parameter() passing "transition" as the second parameter.
pdf_open()pdf_new() plus an subsequent call of pdf_open_file()
pdf_set_font()pdf_findfont() plus an subsequent call of pdf_setfont()
pdf_set_duration()pdf_set_value() passing "duration" as the second parameter.
pdf_open_gif()pdf_open_image_file() passing "gif" as the second parameter.
pdf_open_jpeg()pdf_open_image_file() passing "jpeg" as the second parameter.
pdf_open_tiff()pdf_open_image_file() passing "tiff" as the second parameter.
pdf_open_png()pdf_open_image_file() passing "png" as the second parameter.
pdf_get_image_width()pdf_get_value() passing "imagewidth" as the second parameter and the image as the third parameter.
pdf_get_image_height()pdf_get_value() passing "imageheight" as the second parameter and the image as the third parameter.

Примеры

Most of the functions are fairly easy to use. The most difficult part is probably creating your first PDF document. The following example should help to get you started. It creates test.pdf with one page. The page contains the text "Times Roman outlined" in an outlined, 30pt font. The text is also underlined.

Пример 1. Creating a PDF document with PDFlib

<?

$pdf = pdf_new();

pdf_open_file($pdf, "test.pdf");

pdf_set_info($pdf, "Author", "Uwe Steinmann");

pdf_set_info($pdf, "Title", "Test for PHP wrapper of PDFlib 2.0");

pdf_set_info($pdf, "Creator", "See Author");

pdf_set_info($pdf, "Subject", "Testing");

pdf_begin_page($pdf, 595, 842);

pdf_add_outline($pdf, "Page 1");

$font = pdf_findfont($pdf, "Times New Roman", "winansi", 1);

pdf_setfont($pdf, $font, 10);

pdf_set_value($pdf, "textrendering", 1);

pdf_show_xy($pdf, "Times Roman outlined", 50, 750);

pdf_moveto($pdf, 50, 740);

pdf_lineto($pdf, 330, 740);

pdf_stroke($pdf);

pdf_end_page($pdf);

pdf_close($pdf);

pdf_delete($pdf);

echo "<A HREF=getpdf.php>finished</A>";

?>

The script getpdf.php just returns the pdf document.

Пример 2. Outputting a precalculated PDF

<?

$len = filesize($filename);

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

header("Content-Length: $len");

header("Content-Disposition: inline; filename=foo.pdf");

readfile($filename);

?>

The PDFlib distribution contains a more complex example which creates a page with an analog clock. Here we use the in-memory creation feature of PDFlib to alleviate the need to use temporary files. The example was converted to PHP from the PDFlib example. (The same example is available in the CLibPDF documentation.)

Пример 3. pdfclock example from PDFlib distribution

<?

$radius = 200;

$margin = 20;

$pagecount = 10;

$pdf = pdf_new();

if (!pdf_open_file($pdf, "")){

echo error;

exit;

};

pdf_set_parameter($pdf, "warning", "true");

pdf_set_info($pdf, "Creator", "pdf_clock.php");

pdf_set_info($pdf, "Author", "Uwe Steinmann");

pdf_set_info($pdf, "Title", "Analog Clock");

while ($pagecount--> 0){

pdf_begin_page($pdf, 2 * ($radius + $margin), 2 * ($radius + $margin));

pdf_set_parameter($pdf, "transition", "wipe");

pdf_set_value($pdf, "duration", 0.5);

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

pdf_save($pdf);

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

/*minute strokes*/

pdf_setlinewidth($pdf, 2.0);

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

pdf_rotate($pdf, 6.0);

pdf_moveto($pdf, $radius, 0.0);

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

pdf_stroke($pdf);

}

pdf_restore($pdf);

pdf_save($pdf);

/*5 minute strokes*/

pdf_setlinewidth($pdf, 3.0);

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

pdf_rotate($pdf, 30.0);

pdf_moveto($pdf, $radius, 0.0);

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

pdf_stroke($pdf);

}

$ltime = getdate();

/*draw hour hand*/

pdf_save($pdf);

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

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

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

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

pdf_closepath($pdf);

pdf_fill($pdf);

pdf_restore($pdf);

/*draw minute hand*/

pdf_save($pdf);

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

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

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

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

pdf_closepath($pdf);

pdf_fill($pdf);

pdf_restore($pdf);

/*draw second hand*/

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

pdf_setlinewidth($pdf, 2);

pdf_save($pdf);

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

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

pdf_lineto($pdf, $radius, 0.0);

pdf_stroke($pdf);

pdf_restore($pdf);

/*draw little circle at center*/

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

pdf_fill($pdf);

pdf_restore($pdf);

pdf_end_page($pdf);

# to see some difference

sleep(1);

}

pdf_close($pdf);

$buf = pdf_get_buffer($pdf);

$len = strlen($buf);

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

header("Content-Length: $len");

header("Content-Disposition: inline; filename=foo.pdf");

echo $buf;

pdf_delete($pdf);

?>

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

Замечание: An alternative PHP module for PDF document creation based on FastIO's ClibPDF is available. Please see the ClibPDF section for details. Note that ClibPDF has a slightly different API than PDFlib.

Содержание

pdf_add_annotation -- Deprecated: Adds annotation

pdf_add_bookmark -- Adds bookmark for current page

pdf_add_launchlink -- Add a launch annotation for current page

pdf_add_locallink -- Add a link annotation for current page

pdf_add_note -- Sets annotation for current page

pdf_add_outline -- Deprecated: Adds bookmark for current page

pdf_add_pdflink -- Adds file link annotation for current page

pdf_add_thumbnail -- Adds thumbnail for current page

pdf_add_weblink -- Adds weblink for current page

pdf_arc -- Draws an arc (counterclockwise)

pdf_arcn -- Draws an arc (clockwise)

pdf_attach_file -- Adds a file attachment for current page

pdf_begin_page -- Starts new page

pdf_begin_pattern -- Starts new pattern

pdf_begin_template -- Starts new template

pdf_circle -- Draws a circle

pdf_clip -- Clips to current path

pdf_close_image -- Closes an image

pdf_close_pdi_page -- Close the page handle

pdf_close_pdi -- Close the input PDF document

pdf_close -- Closes a pdf resource

pdf_closepath_fill_stroke -- Closes, fills and strokes current path

pdf_closepath_stroke -- Closes path and draws line along path

pdf_closepath -- Closes path

pdf_concat -- Concatenate a matrix to the CTM

pdf_continue_text -- Outputs text in next line

pdf_curveto -- Draws a curve

pdf_delete -- Deletes a PDF object

pdf_end_page -- Ends a page

pdf_end_pattern -- Finish pattern

pdf_end_template -- Finish template

pdf_endpath -- Deprecated: Ends current path

pdf_fill_stroke -- Fills and strokes current path

pdf_fill -- Fills current path

pdf_findfont -- Prepare font for later use with pdf_setfont()

pdf_get_buffer -- Fetch the buffer containing the generated PDF data

pdf_get_font -- Deprecated: font handling

pdf_get_fontname -- Deprecated: font handling

pdf_get_fontsize -- Deprecated: font handling

pdf_get_image_height -- Deprecated: returns height of an image

pdf_get_image_width -- Deprecated: Returns width of an image

pdf_get_majorversion -- Returns the major version number of the PDFlib

pdf_get_minorversion -- Returns the minor version number of the PDFlib

pdf_get_parameter -- Gets certain parameters

pdf_get_pdi_parameter -- Get some PDI string parameters

pdf_get_pdi_value -- Gets some PDI numerical parameters

pdf_get_value -- Gets certain numerical value

pdf_initgraphics -- Resets graphic state

pdf_lineto -- Draws a line

pdf_makespotcolor -- Makes a spotcolor

pdf_moveto -- Sets current point

pdf_new -- Creates a new pdf resource

pdf_open_ccitt -- Opens a new image file with raw CCITT data

pdf_open_file -- Opens a new pdf object

pdf_open_gif -- Deprecated: Opens a GIF image

pdf_open_image_file -- Reads an image from a file

pdf_open_image -- Versatile function for images

pdf_open_jpeg -- Deprecated: Opens a JPEG image

pdf_open_memory_image -- Opens an image created with PHP's image functions

pdf_open_pdi_page -- Prepare a page

pdf_open_pdi -- Opens a PDF file

pdf_open_png -- Deprecated: Opens a PNG image

pdf_open_tiff -- Deprecated: Opens a TIFF image

pdf_open -- Deprecated: Open a new pdf object

pdf_place_image -- Places an image on the page

pdf_place_pdi_page -- Places an image on the page

pdf_rect -- Draws a rectangle

pdf_restore -- Restores formerly saved environment

pdf_rotate -- Sets rotation

pdf_save -- Saves the current environment

pdf_scale -- Sets scaling

pdf_set_border_color -- Sets color of border around links and annotations

pdf_set_border_dash -- Sets dash style of border around links and annotations

pdf_set_border_style -- Sets style of border around links and annotations

pdf_set_char_spacing -- Deprecated: Sets character spacing

pdf_set_duration -- Deprecated: Sets duration between pages

pdf_set_font -- Deprecated: Selects a font face and size

pdf_set_horiz_scaling -- Sets horizontal scaling of text [deprecated]

pdf_set_info_author -- Deprecated: Fills the author field of the document

pdf_set_info_creator -- Deprecated: Fills the creator field of the document

pdf_set_info_keywords -- Deprecated: Fills the keywords field of the document

pdf_set_info_subject -- Deprecated: Fills the subject field of the document

pdf_set_info_title -- Deprecated: Fills the title field of the document

pdf_set_info -- Fills a field of the document information

pdf_set_leading -- Deprecated: Sets distance between text lines

pdf_set_parameter -- Sets certain parameters

pdf_set_text_matrix -- Deprecated: Sets the text matrix

pdf_set_text_pos -- Sets text position

pdf_set_text_rendering -- Deprecated: Determines how text is rendered

pdf_set_text_rise -- Deprecated: Sets the text rise

pdf_set_value -- Sets certain numerical value

pdf_set_word_spacing -- Deprecated: Sets spacing between words

pdf_setcolor -- Sets fill and stroke color

pdf_setdash -- Sets dash pattern

pdf_setflat -- Sets flatness

pdf_setfont -- Set the current font

pdf_setgray_fill -- Sets filling color to gray value

pdf_setgray_stroke -- Sets drawing color to gray value

pdf_setgray -- Sets drawing and filling color to gray value

pdf_setlinecap -- Sets linecap parameter

pdf_setlinejoin -- Sets linejoin parameter

pdf_setlinewidth -- Sets line width

pdf_setmatrix -- Sets current transformation matrix

pdf_setmiterlimit -- Sets miter limit

pdf_setpolydash -- Deprecated: Sets complicated dash pattern

pdf_setrgbcolor_fill -- Sets filling color to rgb color value

pdf_setrgbcolor_stroke -- Sets drawing color to rgb color value

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

pdf_show_boxed -- Output text in a box

pdf_show_xy -- Output text at given position

pdf_show -- Output text at current position

pdf_skew -- Skews the coordinate system

pdf_stringwidth -- Returns width of text using current font

pdf_stroke -- Draws line along path

pdf_translate -- Sets origin of coordinate system

Пред.

Начало

След.

preg_split

Уровень выше

pdf_add_annotation

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

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