Новые книги

Это книга по технике продаж для новичков в иллюстрациях, что-то похожее на комикс за одним только исключением: результатом деятельности героев будут фантастические навыки в сфере продаж! Издание раскрывает лишь небольшую часть этой области маркетинга, но при этом четко структурированную и изложенную понятным языком. Главным преимуществом книги станут иллюстрации, которые образно подскажут начинающему профессионалу в области продаж, как применить приведенные техники. Книга состоит из четырех глав. В конце каждой главы представлены упражнения для закрепления материала. В первой главе мы рассмотрим: – Виды продаж, этапы и их свойства. – Способы передачи информации. – Установление контакта. – Выявление потребностей покупателей. Вторая глава посвящена структуре переговоров с потенциальным покупателем и стандартам телефонного общения. В этой главе автор рассказывает, как составить тезисный план разговора, преодолеть «секретарский барьер» и наладить первоначальный контакт для привлечения интереса клиента. И многое другое! Третья глава полностью раскрывает проблему работы с возражениями. А в четвертой главе мы полностью разберем значение слов-паразитов, и как им противостоять.
The Windows Driver Model has two separate but equally important aspects. First, the core model describes the standard structure for device drivers. Second, Microsoft provides a series of bus and class drivers for common types of devices.

The core WDM model describes how device drivers are installed and started, and how they should service user requests and interact with hardware. A WDM device driver must fit into the Plug and Play (PnP) system that lets users plug in devices that can be configured in software.

Microsoft provides a series of system drivers that have all the basic functionality needed to service many standard types of device. The first type of system driver supports different types of bus, such as the Universal Serial Bus (USB), IEEE 1394 (FireWire) and Audio port devices. Other class drivers implement standard Windows facilities such as Human Input Devices (HID) and kernel streaming. Finally, the Still Image Architecture (STI) provides a framework for handling still images, scanners, etc.

These system class drivers can make it significantly easier to write some types of device driver. For example, the USB system drivers handle all the low-level communications across this bus. A well defined interface is made available to other drivers. This makes it fairly straightforward to issue requests to the USB bus.

Функции PDF



Учебник РНР
Назад Вперёд

LXXVI. Функции PDF

Введение

Функции PDF в PHP могут создавать PDF-файлы с использованием библиотеки PDFlib, автор Thomas Merz. PDFlib доступна для загрузки на http://www.pdflib.com/pdflib/index.html, но требует приобретения лицензии для коммерческого использования. Библиотеки JPEG и TIFF необходимы для компилирования этого приложения. См. в разделе Инсталяция PDFlib о компиляции поддержки PDF в PHP.

Документация этого раздела является обзором функций библиотеки PDFlib и не может считаться исчерпывающим справочником. Консультируйтесь в сопровождающей документации дистрибутива PDFlib. Там содержится полноценный обзор возможностей функций библиотеки PDFlib и самая свежая информация обо всех функциях.

В библиотеке PDFlib и в модуле PHP все функции и параметры имеют идентичные имена. Вам необходимо разобраться в некоторых основных понятиях PDF и PostScript, чтобы эффективно использовать это расширение.
Все размеры и координаты измеряются в пунктах PostScript. Обычно имеется 72 PostScript-пункта на дюйм, но это зависит от разрешающей способности на выводе. См. в PDFlib-документации, включённой в дистрибутив PDFlib, объяснение используемой системы координат.

Обратите внимание, что  большинство функций PDF требуют pdf object в качестве первого параметра. См. примеры далее.

Примечание: имеется альтернативный модуль PHP для создания PDF-документов на базе FastIO's ClibPDF. См. раздел ClibPDF. Обратите внимание, что ClibPDF имеет несколько иной API по сравнению с PDFlib.

Конфликты со старыми версиями PDFlib

Начиная с PHP 4.0.5, PHP-расширение для PDFlib официально поддерживается компанией PDFlib GmbH. Это означает, что все функции, описанные в учебнике PDFlib (V3.00 или выше), поддерживаются в PHP 4  с точно теми же значениями и параметрами. Только return-значения могут отличаться от учебника PDFlib, так как используется соглашение PHP по возвращению FALSE. Из соображений совместимости эта привязка к PDFlib всё ещё поддерживает старые функции, но они должны быть заменены их новыми версиями. PDFlib GmbH не будет рассматривать проблемы, возникающие при использовании этих старых функций.

Таблица 1. Не рекомендуемые функции и их замены
Старая функцияЗамена
pdf_put_image() Больше не нужна.
pdf_execute_image()Больше не нужна.
pdf_get_annotation()pdf_get_bookmark() с использованием тех же параметров.
pdf_get_font() pdf_get_value() с передачей "font" в качестве второго параметра.
pdf_get_fontsize() pdf_get_value() с передачей "fontsize" в качестве второго параметра.
pdf_get_fontname() pdf_get_parameter() с передачей "fontname" в качестве второго параметра.
pdf_set_info_creator() pdf_set_info() с передачей "Creator" в качестве второго параметра.
pdf_set_info_title() pdf_set_info() с передачей "Title" в качестве второго параметра.
pdf_set_info_subject() pdf_set_info() с передачей "Subject" в качестве второго параметра.
pdf_set_info_author() pdf_set_info() с передачей "Author" в качестве второго параметра.
pdf_set_info_keywords() pdf_set_info() с передачей "Keywords" в качестве второго параметра.
pdf_set_leading() pdf_set_value() с передачей "leading" в качестве второго параметра.
pdf_set_text_rendering() pdf_set_value() с передачей "textrendering" в качестве второго параметра.
pdf_set_text_rise() pdf_set_value() с передачей "textrise" в качестве второго параметра.
pdf_set_horiz_scaling() pdf_set_value() с передачей "horizscaling" в качестве второго параметра.
pdf_set_text_matrix()Больше не доступна.
pdf_set_char_spacing() pdf_set_value() с передачей "charspacing" в качестве второго параметра.
pdf_set_word_spacing() pdf_set_value() с передачей "wordspacing" в качестве второго параметра.
pdf_set_transition()pdf_set_parameter() с передачей "transition" в качестве второго параметра.
pdf_open() pdf_new() плюс последующий вызов pdf_open_file()
pdf_set_font() pdf_findfont() плюс последующий вызов pdf_setfont()
pdf_set_duration() pdf_set_value() с передачей "duration" в качестве второго параметра.
pdf_open_gif() pdf_open_image_file() с передачей "gif" в качестве второго параметра.
pdf_open_jpeg() pdf_open_image_file() с передачей "jpeg" в качестве второго параметра.
pdf_open_tiff() pdf_open_image_file() с передачей "tiff" в качестве второго параметра.
pdf_open_png() pdf_open_image_file() с передачей "png" в качестве второго параметра.
pdf_get_image_width() pdf_get_value() с передачей "imagewidth" в качестве второго параметра и изображения в качестве третьего параметра.
pdf_get_image_height() pdf_get_value() с передачей "imageheight" в качестве второго параметра и изображения в качестве третьего параметра.

Подсказки по установке PDFlib 3.x

При использовании версии 3.x библиотеки PDFlib вы должны сконфигурировать PDFlib с опцией
--enable-shared-pdflib
.

Вопросы по старым версиям PDFlib

Любые версии PHP 4 после 9 марта 2000 не поддерживают версии PDFlib, ранее 3.0.

PDFlib 3.0 или выше поддерживается в PHP 3.0.19 и позднее.

Примеры

Большинство функций довольно легко использовать. Самое трудное это, пожалуй, создание очень простого PDF-документа. Следующий пример должен помочь начать. Он создаёт test.pdf из одной страницы. Эта страница содержит текст "Times Roman outlined" шрифтом outlined 30pt. Текст также подчёркнут.

Пример 1. Создание PDF-документа с помощью PDFlib
<?php
$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", "См. Author");
pdf_set_info($pdf, "Subject", "Testing");
pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, "host");
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>";
?>

Скрипт getpdf.php возвращает pdf-документ.

<?php
$len = filesize($filename);
header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");
readfile($filename);
?>

Дистрибутив PDFlib содержит более сложный пример, где создаётся страница с аналоговыми часами. Здесь мы используем возможность PDFlib создания в памяти, чтобы не использовать временные файлы. Этот пример, конвертированный в PHP из примера PDFlib, таков: (Такой же пример имеется в документации CLibPDF.)

Пример 2. pdfclock из дистрибутива PDFlib
<?php
$radius = 200;
$margin = 20;
$pagecount = 10;

$pdf = pdf_new();

if (!pdf_open_file($pdf, "")) {
    print 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);

    /* отсчёт минут */
    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();

    /* рисовать часовую стрелку */
    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);

    /* рисовать минутную стрелку  */
    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);

    /* рисовать секундную стрелку  */
    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);

    /* рисовать небольшой кружок в центре */
    pdf_circle($pdf, 0, 0, $radius/30);
    pdf_fill($pdf);

    pdf_restore($pdf);

    pdf_end_page($pdf);

    # чтобы увидеть некоторую разницу
    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");
print $buf;

pdf_delete($pdf);
?>
Содержание
pdf_add_annotation - не рекомендуется: добавляет аннотацию
pdf_add_bookmark - добавляет закладку на текущей странице
pdf_add_launchlink - добавляет запускающую аннотацию на текущей странице
pdf_add_locallink - добавляет аннотацию-ссылку на текущей странице
pdf_add_note - добавляет аннотацию-заметку на текущей странице
pdf_add_outline - не рекомендуется: добавляет закладку на текущей странице
pdf_add_pdflink - добавляет ссылку-аннотацию на файл на текущей странице
pdf_add_thumbnail - добавляет уменьшенную версию/thumbnail на текущей странице
pdf_add_weblink - добавляет web-ссылку на текущей странице
pdf_arc - рисует дугу (против часовой стрелки)
pdf_arcn - рисует дугу (по часовой стрелке)
pdf_attach_file - добавляет присоединение файла на текущей странице
pdf_begin_page - начинает новую страницу
pdf_begin_pattern - начинает новый патэрн
pdf_begin_template - начинает новый шаблон
pdf_circle - рисует круг
pdf_clip - обрезает до текущего пути/path
pdf_close_image - закрывает изображение
pdf_close_pdi_page - закрывает дескриптор страницы
pdf_close_pdi - закрывает ввод PDF-документа
pdf_close - закрывает pdf-объект
pdf_closepath_fill_stroke - закрывает, заполняет и очерчивает текущий путь
pdf_closepath_stroke - закрывает путь и рисует линию вокруг пути
pdf_closepath - закрывает путь
pdf_concat - конкатенация матрицы с CTM
pdf_continue_text - выводит текст в следующей строчке
pdf_curveto - рисует кривую
pdf_delete - удаляет PDF-объект
pdf_end_page - заканчивает страницу
pdf_end_pattern - заканчивает патэрн
pdf_end_template - заканчивает шаблон
pdf_endpath - не рекомендуется: заканчивает текущий путь
pdf_fill_stroke - заполняет и очерчивает текущий путь
pdf_fill - заполняет текущий путь
pdf_findfont - готовит шрифт для последующего использования с pdf_setfont()
pdf_get_buffer - извлекает буфер, содержащий сгенерированные PDF-данные
pdf_get_font - не рекомендуется: работа со шрифтом
pdf_get_fontname - не рекомендуется: работа со шрифтом
pdf_get_fontsize - не рекомендуется: работа со шрифтом
pdf_get_image_height - возвращает высота изображения
pdf_get_image_width - возвращает ширина изображения
pdf_get_majorversion - возвращает наибольший номер версии PDFlib
pdf_get_minorversion - возвращает наименьший номер версии PDFlib
pdf_get_parameter - получает определённые параметры
pdf_get_pdi_parameter - получает некоторые строковые параметры PDI
pdf_get_pdi_value - получает некоторые числовые параметры PDI
pdf_get_value - получает некоторое числовое значение
pdf_initgraphics - переустанавливает графический статус
pdf_lineto - рисует линию
pdf_makespotcolor - делает spotcolor
pdf_moveto - устанавливает текущую точку
pdf_new - создаёт новый pdf-объект
pdf_open_CCITT - открывает новый файл изображения с необработанными CCITT-данными
pdf_open_file - открывает новый pdf-объект
pdf_open_gif - не рекомендуется: открывает GIF-изображение
pdf_open_image_file - читает изображение из файла
pdf_open_image - Versatile-функция для изображений
pdf_open_jpeg - не рекомендуется: открывает JPEG-изображение
pdf_open_memory_image - открывает изображение, создаваемое РНР-функциями изображений
pdf_open_pdi_page - готовит страницу
pdf_open_pdi - открывает PDF-файл
pdf_open_png - не рекомендуется: открывает PNG-изображение
pdf_open_tiff - не рекомендуется: открывает TIFF-изображение
pdf_open - не рекомендуется: открывает новый pdf-объект
pdf_place_image - помещает изображение на страницу
pdf_place_pdi_page - помещает изображение на страницу
pdf_rect - рисует прямоугольник
pdf_restore - восстанавливает ранее сохранённое окружение
pdf_rotate - устанавливает поворот
pdf_save - сохраняет текущее окружение
pdf_scale - устанавливает масштабирование
pdf_set_border_color - устанавливает цвет рамки вокруг ссылок и аннотаций
pdf_set_border_dash - устанавливает стиль пунктирной рамки вокруг ссылок и аннотаций
pdf_set_border_style - устанавливает стиль рамки вокруг ссылок и аннотаций
pdf_set_char_spacing - не рекомендуется: устанавливает расстояние между символами
pdf_set_duration - не рекомендуется: устанавливает расстояние между страницами
pdf_set_font - не рекомендуется: выбирает шрифт и размер
pdf_set_horiz_scaling - устанавливает масштабирование текста по горизонтали
pdf_set_info_author - заполняет поле author документа
pdf_set_info_creator - заполняет поле creator документа
pdf_set_info_keywords - заполняет поле keywords документа
pdf_set_info_subject - заполняет поле subject документа
pdf_set_info_title - заполняет поле title документа
pdf_set_info - заполняет поле информации документа
pdf_set_leading - не рекомендуется: устанавливает расстояние между строками текста
pdf_set_parameter - устанавливает некоторые параметры
pdf_set_text_matrix - не рекомендуется: устанавливает матрицу текста
pdf_set_text_pos - устанавливает позицию текста
pdf_set_text_rendering - не рекомендуется: определяет отображение текста
pdf_set_text_rise - не рекомендуется: устанавливает возвышение текста
pdf_set_value - устанавливает некоторое числовое значение
pdf_set_word_spacing - не рекомендуется: устанавливает расстояние/spacing между словами
pdf_setcolor - устанавливает цвет заполнения и подчёркивания
pdf_setdash - устанавливает патэрн пунктира
pdf_setflat - устанавливает плоскость/flatness
pdf_setfont - устанавливает текущий шрифт
pdf_setgray_fill - устанавливает цвет заполнения - значение gray
pdf_setgray_stroke - устанавливает цвет рисования - значение gray
pdf_setgray - устанавливает цвета рисования и заполнения - значение gray
pdf_setlinecap - устанавливает параметр linecap
pdf_setlinejoin - устанавливает параметр linejoin
pdf_setlinewidth - устанавливает ширину линии
pdf_setmatrix - устанавливает текущую матрицу трансформации
pdf_setmiterlimit - устанавливает miter limit/границу наклона
pdf_setpolydash - устанавливает сложный пунктирный патэрн
pdf_setrgbcolor_fill - устанавливает цвет заполнения - rgb-значение
pdf_setrgbcolor_stroke - устанавливает цвет рисования - rgb-значение
pdf_setrgbcolor - устанавливает цвета рисования и заполнения - rgb-значение
pdf_show_boxed - выводит текст в боксе
pdf_show_xy - выводит текст в данной позиции
pdf_show - выводит текст в текущей позиции
pdf_skew - наклоняет систему координат
pdf_stringwidth - возвращает ширину текста с использованием текущего шрифта
pdf_stroke - рисует линию вдоль пути
pdf_translate - устанавливает точку отсчёта системы координат

НазадОглавление Вперёд
overloadВверх pdf_add_annotation