Главная Статьи Написать
 
Начнём
Введение
Инсталяция
Конфигурирование
Безопасность
Справочник Языка
Базовый синтаксис
Типы
Переменные
Константы
Выражения
Операции
Структуры управления
Функции
Классы и Объекты
Ссылки. Разъяснение.
Возможности
Обработка Ошибок
Создание изображений и манипуляции с ними
HTTP-аутентификация в PHP
Куки
Обработка загрузки файлов
Использование удалённых файлов
Обслуживание соединений
Постоянные соединения с базами данных
Безопасный режим
Использование PHP из командной строки
Функции. Справочник.
Функции, специфические для Apache
Array-функции
Aspell-функции [не рекомендуются]
BCMath математические функции произвольной точности
Bzip2 Compression-функции
Calendar-функции
CCVS API-функции
Функции поддержки COM для Windows
Class/Object-функции
ClibPDF-функции
Crack-функции
CURL, Client URL Library-функции
Cybercash payment-функции
Crédit Mutuel CyberMUT-функции
Cyrus IMAP -функции администрирования
Функции типов символов
Функции абстрактного слоя БД (dbm-стиль)
Дата и Время
dBase-функции
DBM-функции
dbx-функции
DB++-функции
Direct IO-функции
Функции директорий
DOM XML-функции
.NET-функции
Обработка ошибок и логинг
FrontBase-функции
filePro-функции
Функции файловой системы
Forms Data Format-функции
FriBiDi-функции
FTP-функции
Функции работы с функциями
Gettext
GMP-функции
HTTP-функции
Hyperwave-функции
Hyperwave API-функции
ICAP-функции [не рекомендуются]
iconv-функции
Image-функции
IMAP, POP3 и NNTP-функции
Informix-функции
InterBase-функции
Ingres II-функции
IRC Gateway-функции
Java
LDAP-функции
Mail-функции
mailparse-функции
Mathematical-функции
Многобайтные строки
MCAL-функции
Mcrypt Encryption-функции
Mhash-функции
Mimetype-функции
Microsoft SQL Server-функции
Ming-функции для Flash
Прочие функции
mnoGoSearch-функции
mSQL-функции
MySQL-функции
Mohawk Software -функции обработчика сессии
muscat-функции
Network-функции
Ncurses -функции управления терминалом
Lotus Notes-функции
Unified ODBC-функции
Oracle 8-функции
OpenSSL-функции
Oracle-функции
Ovrimos SQL-функции
Управление выводом
Перегрузка свойств объектов и вызовов методов
PDF-функции
Verisign Payflow Pro-функции
PHP. Опции & Информация
POSIX-функции
PostgreSQL-функции
Управление процессом
Выполнение программы
Printer-функции
Pspell-функции
GNU Readline
GNU Recode-функции
Функции регулярных выражений (Perl-совместимые)
qtdom-функции
Функции регулярных выражений (POSIX расширенная)
Semaphore, Shared Memory и IPC-функции
SESAM database-функции
Обслуживание сессий
Shared Memory-функции
Shockwave Flash-функции
SNMP-функции
Socket-функции
String-функции
Sybase-функции
URL-функции
Функции переменных
vpopmail-функции
W32api-функции
WDDX-функции
XML parser-функции
XMLRPC-функции
XSLT-функции
YAZ-функции
YP/NIS-функции
Zip File-функции (доступ только для чтения)
Zlib Compression-функции
Расширение PHP 4.0
Обзор
Возможность расширения
Строение исходного кода
Система автоматического построения РНР
Создание расширений
Использование расширений
Решение проблем
Исходные Ресурсы. Обсуждение.
Приём аргументов
Создание переменных
Дублирование содержимого переменной: конструктор Copy
Возвращаемые значения
Печать информации
Startup и Shutdown-функции
Вызов пользовательских функций
Поддержка файлов инициализации
Что дальше?
Справочник: некоторые макросы конфигурации
Макросы API
FAQ: Frequently Asked Questions
Общая информация
Списки рассылки
Получение PHP
Вопросы о базах данных
Инсталяция
Проблемы построения
Использование PHP
PHP и HTML
PHP и COM
PHP и другие языки
Переход от PHP 2 к PHP 3
Переход от PHP 3 к PHP 4
Другие вопросы
Приложения
История PHP и смежных проектов
Переход от PHP 3 к PHP 4
Переход от PHP/FI 2 к PHP 3
Отладка PHP
Расширение PHP
Список псевдонимов функций
Список зарезервированных слов
Список типов ресурсов
Список лексем разборщика
Об этом учебнике




Примеры

Большинство функций довольно легко использовать. Самое трудное это, пожалуй, создание очень простого 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 - устанавливает точку отсчёта системы координат