Учебник по основам PHP. PHPBeginner

       

Ming для Flash


Ming является библиотекой с открытым исходным кодом (LGPL), позволяющей создавать анимации SWF («Flash»). Ming поддерживает почти все возможности Flash 4, включая: фигуры (shapes), цветовые переходы (gradients), картинки (bitmaps: jpeg), превращения (morphs или «shape tweens»), текст, кнопки, действия, клипы (sprites), потоковую музыку трЗ и преобразования цветов; единственное, чего не поддерживает Ming, это звуковые события. Использование Ming предпочтительнее модуля libswf. Ming работает на большинстве платформ, включая Windows, использует РНР объекты для представления объектов SWF и продолжает разрабатываться1 (адрес разработчиков ming@opaque.net). Библиотеку Ming можно загрузить с сайта: http://www.opaque.net/ming/.

Все размеры указываются в единицах «твипс» (twips), что равно I 1/20 пиксела. Но масштаб может изменяться проигрывателем.

Ming использует PHP-объекты тринадцати классов:

  • swfmovie();
  • swfshape();
  • swfdisplayitem();
  • swfgradient();
  • swfbitmap();
  • swf fill ();
  • swfmorph();
  • swftext();
  • swffont();
  • swftextfield();


  • swfsprite();
  • swfbutton();
  • swfaction().
  • SWFMovie — объект анимации SWF 4

    SWFMovie->output

    Вывод созданной анимации

    void swfmovie->output (void)

    Для того чтобы браузер правильно воспринял передаваемый ему файл, используйте PHP-команду отсылки заголовка до вывода анимации:

    <?php headert'Content-type: apolication/x-Shockwave-flash'); ?>

    См. также swfmovie->save().

    SWFMovie->save

    Сохранение анимации в файле

    void swfmovie->save (string filename)

    См. также output().

    SWFMovie->add

    Добавление компонентов анимации

    void swfmovie->add (resource instance)

    Этим методом можно добавлять объекты различных типов: фигуры, текст, шрифты и т. п. Для отображаемых объектов (shape, text, button, sprite) возвращается дескриптор объекта SWFDisplayltemO, внесенный в список отображения. При многократном добавлении одного объекта каждый раз будет возвращаться другой дескриптор.

    См. также: swfmovie->remove() и пример в swfdisplayitem->rotateto().


    SWFMovie->remove

    Удаление объекта из списка отображения

    void swfmovie->remove (resource instance) Функция противоположна swfmovie->add().

    SWFMovie->setbackground

    Установка цвета фона

    void swfmovie->setbackground (int red, int green, int blue)

    Цвет задается значениями (0-255) компонентов: красного, зеленого и синего.

    SWFMovie->setdimension

    Установка ширины и высоты анимации

    void swfmovie->setdimension (int width, int height)

    SWFMovie->setrate

    Установка частоты кадров анимации

    void swfmovie->setrate (int rate)

    Значение rate — число кадров в секунду. Анимация будет тормозиться, если проигрыватель не будет успевать перерисовывать кадры. Если одновременно проигрывается звук, то для его нормального воспроизведения частота перерисовки будет при необходимости снижаться.

    SWFMovie->setframes

    Установка общего числа кадров анимации

    void swfmovie->setframes (string number_of_frames)

    SWFMovie->nextframe

    Переход к новому кадру анимации

    void swfmovie->nextframe (void)

    SWFMovie->streammp3

    Воспроизведение потокового звука МРЗ

    3void swfmovie->streammp3 (string mpSFileName)

    Заметьте, что проигрываться будет не весь файл фонового звука целиком, а только та часть, которая успеет воспроизвестись за время воспроизведения установленного числа кадров при текущей частоте кадров.

    <?php
    $m = new SWFMovie() ; $m->setRat.eC10.0);
    // кадров в секунду $m->streamMp3("distortobass.mp3"):
    // use your own MP3
    // длительность проигрывания анимации:
    100/10.0 = 10 секунд $m->setFrames(100);
    // кадров в анимации
    headert'Content-type: application/x-shockwave flash'):
    $m~>output(). ?>

    SWFDisplayltem - объект списка отображения

    Используется для хранения компонентов анимации; после того, как объекты shape, text, sprite или button декларированы (созданы экземпляры классов swfshape(), swfbutton(), swftext(). swfspnte()) и добавлены в анимацию (методом swfmovie->add()), для каждого из них возвращается дескриптор (объект типа SWFDisplayltem), который можно использовать для перемещения, вращения, масштабирования и наклона объекта.



    SWFDisplayltem - >moveTo

    Репозиционирование объекта

    void swfdisplayitem->moveto ( int x, int у) Указываются абсолютные координаты.

    См. также swfdisplayitem->move().

    SWFDisplayltem->move

    Смещение объекта

    void swfdisplayitem->move (int dx. int dy)

    Указываются координаты относительно текущей позиции.

    См. также swfdisplayitem->moveto().

    SWFDisplayltem - >scaleTo

    Задание новых размеров объекта

    void swfdisplayitem->scaleto (int x, int у)

    См. также swfdisplayitem->scale().

    SWFDisplay!tern->scale

    Масштабирование объекта

    void swfdisplayitem->scale (int dx, int dy)

    Указываются коэффициенты масштабирования.

    См. также swfdisplayitem->scaleto().

    SWFDisplayltem->rotateTo

    Установка абсолютного угла поворота объекта

    void swfdisplayitem->rotateto (double degrees)

    Угол указывается в градусах.

    <?php // три вращающиеся строки Sthetext = "ming!";
    $f = new SWFFontC'Bauhaus 93.fdb"):
    $m = new SWFMovieO : $m->setRate(24.0):
    $m->setDimension(2400. 1600).
    $m->setBackground(Oxff. Oxff. Oxff):
    function texKSr. $g. $b. $a. $rot. Sx. $y. Sscale. Sstring) {
    global $f. $m; $t = new SWFText();
    $t->setFont($f). $t->setCo1or($r. $g. $b. $a):
    $t->setHeight(960)-.
    $t->moveTo(-($f->getWidth($stnng))/2. Sf->getAscent()/2):
    $t->addString($string): $1 $m->add($t);
    $i->/ - $x: $i->y = $y. $1->rot - trot: $i->s ' Sscale.
    $1->rotateTo($rot): $i->scale($scale. Sscale):
    return $1: function step($i) {
    soldrot = $i->rot. $i->rot = 19*$i->rot/20;
    Si >x = (19*$i->x + 1200)/2C: Sv>y = (19*$v>y + 800)/20;
    ?i->s = (19*$i->s + 1.01/20.
    Si->rotateTo(Si->rot):
    $i->scaleTo(Si ->s. Ii->s): $-i->moveTo($i->x. $i->y).
    return ii. } Sil = text(0xff. 0x33. 0x33.
    Oxff. 900. 1200 800. 0 03. Sthetext):
    $12 = text(0x00. 0x33. Oxff. Ox7f. -560.
    1200. 800. 0.04. $thetext); $13 =
    text(Oxff. Oxff. Oxff. Ox9f. 180. 1200. 800. 0.001 Sthetext):
    for($i=l; Si<=100: ++$1) {
    $11 = step($11); $12 = step($12); $13 = step($13):
    $m->nextFrame(): }
    headert'Content-type: application/x-shockwave-flash');
    $m->output(); ?>



    См. также swfdisplayitem->rotate().

    SWFDisplayltem->Rotate

    Поворот объекта

    void swfdisplayitem->rotate (double ddegrees)

    Указывается относительный угол поворота в градусах.

    См. также swfdisplayitem->rotateto().

    SWFDisplayltem->skewXTo

    Установка наклона по X

    void swfdisplayitem->skewxto (double d)

    Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.

    См. также: swfdisplayitem->skewx(), swfdisplayitem->skewy() и swfdisplayitem-> skewyto().

    SWFDisplayltem->skewX

    Наклон объекта по X

    void swfdisplayitem->skewx (double d)

    SWFDisplayltem->skewYTo

    Установка наклона по Y

    void swfdisplayi-tem->skewyto (double degrees)

    Указывается смещение правой стороны вниз.

    SWFDisplayltem->skewY

    Наклон объекта по Y

    void swfdisplayitem->skewy (double ddegrees)

    SWFDisplayltem - >setDepth

    Установка порядка отображения (z-order)

    void swfdisplayitem->setdepth (double depth)

    Размещает объект на указанном уровне. (При добавлении следующий объект размещается поверх предыдущего.)

    SWFDisplayltem->remove

    Удаление объекта из анимации

    void swfdisplayitem->remove (void)

    SWFDisplayltem->setName

    Присвоение объекту имени

    void swfdisplayitem->setname (string name)

    Используется для возможности обращения к объекту при написании программ действий. Полезно только для спрайтов.

    SWFDisplayltem->setRatio

    Установка увеличения объекта

    void swfdisplayitem->setratio (double ratio)

    Полезно только для объектов SWFMorph().

    Приведенный ниже пример создает три концентрических изменяющихся кольца.

    <?php $р = new SWFMorphC);
    $g = new SWFGradient():
    $g->addEntry(0.0. 0. 0. 0):
    $g->addEntry(0.16. Oxff. Qxff. Oxff):
    $g->addEntry(0.32. 0. 0. 0):
    $g->addEntry(0.48. Oxff. Oxff. Oxff);
    $g->addEntry(0.64. 0, 0. 0);
    $g->addEntry(0.80, Oxff. Oxff. Oxff):
    $g->addEntry(l.'00. 0. 0. 0);
    $s = $p->getShapel():
    $f = $s->addFill($g. SWFFILL_RAD!AL_GRADIENT);
    $f->scaleTo(0.05):
    $s->setLeftFill($f):
    $s->iTOvePenTo(-160, -120);
    $s->drawLine(320. 0);
    $s->drawLine(0. 240);
    $5->drawLine(-320. 0);
    $s->drawL1ne(0. -240):
    $g = new SWFGradientO:
    $g->addEntry(0.0. 0. 0. 0):
    $g->addEntry
    (0.16. Oxff. 0. 0);
    $9->addEntry(0.32. 0. 0. 0):
    $g->addEntry(0.48. 0. Oxff. 0):
    $g->addEnti-y(0.64. 0. C. 0):
    $g->addEntryC0.80. 0. 0. Oxff):
    $g->addEntry(1.00. 0. 0. 0).
    $s - $p->getShape2():
    $f $s->addFill($g.
    S/:FFILL_RADIAL_GRADIENT);
    $f->scaleTo(0.05):
    $f->skewXTo(1.0):
    $s->setLeftFill($f):
    $s->movePenTo(-160. -120):
    $s->drawLine(320. 0):
    $s->drawl_ine(0. 240):
    $s->drawLine(-320. 0):
    $s->drawLine(0. -240):
    $m = new SWFMovie():
    $m->setDimension(320. 240):
    $n = $m->add($p):
    $i->moveTo'160. 120):
    for($n-0: $n<-l 001. $n+=0.01) {
    Si->setRatio($n):
    $m->nextFrame(): }
    header('Content - type: appli cati on/x-Shockwave-fl ash');
    fm->output(); ?>



    SWFDisplayltem->addColor

    Увеличение значений компонентов цвета

    void swfdisplayltem->addco"lor ([integer red [. integer green [, integer blue [, integer a>)

    SWFDisplayltem->multColor

    Умножение значений компонентов цвета

    void swfdisplayitem->multcolor ([integer red [. integer green [, integer blue [. integer a>)

    <?php $b = new SWFB1traapCbackyard.jpg");
    // note use your own picture :-)
    $s = new SWFShape(): $5->setRightFilU$s->addFill($b)):
    $s->drawLine($b->getWidth(). 0):
    $s->drawLine(0. $b->getHeight()):
    $b->drawLine(-$b->getWidth(). 0).
    $s->drawLine(0. -$b->getHenght());
    $m = new SWFMovieO $m->setDimension($b->getWTdth().
    $b->getHeight()). $1 - $m->add($s);
    for($n-0: $n<-20: ++$n) {
    $v>multColor(1.0-$n/10. 1.0. 1 0).
    $1 >addColor(Oxff*$n/20. 0. 0):
    $m->nextFrame(): }
    headerCContent type: application/x-shockwave-flash');
    $m->output(). ?>

    SWFShape - объект Фигура

    <?php $m = new SWFMovie() ;
    $m->setDimension(800. 800): // размер рисунка
    $m->setbackground(50.100.200). // цвет фона
    $s = new SWFShape() . $s->setLine(160. Ox7f. 0. 0).
    // стиль линии $s->setRightFill($s->addFill(Oxff. 0. 0)):
    // заливка $s->movePenTo(200. 200):
    // начальная точка $s->drawLineTo(620. 400):
    $s->drawLine(-200. 60):
    $s->drawCurveTo(400. 0. 200. 200):
    $m->add($s): headert'Content-type-
    application/x-shockwave-flash'): $m->output(): ?>

    SWFShape->setLine

    Установка типа линий фигуры

    void swfshape->setline (Int width [, integer red , integer green , integer blue [, integer a]])

    Число аргументов может быть 1, 4 или 5 (но не 3 или 2). Для линии задается ширина width, цвет (значениями компонент красного, зеленого и синего) и альфа-параметр.

    <?php $s = new SWFShape():
    $fl - $s->addFill(Oxff. 0. 0):
    $f - new SWFFontf'Techno.fdb'):
    $s->setRightFill($fl): $5.>setLine(40. Ox7f. 0. 0).
    $s->drawGlyph($f. '!'); $s->movePen($f.>getWidth('!'). 0):
    $m = new SWFMovie():
    $m->setDimension(3000.2000):
    $m-><;etRate(12.0).
    $-, _ $m->add($s).
    $i.>rnoveTo(1500-$f->get;«hdth
    ("n/2. 1000+$f->getAscent()/2):
    headt'r('Content-type:
    application/x-Shockwave-flash'}; $m->oiitput(): ?>



    SWFShape->addFill

    Задание стиля заливки

    void swfshape->addfill ( Integer red. Integer green, Integer blue [, Integer a])

    void swfshape->addfill (SWFbitmap bitmap [, integer flags]) void swfshape->addfill (SWFGradient gradient [, integer flags])

    Возможны три стиля заливки (см. синтаксис): цветом, рисунком, градиентная заливка.

    Для ригунка задастся дескриптор объекта swfbitmap() и необязательный параметр SWFFILL_CLIPPED_BITMAP (обрезанный рисунок) или SWFFILL_ TILED_BITMAP (размноженный рисунок, по умолчанию).

    Для градиентной заливки задается дескриптор объекта swfgradientO и необязательный параметр SWFFILL_RADIAL_GRADIENT или SWFFILL_ LINEAR_GRAOIENT (линейный, по умолчанию).

    Возвращает дескриптор объекта swffill() для использования в функциях swfshape->setleftfill() и swfshape->setrightfill().

    <?php $Р . new SWFMorph().
    $b - new SWFBitmapCaTphafin.jpg"):
    // используйте собственный рисунок
    $width = Ib->getWidth(): SheigHt = №->getHeight():
    $s - $p->getShapel():
    $f = $5->addFill($b. SWFFILL_T!LED_BITMAP).
    $f->moveTo(-$width/2. -$height/4):
    $f->scaleTo(i 0. 0.5): $s->
    setLeftFill($f): $s->movePenTo
    (-$w1dth/2. -SheightM):
    $s->drawL1ne($width, 0): $s->drawLine
    (0. $height/2): $s->drawLine(-$wicSth. 0).
    $s->drawl_ine(0. -$henght/2).
    $s - $p->getShape2():
    $f = $s->addFill($b. SWFFILL_TILED_BITMAP):
    // these two have no effect! $f->
    tnoveTo(-$width/4. -$height/2):
    $f->scaleTo(0.5. 1.0):
    $s->setLeftF1l1($f);
    $s->movePenTo(-$width/4. -$height/2):
    $s->drawLine($width/2. 0).
    $s->drawl_ine(0. Sheight): $s->drawLnne
    (-$width/2. 0): $s->drawLine(0. -Sheight):
    $m = new SKFMovie();
    $m->setDimension($width. Sheight):
    $1 = $m->add($p):
    $v>moveTo($width/2. $height/2):
    for($n-0. $n<1.001: $n+=0.03)
    $i->setRatio($n): $m->nextFrame(): }
    header('Content-type: application/x-shockwave-flash'):
    $m->output(): ?>

    SWFShape->setLeftFill

    Заливка фигуры налево

    void swfshape->setleftfill (swfgradient fill)



    void swfshape->setleftfill ( int red. int green, int blue [. int a])

    Если браузер отказывается закрашивать фигуру, попробуйте закраску с другой стороны.

    Второй вариант является аббревиатурой swfshape->setleftfiTI($s-> addfill($r. $g, $b [, $a]));.

    См. также swfshape->setrightfill().

    SWFShape->setRightFill

    Заливка фигуры направо

    void swf shape->setnghtf nil (swfgradient fill)

    void swfshape->setrightfill (int red. int green, int blue [, int a])

    См. также swfshape->setleftfi"ll().

    SWFShape->movePenTo

    Задание точки вывода

    void swfshape->raovepento (integer x, integer y)

    Указывается точка, от которой будет чертиться фигура.

    См. также: swfshape->movepen(), swfsh"ape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().

    SWFShape->movePen

    Смещение точки вывода

    void swfshape->movepen (integer dx, integer dy)

    См. также: swfshape->movepento(), swfshape->drawcurveto(), swfshape-> drawlineto() и swfshape->drawline().

    SWFShape->drawLineTo

    Черчение линии

    void swfshape->drawlineto (integer x, integer y)

    Создает линию (используя текущий стиль) от текущей точки вывода до указанной.

    См. также: swfshape->movepento(), swf shape ->drawcurveto(), swfshape-> movepen(), swfshape->drawline().

    SWFShape->drawLine

    Проведение отрезка

    void swfshape->drawline (integer dx, integer dy)

    См. также: swf shape->movepento(), swfshape->drawcurveto(), swfshape-> movepen() и swfshape->drawlineto().

    SWFShape->drawCurveTo

    Черчение кривой void swfshape->drawcurveto (int controlx, int controly, int endx, int endy)

    Создает квадратичную кривую (используя текущий стиль) от текущей точки вывода до указанной (endx, endy), используя точку (endx, endy) как ориентирующую.

    См. также: swfshape->drawlineto(), swfshape->drawline(), swfshape-> movepento() и swfshape->movepen().

    SWFShape->drawCurve

    Проведение кривой

    void swfshape->drawcurve (int controldx. int controldy, int dx, int dy)



    Координаты указываются относительные.

    SWFGradient — объект градиентной заливки

    Градиентные заливки используются для заполнения фигур методом swfshape->addfilH).

    В результате выполнения этого простого примера на фоне черно-белой градиентной заливки будет создан по центру красноватый диск.

    <?php $m = new SWFMovie() : $m->set.Dimension(320. 240):
    $s = new SWFShape():// first gradient- black to white
    $g = new SWFGradient(); $g->addtntry(0 0. 0. 0. 0).
    $g->addEntry(1.0. Oxff. Oxff. Oxff); 1
    $f = $s->addFill($g. SWFFILL_LINEAR_GRADIENT):
    $f->scaleTo(0.03); $f-xnoveTo(160. 120)-
    $s->setRightFill($f). $s->drawLine(320, 0).
    $s->drawLine(0. 240): $s->drawLine(-320. 0):
    $s->drawLme(0. -240): $rc->add{$s).
    $s - new SWFShape():
    // second gradient- radial gradient from red
    to transparent $g = new SWFGradient();
    $g->addEntry(0.0. Oxff. 0. 0. Oxff):
    $g->addEntry(1.0. Oxff. 0. 0. 0):
    $f = $s->addF111($g. SWFFILL_RADIAL_GRADIENT):
    $f->scaleTo(0.05): $f->moveTo(160. 120):
    $s->setRightFill($f): $s->drawLine(320. 0):
    $s->drawline(0. 240): $s->drawLine(-320. 0):
    $s->drawLine(0. -240): $m->add($s):
    header('Content-type: application/x-shockwave-flash'):
    $m->output(): ?>

    SWFGradient- >add Entry

    Добавление экстремума градиентной заливки

    void swfgradient->addentry (double ratio, int red, int green, int blue [, int a])

    Аргумент ratio указывает позицию диапазона градиентной заливки (от 0 до 1), для которой указывается цвет. Необязательным аргументом а указывается прозрачность (0—255).

    SWFBitmap - загрузка рисунка

    new swfbitmap (string filename [, integer alphafilename])

    i Загружает рисунок из файла JPEG или DBL-файла filename. Можно указать дополнительный рисунок alphafilename для использования в качестве альфа-маски. JPEG-рисунок должен быть в формате baseline (frame 0), другие форматы — baseline optimized и progressive scan jpeg — не поддерживаются.

    Импортировать рисунки PNG напрямую нельзя, хотя можно использовать утилиту png2dbl для конвертирования в формат DBL («define bits lossless»).



    <?php $s = new SWFShape():
    $f = $s->addFill(new SWFBitmapC'p.dbl")):
    $s->drawLine(32. 0): Ss->drawLine(0. 32):
    $s->drawl_ine(-32. 0): $s->draw!_ine(0. -32):
    $m = new SWFMovie() :
    $m->setDimension(32. 32): $m->add(Ss);
    header('Content-type: application/x-Shockwave-flash'):
    $m->output(): ?>

    Пример с использованием альфа-маски:

    <?php $s = new SWFShape():
    // . msk файл генерирован утилитой gif2mask
    $f = $s->addFill(new SWFBitmapC'alphafill. jpg".
    "alphafill.msk")): $s->set.RightFill($f):
    $s->drawLine(640. 0): $s->drawLine
    (0. 480); $s->drawl_ine(-640. 0): $s->drawLine(0. -480):
    $c = new SWFShape(): $c->setRightFill($c->
    addFill(Ox99. 0x99. 0x99)): $c->drawUne(40, 0):
    $c->drawLine(0, 40): $c->drawLine(-40. 0);
    $c->drawLine(0. -40):
    $m = new SWFMovie() : $m->setDimension(640, 480):
    $m->setBackground(Oxcc. Oxcc. Oxcc);
    // нарисовать шахматный фон for($y=0;
    $y<480: $y+=40) { for($x-0; $x<640; $x+=80) {
    $i = $m->add($c); $1->moveTo($x. $y): }
    $y+=40; for($x=40: $x<640: $x+=80) {
    $i = $m->add($c); $i->moveTo($x, $y): }
    $m->add($s): header('Content-type:
    applтcation/x-shockwave-fl ash'): $m->output().?>

    SWFBitmap->getWidth

    Установка ширины рисунка в пикселах

    int swfbitmap->getwidth (void)

    См. также swfbitmap->getheight().

    SWFBitmap->getHeight

    Установка высоты рисунка в пикселах

    int swfbitmap->getheight (void)

    См. также swfbitmap->getwidth().

    SWFFill — объект Заполнитель

    С помощью этого объекта можно трансформировать (масштабировать, наклонять, вращать) рисунки и градиентные заливки, используемые как заполнители. Этот объект создается методом swfshape ->addfil1().

    SWFFill->moveTo

    Установка точки, от которой начинается заполнение

    void swffill->movetc (integer x, integer y)

    SWFFill->scaleTo

    Установка масштаба заполнителя

    void swffill->scaleto (integer kx, integer ky)

    SWFFill->rotateTo

    Установка угла поворота заполнителя



    void swffill->rotateto (double degrees)

    SWFFill->skewXTo

    Установка угла х-наклона заполнителя

    void swffill->skewxto (double x)

    Указывается коэффициент смещения основания вправо, то есть 1.0 означает искажение в 45 градусов. Возможны отрицательные значения для смещения основания влево.

    SWFFill->skewYTo

    Установка у-наклона заполнителя

    void swffill->skewyto (double у)

    Указывается смещение правой стороны вниз.

    SWFMorph — объект Превращение

    Объект представляет собой превращение одной фигуры в другую («shape tween»).

    В приведенном ниже примере большой красный квадрат, вращаясь, превращается в маленький синий.

    <?php $р = new SWFMorph().
    $s = $p->getShapel(): $s->setLine(0.0.0.0):
    $s->setLeftFill($s >addFill(Oxff. 0. 0)):
    $s->movePenTo(-1000.-1000). $s->drawl_-ine(2000.0);
    $s->drawl_ine(0.2000):
    $5->drawLine(-2000.0): $s->drawline(0.-2000),
    $s - $p->getShape2O;
    $s->setLine(60.0.200.0):
    $s->setLeftFill($s->addFilKO. 0. Oxff));
    $s->movePenTo(0.-1000):
    $s->drawLine(1000.1000):
    $s->drawLine(-1000.1000):
    $s >drawLine(-1000.-1000):
    $s->drawLine(1000.-1000):
    $m = new SWFMovie() .
    Sm->setDimension(3000.2000):
    $m->setBackground(Oxff. Oxff, Oxff);
    $1 - $m->add($p): $i->moveTo(1500.1000):
    for($r=0.0: $r<=1.0: $r+=0.1) {
    $v>setRatio(Sr): $m->nextFrame(): }
    header С Content-type: application/x-Shockwave-flash'):
    $m->output(): ?>

    SWFMorph->getshape1

    Установка начальной фигуры превращения

    Imixed swfmorph->getshapel (void)

    Возвращает объект swfshape().

    SWFMorph->getshape2

    Установка конечной фигуры превращения

    2mixed swfmorph->getshape2 (void)

    Возвращает объект swfshape().

    SWFText — объект текста

    <?php$f new SWFFontt"Techno fdb");
    $t - new SWFText(): $t->setFont($f):
    $t->moveTo(200. 2400). $t->setColor(Oxff. Oxff. 0):
    lt->setHenght(1200):
    $t->addString("PHP
    generates Flash with Ming!!");
    $m = new SWFMovie(); $m->setDimension
    (5400. 3bOO). I $m->add($t).
    headerСContent-type: application/x-shockwave-flash');
    $m->output(): ?>



    SWFText->setFont

    Установка текущего шрифта

    void swftext->setfont (font)

    SWFText->setHeight

    Установка высоты шрифта

    void swftext->setheight ( integer height) Значение но умолчанию — 240.

    SWFText->setSpacing

    Установка расстояния между символами

    void swftext->setspacing (double spacing)

    Значение по умолчанию — 1.0. Значение 0 указывает, что следующий символ будет выводиться непосредственно за последним. Вычисления не отличаются точностью.

    SWRext->setColor

    Установка цвета шрифта

    void swftext->setcolor (int red, int green, int blue [, int a]) Значение по умолчанию — черный.

    SWRext->moveTo

    Установка позиции вывода

    void swftext->moveto (integer x. integer y)

    SWFText->addString

    Рисование строки

    void swftext->addstring (string string)

    SWFText->getWidth

    Вычисление ширины строки

    double swftext->addstring (string string)

    Возвращает размер с учетом размеров шрифта, масштаба и т. п.

    SWFFont — Загрузка шрифта

    new swffont (string filename)

    В аргументе указывается имя FDB-файла или имя шрифта, поддер живаемого браузером. Формат FDB («font definition block») содер жит описание шрифта следующего вида: «SWF DefineFont2 block». Файл FDD можно получить из файлов-шаблонов «SWT Generator» с помощью утилиты makefdb библиотеки ming.

    Три специальных шрифта должны быть доступны всегда: _serif, _sans и _typewriter.

    <Php $f - newSWFFont("_sans"): ?>

    Дескриптор шрифта, возвращенный swffont(), используется как аргумент методов SWFText->setFont() и SWFTextField->setFont().

    swffont->getwidth

    Вычисление ширины строки

    int swffont->getwidth (string string)

    Метод подобен методу SWFText(), но используется значение масштаба по умолчанию.

    SWFTextField — объект текстового поля

    new swftextfield ([int flags])

    Текстовые ноля менее функциональны, нежели объекты swftext(): их нельзя вращать, непропорционально масштабировать, наклонять, но они могут использоваться для ввода в формах и использовать шрифты браузера.



    Поведение поля можно изменить, указав необязательные флаги; следующие значения можно комбинировать, используя битовый оператор ИЛИ:

  • SWFTEXTFIELD_NOEDIT — нередактируемое поле;


  • SWFTEXTFIELD_PASSWORD — скрывает вводимые данные;


  • SWFTEXTFIELD_DRAWBOX — чертит обрамление;


  • SWFTEXTFIELD_MULTILINE — многострЪчный режим;


  • SWFTEXTFIELD_WORDWRAP — позволяет автоматически разносить длинный текст на несколько строк;


  • SWFTEXTFIELD_NOSELECT — делает текст поля невыделяемым.


  • Например, следующая строка создает поле с нсвыделяемым и нередактируемым текстом:

    $t = newSWFTextField(SWFTEXTFIELD_NOSELECT
    SWFTEXTFIELO_NOEDIT).

    SWFTextField->setFont

    Установка шрифта поля

    void swftextfield->setfont (string font)

    SWFTextField->setbounds

    Установка ширины и высоты поля

    void swftextfield->setbounds (int width, int height)

    SWFTextField->align

    Установка выравнивания текста в поле

    void swftextfield->align (int alignement)

    Допустимые значения аргумента: SWFTEXTFIELD_ALIGN_LEFT, SWFTEXTFIELD_ ALIGN_RIGHT, SWFTEXTFIELD_ALIGN_CENTER и SWFTEXTFIELD_ALIGN_JUSTIFY.

    SWFTextField->setHeight

    Установка высоты шрифта текстового поля

    void swftextfield->setheight (int height)

    Значение по умолчанию — 240.

    SWFTextField->setLeftMargin

    Установка ширины левого отступа поля

    void swftextfield->setleftmargin (int width)

    Значение по умолчанию — 0.

    SWFTextField->setrightMargin

    Установка ширины правого отступа поля

    void swftextfield->setrightmargin (int width)

    Значение по умолчанию — 0.

    SWFTextField - >setM argi ns

    Установка ширины левого и правого отступов поля

    void swftextfield->setmargins (int left, int right)

    Это комбинация двух вышеописанных методов.

    SWFTextField->setindentation

    Установка ширины отступа первой строки

    void swftextfield->setindentation (int width)

    SWFTextField->setLineSpacing

    Установка межстрочного расстояния

    void swftextfield->set1inespacing (int height)

    Значение по умолчанию — 40.

    SWFTextField->setcolor



    Установка цвета поля

    void swftextfield->setcolor ( int red, int green, int blue [, int a])

    Значение по умолчанию — прозрачный.

    SWFTextField->setname

    Присвоение полю имени

    void swftextfield->setname (string name)

    Используется при отсылке данных формы и для выполнения действий.

    SWFTextField->addstring

    Добавление строки к тексту поля

    void swftextfield->addstring (string string)

    SWFSprite — создание клипа (sprite)

    Спрайт («movie clip») позволяет создавать анимации с собственной системой отсчета времени. Поэтому спрайты функционируют подобно основным анимациям.

    <?php $ь - new SWFShape();
    $s->setRngntFill($s->addFill(Oxff. 0. 0)):
    $s->movePenTo(-500.-500):
    $s->drawLineTo(500.-500):
    $s->drawLineTo(500.500):
    $s->drawLineTo(-500.500):
    $s->drawnneTo(-500.-500).
    $p = new SWFSpnte():
    $1 = $p->add($s):
    for($j-0;$j<8:$J++){
    $p->nextFrame().
    $1 >rotate(10):
    } $p-?nextFrame():
    $m = new SWFMovie().
    $, = $m >add($p):
    $i->moveTo(1500.1000): $setNameC'blah");
    $m->setDimension(3000.2000);
    header( 'Content-type, application/x-shockwave-flash'):
    $m->output(). ?>

    SWFSprite->add

    Добавление объекта к спрайту

    void swfsprite->add (resource object)

    Этот метод позволяет добавлять объекты swfshape(), swfbutton(), swftext(), swfaction(), swfsprite(). Метод возвращает дескриптор объекта в списке отображения.

    SWFSprite->remove

    Удаление объекта из спрайта

    void swfsprite->remove (resource object)

    Метод, обратный предыдущему.

    SWFSprite->setframes

    Установка общего числа кадров

    void swfsprite->setframes (integer numberofframes)

    SWFSprite->nextframe

    Переход к следующему кадру

    void swfsprite->nextframe (void)

    SWFbutton — объект Кнопка

    Приведенный ниже пример отслеживает события кнопки.

    <?php $f new SWFFont("_senf"):
    $p - new SWFSpnte(). function label(Sstring) { global $f:
    $t = new SWFTextField(). $t->setFont($f):
    $t->addStnng($stnng) $t->setHenght(200):
    $t->setBounds(3200.200): return $t: }
    function addLabel (Sstnng) { global $p.
    $1 = $p->add(label($stnng)):
    $p- nextFrame(): $p >remove($i). }
    $p->add(new SWFAction("stop():"))
    ; addLabelC'NO ACTION"):
    addLabel{' SWFBUTTON_MOUSEUP"):
    addLabeli"SWFBUTTONJdUSEDOWN"):
    addLabel ("SWFBUTTONJWUSEOVERLL).
    addLabel("SWFBUTTON_MOUSEOUT"):
    addLabel("SWFBUTTON_MOUSEUPOUTSIDE");
    addLabel("SWFBUTTON_DRAGOVER"):
    addLabel ("SWFBUnON_DRAGOUT"):
    function rect($r. $g. $b) { $s - new bWFShape():
    $s->setRightFill($s->addFill($r. $g. $b)):
    $s->draidine(600.0): $s->drawUne{0.600):
    $s-»drawLine(-600.0): $s->drawL"'ne(0.-600);
    return $s: } $b - new SWFButton():
    $b->addShape(rect(Oxff. 0. 0).
    SWFBUTTONJJP SWFBUTTONJHIT);
    $b->addShape(rect(0. Oxff. 0). SWFBUTTONJWER).
    №->addShape(rect(0. 0. Oxff). SWFBUTTON_DOWN);
    $b->addAction(new SWFAction
    ("setTarget( '/label'): goto^ramed):").
    SidFBUTTON_MOUSEUP):
    $b->addAction(new SWFAction
    ("setTarget( '/label'); gotoFrame(2).").
    SWFBUTTON_MOUS?DOkN):
    $b->addAction(new SWFAction
    ("setTarget( '/label'): gotoFrame()):").
    SWFBUnON_HOUSEOVER):
    $b->addAction(nen SWFActionC"setTarget('/label'):
    gotoFrame(4):").
    SWFBUnON_MOUSEOUT):
    $b->addAction(new SWFAction("setTarget('/label'):
    gotoFrame(S):").
    SWrBUTTON_MOUSLUPOUTSIOE):
    $b->addAction(new SKFActlonC'setTargett'/label'):
    gotoFrame(6):").
    SWF8UTTON_DRAGOVER):
    $b->addAction(new SWFAction
    ("setTarget('/label'/: gotoFrame(7):").
    SWFBUTTON_DRAGOUT);
    $m = new iWFMovie() : $m->setDimension(4000.3000);
    $1 - $m->add($p); $1 ->setName("label");
    $1->тоуеТо(400 1900):
    $1 = $m >add($b): $i->moveTo(400.900);
    header('Content-type applicatlon/x-shockwave-flash'):
    $m->output(). ?>



    Следующий пример позволяет перетаскивать кнопку по экрану.

    <?php $s = new SWFS^dpe'):
    $s->setRightFill($s->addFill(Oxff. 0. 0)).
    $s->drawLine(1000.0): $s->drawLine(0.1000);
    $s->drawLine(-1000.0): $s->drawLine(0.-1000):
    $b = new SWFButton():
    $b->addShape($s. SWFBUTTON_H1T
    SWFBUTTONJJP SWFBUTTON_OOWN
    SWFBUTTONJ3VER) -
    . $b->addAction(new SWFAction("startDrag('/test'. 0):")
    SWFBUTTON_MOUSEDOWN);
    // '0' указывает на неблокировку мыши
    $b->addAction(new SWFActionC'stopDragO;").
    SWFBUTTON_MOUSEUP
    SWFBUTTON_MOUSEUPOUTSIDE).
    $p - new SWFSpnte(): $p->add($b). $p->nextFrame():
    $m = new SWFMovie(): $1 = $m->add($p):
    $1 >setName('test'): $i->moveTo(1000.1000):
    header('Content - type: application/x-shockwave-flash'):
    $m->output(): ?>

    SWFbutton->addShape

    Назначение кнопке фигуры

    void swfbutton->addshape (resource shape, integer flags)

    Возможны флаги: SWFBUTTONJJP, SWFBUTTONJWER, SWFBUTTON_DOWN, SWFBUHON_ HIT. Кнопка SWFBUTTON_HIT не отображается, а определяет область, реагирующую на нажатия.

    SWFbutton->setUp

    Синоним addShape (shape, SWFBUTTON_UP)

    void

    swfbutton->setup (resource shape)

    См. также: swfbutton->addshape() и SWFAction().

    SWFbutton ->setOver

    Синоним addShape (shape, SWFBUTTON_OVER)

    void swfbutton->setover (resource shape)

    SWFbutton->setdown

    Синоним addShape (shape, SWFBUTTON_DOWN))

    void swfbutton->setdown (resource shape)

    SWFbutton->setHit

    Синоним addShape (shape, SWFBUTTON_HIT)

    void swfbutton->sethit (resource shape)

    SWFbutton->addAction

    Назначение кнопке действия

    void swfbutton->addaction (resource action, integer flags)

    Назначает обработчик событий кнопки (action — дескриптор объекта swfactionO) для следующих событий (flags): SWFBUTTON_MOUSEOVER, SWFBUTTON_MOUSEOUT, SUFBUTTON_MOUSEUP, SWFBuTTONJOUSEUPOuTSIDE, SWFBUTTON_ MOUSEDOWN, SWFBUnON_DRAGOUT и SWFBUTTON_DRAGOVER.

    SWFbutton->setAction

    Синоним addAction (shape, SWFBUTTON_MOUSEUP)

    void swfbutton->setaction (resource action)



    Назначает кнопке действие, выполняемое при нажатии.

    SWFAction — объект Действие

    Объект компилирует сценарий в действие.

    Синтаксис сценариев подобен упрощенному синтаксису С. SWF code machine не позволяет многих вещей, например, достаточно сложно реализовать вызовы пользовательских функций.

    Компилятор распознает следующие инструкции:

  • break;


  • for;


  • continue;


  • if;


  • el se;


  • do;


  • while.


  • Все данные не имеют типа; значения SWF-действий сохраняются как строки. Следующие функции могут использоваться в выражениях:

  • tirae() — возвращает число миллисекунд, прошедшее с начала проигрывания анимации;


  • randora(seed) — возвращает случайное число из диапазона (0-seed);


  • length(expr) — возвращает длину выражения;


  • int(number) — округление до ближайшего целого;


  • concat(expr, expr) — соединение строк;


  • ord(expr) — возвращает ASCII-код данного символа;


  • chr(num) — возвращает символ с указанным ASCII-кодом;


  • substr(stnng, location, length) — возвращает часть строки string длиной length, начиная с позиции location.


  • Также могут быть использованы дополнительные команды:

  • duplicateClipCclip, name, depth) — дублирует клип (sprite), присваивая ему имя name и располагая на уровне depth;


  • removed ip(expr) — удаляет именованный клип анимации;


  • trace(expr) — записывает сообщение в журнал отладки (пока команда бесполезна);


  • startDragCtarget. lock, [left, top, right, bottom]) — начать перетаскивание объекта target. Аргумент lock определяет, блокировать ли мышь: 0 (нет) или 1 (да). Можно указать область, в которой осуществляется перетаскивание;


  • stopDrag() — прекратить перетаскивание;


  • callFrame(expr) — вызвать именованный кадр как функцию;


  • getURUurl, target, [method]) — загрузить данный url в именованную область target (имя кадра или зарезервированное значение «_level()» для замены текущей анимации или «_levell» для загрузки анимации поверх текущей). В необязательном аргументе можно указать метод отсылки: POST или GET для отсылки серверу , данных;


  • loadMovieCurl, target) — подобие предыдущей команды;




  • nextFrame() — перейти к следующему кадру;


  • prevFrame() — перейти к предыдущему кадру;


  • play() — начать проигрывание анимации;


  • stop() — закончить проигрывание анимации;


  • toggleQuality() — переключиться между низким и высоким качеством;


  • stopSounds() — прекратить проигрывание звуков;


  • gotoFrame(num) — перейти к кадру с указанным номером (нумерация начинается с 0);


  • gotoFrame(name) — перейти к именованному кадру;


  • setTarget(expr) — установить контекст действия;


  • frameLoaded(num) — может использоваться в условных и циклических конструкциях для проверки того, был ли уже загружен кадр с указанным номером. Можно использовать альтернативное выражение /:framesLoaded.


  • Клипы и анимации имеют следующие свойства:

  • х;


  • у;


  • xScale — масштаб по горизонтали;


  • yScale — масштаб по вертикали;


  • currentFrame — текущий кадр (только для чтения);


  • total Frames — общее число кадров (только для чтения);


  • alpha — уровень прозрачности;


  • visible — видимость (l=on, 0=off);


  • width — (только для чтения);


  • height — (только для чтения);


  • rotation — угол поворота;


  • target — (только для чтения);


  • framesLoaded — (только для чтения);


  • name;


  • dropTarget — (только для чтения);


  • url — (только для чтения);


  • highQuality — качество (1=высокое, 0=низкое);


  • focusRect;


  • soundBufTime.


  • Например, установить значение позиции спрайта можно выражением Bох.х = 100;. Поскольку Flash сохраняет все компоненты анимации в древовидной структуре (наподобие файловой системы Unix), начальный слеш указывает на массив объектов верхнего уровня; если спрайт box находится внутри спрайта biff, то выражение записывается так: box/biff.x = 100;.

    Следующий пример перемещает красный квадрат по экрану.

    <?php $s = new SWFShape():
    $f = $s->addFill(Oxff. 0. 0);
    Js->setRightFill($f):
    $s->movePenTo(-500.-500):
    $s->dravvLineTo(500. -500);
    $s->drawLineTo(500.500):
    $5->drawLineTo(-500.500):
    $s->drawl_ineTo(-500.-500).
    $p = new SWFSprite(); $1 = $p->add'.Ss):
    $i->setDepth(l); $p->nextrrame().
    for($P=0: $n<5; ++$n) {
    $i->rotate(-15)- $p->nextFrame(). }
    $m = new SWFMovie(); $m->setBackground
    (Oxff. Oxff. Oxff): $m->setDimens->on(6000.4000).
    $- - $m->add($p). $1->
    <:etDepths.l). $i->movpTo(-600.2000):
    $1->setName("box"):
    Sm->add(new SUFActionC'/box x += 3;")):
    $m->nextFrame():
    $m->add(new SWFActionC" gotoFrame(()):
    play(): ")): $m->nextFrame().
    headert'Content-type: application/x-shockwave-flash'):
    Sm-'0utput(): ?>



    Приведенный ниже пример отслеживает перемещение мыши по экрану.

    <?php
    $m = new SWFMovie(): $ra->setRate(36.0);
    $m->setDimension(]200 800): $m->setBackgrouncK(), 0. 0):
    /* пустой спрайт для отслеживания х и у координат мыши */
    $i = $m->add(new SWFSpriteO): $1->setName('mouse');
    $m->add(new SWFActionC' startDrag('/mouse'. 1): ")):
    // antialiasing можно выключить для квадратов.
    $m->add(new SWFActionC' this quality = 0. ')):
    $r = new SWFMorph() :/* morphing box */ $s = $r->getShapel():
    $s->setLeftFill(Ss->addFill(Oxff. Oxff. Oxff)):
    $s->movePenTo(-40. -40). Ss->drawLine(80. 0).
    $s->drawLine(0. 80). $s->drawLine(-80. 0);
    $s->drawl_me(0. -80): $s = $r->getShape2():
    Ss->setLeftFill($s->addFill{OxOO. 0x00. 0x00)):
    $s->movePenTo(-l. -1). .
    $s->drawLine(2. 0): $s->drawLine(0. 2):
    $s->drawLine(-2. 0). $s->drawl_ine(0. -2).
    $box = new SWFSprite():
    $box->add(new SWFActionC' stop(): ")):
    $1 = $box->add($r) for($n=0; $n<-20: ++$n) {
    $1->setRatio($n/20).
    $box->nextFrame(): )
    /* споайт контейнер позволяет многократно
    использовать действие */
    Scell - new SWFSpnteO: $1 - $cell->add($box):
    $i->setNarne( 'box'):
    $cell->add(new SWFActionC'
    setTarget('box'):
    /* x - родительская координата, i.e. (..) x */
    dx = (/mouse x + randoni(6)-3 - . ,x)/5
    dy = (/mouse.у + random(6)-3 - .. y)/5:
    gotoFramednt(dx*dx + dy*dy)): ")):
    $cell->nextFrame():
    Scell->add(new SWFActionC' gotoFrame(O): playO; "));
    Scell->nextFrame():
    /* добавим ячейки в анимацию */ for($x-0: $x<12: ++$х)
    { for($y-0- $y<8: ++$у) { $i = $m->add($cell):
    $i->moveTo(100*$x+50. 100*$у+50): } }
    $in->nextrrane():
    $m->add(new SWFAcbon'" qotoFrame(l): playO. ")):
    heacter('Content-type, application/x shockwave-flash1):
    $m->output(): ?>

    Тот же сценарий, но с цветными шариками...

    <?рhр $т - new SWFMovie():
    $m->setDimension(11000. 8000):
    $m-->setBackground(OxOO. 0x00. 0x00):
    $m >add(new SWFActionC' this.quality = 0
    /frames.visible = 0: startDrag\'/mouse'. 1); ")):
    // mouse tracking sprite $t nev. SWFSpnte():
    $1 = $m->add($t): $1->setNdme('mouse'):
    $g = new SWFGradientO $g->addEntry
    (0. Oxff. Oxff. Oxff. Oxff). $g->addEntry
    (0.1. Oxff. Oxff. Oxft. Oxff)' $g->addEntry
    (0 5. Oxff. Oxff. Oxff. Ox5f): $g->addEntry
    (1.0. Oxff. Oxff. Oxff. 0).
    // gradient shape thing $ь - nev» SWFShape() .
    $f - $s->addFill
    ($g. SWFFILL_RADiAL_GRADIENT):
    $f->scaleTo(0.03): $s->setRightFni($f):
    $5->movePenTo(-600. -600): $s->
    drawLine(1200. 0): $s->drawLine
    (0. 1200): $s->drawLine(-1200. 0):
    $s->drawLine(0. -1200):
    // need to make this a sprite so we
    can multColor it $p = new SWFSprite():
    $p->add($s): $p->nextFrame();
    II put the shape in here, each frame
    a different color Sq = new SWFSprite() :
    $q->add(new SWFAction("gotoFrame(random
    (7)+l). stop():")): $1 = $q->add($p);
    $i->multColor(l.0. 1.0. 1.0): $q->nextFrame():
    $i->multColor(1.0. 0.5. 0.5): $q->nextFrame().
    $i->multColor(1.0. 0.75. 0.5): $q->nextFramef):
    $i->multColor(1.0. 1.0. 0.5): $q->nextFrame():
    $l->multColor(0.5. 1.0. 0.5): $q->nextFrame():
    $i->multColor(0.5. 0.5. 1.0): $q->nextFrame():
    $i->multfolor(1.0. 0.5. 1.0): $q->nextFrame().
    // finally, this one contains the action code
    $p = new SWFSpriteO: $1 = $p->add($q):
    $i->setNameOframes'): $p->add(new SWFAction()
    dx = (/:mousex-/:lastx)/3 + random(10)-5:
    dy = (/:mousey-/:lasty)/3: x = /.mousex:
    у = /:mousey; alpha = 100: ")):
    $p->nextFrame(); $p->add(new SWFActionC
    this.x = x: this у = у: this.alpha alpha:
    x += dx: у += dy: dy +- 3; alpha -= 8; ")):
    $p->nextFrame(). $p->add(new
    SWFActlonC'prevFrame(): play():")):
    $p->nextFrame(). Si = $m->add($p):
    $1 ->setName('frames'): $m->nextFrame().
    $m->add(new SWFActlonC1
    lastx - mousex: lasty = mousey:
    mousex - /mouse.x: mousey = /mouse.у: ++num:
    if(num == 11) num = 1: removedip('char' & num):
    duplicateClTp(/frames. 'char' & num. num): ")):
    $m->nextFrame():
    $m->add(new SWFActlonC'prevFrame(). play():")):
    headert'Content-type:
    application/x-shockwave-flash'): $m->output(): ?>



    Следующий пример отслеживает нажатия клавши. Необходимо, чтобы фокус окна был активен.

    <?php /* спрайт с буквой в каждом кадре */
    $р = new SWFSprite():
    $р->add(new SWFAction("stop():")):
    Schars - "abcdefghijklmnopqrstuvwxyz".
    "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    "1234567890!l3|$^"&*()_+-=/[]{} ::..<>?'-";
    $f = new SWFFont("_sans"):
    for($n-0: $nremove($i); $t =
    new SWFTextFieldO. $t->setFont($f).
    $t->setHeight(240): $t->setBounds(600.240):
    $t->align(SWFTEXTFIELD_ALIGN_CENTER):
    $t->addString($c):
    $т = $p->add($t); $p->labelFrame($c);
    $p->nextFrame(): )
    /* область нажатия для кнопки - кадр целиком */
    Ss = new SWFShape():
    is->setFillStyleO($s->addSolidFill(0. 0. 0. 0)).
    ;s->drawline(600. 0); :5->drawLine(0. 400).
    Ss->drawLine(-600. 0); Ss->drawLine(0. -400):
    /* кнопка проверяет нажатую клавишу и
    переходи к соответствующему кадру */
    5b = new SWFButton():
    Sb->addShape($s. SWFBUTTON_HIT):
    for($n=0; $naddAction(new SWFActionC'
    setTargeK'/char');gotoFrame('$c');").
    SWFBUTTON_KEYPRESS($c)):
    $n = new SWFMovie(); Sm->setDimension(600.400):
    S-. *= $m->add($p): Si->setName( 'char');
    $i->moveTo(0.80), Sra->add($b)
    heeder('Content-type: application/x-shockwave-flash'):
    Sa->output(). ?>

    PDF-документы

    PDF-функции позволяют PHP создавать PDF-файлы с помощью библиотеки PDF, созданной Томасом Мерзем (http://www.pdflib.com/ pdflib/index.html); также могут потребоваться библиотеки JPEG (ftp:// ftp.uu.net/graphics/jpeg/) и TIFF (http://www.libtiff.org/).

    С pdflib поставляется хорошая документация, описывающая возможности библиотеки. Имена функций и аргументы идентичны в библиотеке и РНР. Размеры и координаты измеряются в единицах Postscript (72 на дюйм), но это зависит от выбранного разрешения.

    Аналогом библиотеки является ClibPDF (см. ниже).

    Версии ниже 3.0 pdflib не поддерживаются в РНР 4. Для компиляции РНР с библиотекой pdflib используйте параметр — enable-shared-pdftib.



    <?php $fp = fopenC'test.pdf". "w"):
    $pdf = pdf_open($fp):
    pdf_set_info($pdf. "Author". "Uwe Steinmann").
    pdf_set_info($pdf. "Title". "Test for PHP PDFlib");
    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").
    pdf_set_font($pdf. "Times-Roman". 30. "host").
    pdf_set_value($pdf. "textrendenng". 1):
    pdf_show_xy($pdf. "Times Roman outlined". 50. 750);
    pdf_moveto($pdf. EO. 740); .
    pdf_hneto($pdf. 330. 740).
    pdf_stroke($pdf). pdf_end_page($pdf):
    pdf_close($pdf): fclose($fp):
    echo "<A HRFF=getpdf.php>finished</A>":
    <?php // сценарий getpdf.php.
    просто возвращает документ pdf '
    $fp = fopenC'test.pdf". "r")
    headert"Content-type: applncation/pdf").
    fpassthru(Sfp); fclose($fp): ?>

    Пример из комплекта pdflib создает документ, состоящий из страниц с изображением часов (каждая страница показывает текущее время создания):

    <?php $pdffilename = "clock.pdf": // имя файла
    Sradius = 200: // радиус циферблата
    Smargin =20: // поля страницы
    Spagecount =40; // число страниц
    $fp = fopen($pdffilename. "w"). $pdf = pdf_open($fp);
    while($pagecount-- > 0) {
    pdf_begin_page($pdf. 2 * (Sradius + Smargin).
    2 * (Sradius + Smargin)):
    pdf_set_parameter($pdf. "transition", "wipe"):
    pdf_set_value($pdf. "duration". 0.5).
    pdf_translate(Spdf. $radius + Smargin. Sradius + Smargin):
    pdf_save(Spdf): pdf_setrgbcolor($pdf. 0.0 0 0. 1.0):
    /* минутные метки */ pdf_cetlinewidth($pdf. 2 0):
    for (.«alpha - 0: Salpha < 360: Salpha += 6) {
    pdf_rotate($pdf. 6.0): pdf_moveto($pdf. Sradius. 0.0):
    pdf_lineto($pdf. Sradius-Smargin/3. 0.0):
    pdf_stroke(Spdf): } pdf_restore($pdf): pdf_save($pdf):
    /* 5 минутные метки */ pdf_setlinewidth($pdf. 3.0):
    for (Salpha - 0: Salpha < 360: Salpha += 30) {
    pdf_rotate($pdf. 30.0):
    pdf_moveto(Spdf. Sradius. 0.0):
    L pdf_11neto($pdf. $radius-$margin. 0.0).
    pdf_stroke(Spdf): $ltime = getdate():
    /* часовая стрелка */ pdf_save($pdf):
    pdf_rotate($pdf.-((SItime['minutes']/60.0)+
    ntfme['hours']-3.Q)*30.0): pdf_moveto
    ($pdf. -Sradius/10. -Sradius/20):
    pdf_lineto($pdf. $radius/2. 0.0):
    pdf_lineto($pdf. -Sradius/10. Sradius/20):
    pdf_closepath($pdf). pdf_fill($pdf): pdf_restore(Spdf):
    /* минутная стрелка */ pdf_save(Spdf):
    paf_rotate($pdf.(($ltime['seconds']/60 0)+
    SltimeC'rmnjtes'MS.): pdf_moveto
    ($pdf. -$radius.'10. -$radius/20); pdf_lineto
    ($pdf. Sradius * 0.8. 0 0): pdf_lineto(
    $pdf. -$radius/i(). $radius/20): pdf_closepath($pdf):
    pdf_fi)l($pdf); pdf_restore($pdf):
    /* секундная стрелка */
    pdf_setrgbcolor($pdf. 1.0. 0.0. 0.0);
    pdf_setlinewidth($pdf. 2): pdf_save($pdf):
    pdf_rotate($pdf. -((SltTmei'seconds'] - 15.0) *6.0)):
    pdf_moveto($pdf. -$radius/5. 0.0).
    pdf_lineto($pdf. Sradius. 0.0);
    pdf_stroke($odf); pdf_restore($pdf):
    /* центр */ pdf_circle($pdf. 0. 0. $radius/30):
    pdf_fnH$pdf): pdf_restore($pdf);
    pdf_end_page($pdf); } $pdf - pdf_close($pdf):
    fclose($fp): $fp = fopen($pdffilename. "r");
    header("Content - type: appli cati on/pdf");
    fpassthru($fp): fclose($fp): ?>



    pdf_set_info

    Заполнение поля информации документа

    void pdf set_info ( int pdf_document. string fieldname, string value)

    Возможные поля fieldname: «Subject», «Title», «Creator», «Author», «Keywords» и одно, определяемое пользователем. Функция должна вызываться до создания страниц.

    <?рhр $fd = fopent"test.pdf". "w"):
    Spdfdoc - pdf open($fd).
    pdf_set_1nfo($pdfdoc. "Author". "Имя автора");
    pdf_setjnfo($pdfdoc. "Creator". "Название создателя");
    pdf set info($pdfdoc. "Title", "Заголовок");
    pdf_set_mfo($pdfdoc. "Subject". "Тема");
    pdf_set_info($pdfdoc. "Keywords". "Ключевые, слова");
    pdf_set_info($pdfdoc. "CustomField".
    "Чего-то еще"); pdf_beg-in_page($pdfdoc. 595. 842);
    pdf_end_page($pdfdoc). pdf_close($pdfdoc); ?>

    Эта функция заменяет собой pdf_set_infoj<;e.ywords(), pdf_set_info_ title(), pdf_set_info_subject(), pdf_set_info_creator(), pdf_set_info_ sybject().

    pdf_open

    Открытие нового документа pdf 'int pdf_open (int file)

    Функция делает файл, открытый функцией fopen(), документом pdf. Если не указывать дескриптор файла, он создается в памяти и затем может выводиться на стандартный поток вывода или отсылаться браузеру. Функция возвращает дескриптор документа, который следует указывать в последующих pdf-функциях.

    См. также: fopen(), pdf_close().

    pdf_close

    Закрытие документа pdf

    void pdf_close (int pdf_document)

    См. также: pdf_open(), fclose().

    pdf begin_page

    Начало новой страницы

    void pdf_begin_page (int pdf_document, double width, double height)

    Аргументы height и width задают высоту и ширину страницы. После внесения на страницу информации ее следует закрыть функцией pdf_end_page().

    См. также pdf_end_page().

    pdf_end_page

    Завершение страницы

    void pdf_end_page (int pdf_docuraent)

    После этого модификация этой страницы невозможна.

    См. также pdf_begin_page().

    pdf_show

    Вывод текста в текущую позицию

    void pdf_show (int pdf_document, string text)



    Для вывода используются текущая позиция и текущий шрифт.

    См. также: pdf_show_xy(), pdf_show_boxed(), pdf_set_text_pos(), pdf_set_ font().

    pdf_show_boxed

    Вывод текста в прямоугольную область

    int pdf_show_boxed (int pdfjJocument, string text, double x, double y. double width, double height, string mode [, string feature])

    Левый нижний угол области вывода задается (х,у); высота и ширина — height, width. Аргумент mode определяет выравнивание текста: если высота и ширина равна нулю, то возможны значения: «left», «right» или «center», если они не равны нулю, то — «justify» или «full justify».

    Если аргумент feature содержит значение «blind», текст не отображается.

    Возвращает число символов, которые не поместились в указанный прямоугольник.

    См. также: pdf_show(), pdf_show_xy().

    pdf_show_xy

    Вывод текста в указанную позицию

    void pdf_show_xy (int pdf_doc, string text, double x, double y)

    См. также: pdf_show(), pdf_show_boxed().

    pdf_set_font

    Выбор шрифта, его размера и кодировки

    void pdf_set_font (int pdf_document, string fontjiame, double size, string encoding [, int embed])

    Аргумент вида кодировки encoding может принимать значения: «win-ansi» (по умолчанию), <-builtin», «host», «macroman» и т. п. Если для последнего аргумента задано значение 1, шрифт будет внедрен в документ pdf (иначе, нет). Если шрифт распространен, внедрять его не следует из-за увеличения размера документа.

    Функция должна вызываться после pdf_begin_page().

    pdf_ set_ leading

    Установка промежутка между строками текста void pdf_set_leading (int pdf_document, double distance) Используется при выводе текста функцией pdf_continue_text().

    См. также pdf continue text().

    pdf_set_parameter

    Установка строкового значения параметра pdflib

    void pdf_set_parameter (Int pdf_document, string name, string value)

    См. также: pdf_get_value(), pdf_set_value(), pdf_get_parameter().

    pdf_get_parameter

    Получение строкового значения параметра pdflib

    string pdf_get_parameter (int pdf_doc, string name [, double modifier])



    Аргумент modifier используется при необходимости.

    См. также: pdf_get_value(), pdf_set_value(), pdf_set_parameter().

    pdf_set_value

    Установка численного значения параметра pdflib

    void pdf_set_value (int pdf_document, string name, double value)

    См. также: pdf_get_value(), pdf_get_parameter(), pdf_set_parameter().

    pdf_get_value

    Получение численного значения параметра pdflib

    double pdf_get_value (int pdf_document, string name [, double modifier])

    Аргумент modifier используется при необходимости.

    См. также: pdf_set_value(), pdf_get_parameter(), pdf_set_parameter().

    pdf_set_text_rendering

    Установка метода вывода текста

    void pdf_set_text_rendering (int pdf_document, int mode)

    Устарела, используйте PDF_set_value().

    pdf_set_horiz_scaling

    Установка масштабирования текста по горизонтали

    void pdf_set_horiz_scaling (int pdf_document, double scale)

    pdf_set_text_rise

    Установка подъема текста

    void pdf_set_text_rise (int pdf_document, double rise)

    pdf_set_text_matrix

    Установка матрицы преобразования шрифта

    void pdf_set_text_matrix (Int pdf_document, array matrix)

    Начиная с версии pdflib 2.3 эта функция недоступна.

    pdf_set_text_pos

    Установка позиции текста

    void pdf_set_text_pos (int pdf_document, double x-coor, double y-coor)

    Устанавливает позицию вывода текста последующим вызовом pdf_ show().

    См. также: pdf_show(), pdf_show_xy().

    pdf_set_char_spacing

    Установка интервала между символами

    void pdf_set_char_spacing (int pdf_document, double space)

    Устарела, используйте PDF_set_value().

    См. также: pdf_set_word_spacing(), pdf_set_leading().

    pdf_set_word_spacing

    Установка интервала между символами

    void pdf_set_word_spacing (int pdf_document, double space)

    Устарела, используйте PDF_set_value().

    См. также: pdf_set_char_spacing(), pdf_set_leading().

    pdf_skew

    Поворот системы координат

    void pdf_skew (int pdf_document, double alpha, double beta) \

    Угол поворота в градусах указывается относительно осей alpha (x) и beta (у). Углы не могут принимать значения 90 или 270 градусов.



    pdf_continue_text

    Вывод текста со следующей строки

    void pdf_continue_text (int pdf_docuraent, string text)

    Расстояние между строками может быть установлено функцией pdf_set_leading().

    См. также: pdf_show_xy(), pdf_set_leading(), pdf_set_text_pos().

    pdf_stringwidth

    Вычисление ширины текста

    double pdf strnngwidth (int pdf document, string text)

    При вычислении длины строки используется текущий шрифт. Предварительно шрифт должен быть установлен с помощью pdf_set_font().

    См. также pdf_set_font().

    pdf_save

    Сохранение текущих установок

    void pdf_save (int pdf_document)

    Действует подобно команде postscript gsave. Полезна при необходимости масштабировать или развернуть объект, не воздействуя на другие объекты. pdf_save() требует, чтобы затем была вызвана функция pdf_restore().

    См. также pdf_restore().

    pdf_restore

    Восстановление ранее сохраненных установок

    void pdf_restore (int pdf_document)

    Восстанавливает установки, сохраненные pdf_save(). Действует подобно команде postscript grestore.

    <?php rdf_save($pdf):
    // всякие вращения и трансформации ...
    pdf_reitore($pdf) ?>

    См. также pdf_save().

    pdf_translate

    Установка начала системы координат

    j void pdf_translate (int pdf_document, double x, double y) Координаты указываются относительно текущей точки отсчета. Затем, до начала рисования объектов, требуется установить текущую точку.

    <?php pdf_moveto($pdf. 0. 0). pdf_lireto
    ($pdf. 100. 100). pdf_stn>ke($pd*):
    pdfJranslateOpdf. 100. 100): pdf_mweto($pdf. 0. 0);
    pdfjireto($pdf. 100. 100): pdf_stroke($pdf): ?>

    pdf_scale

    Установка масштабирования

    void pdf_scale (int pdf_document, double x_scale, double y_scale)

    <?pho pdf_scale($pdf. 72 0, 72.0).
    pdf_llneto($pdf. l. 1): // дюйм
    pdf_stroke($pdf). ?>

    pdf_rotate

    Установка угла вращения в градусах

    void pdf_rotate (int pdf_document, double angle)

    pdf_setflat

    Установка равномерности

    void pdf_setflat (int pdf_document, double value)

    Возможные значения параметра — от 0 до 100.

    pdf_setlinejoin



    Установка параметра linejoin

    void pdf_setlinejoin (int pdf_document. long value)

    Возможные значения параметра — от 0 до 2.

    pdf_setlinecap

    Установка параметра linecap

    void pdf_setlinecap (int pdf document, int value)

    Возможные значения параметра — от 0 до 2.

    pdf_setmiterlimit

    Установка параметра miter limit

    void pdf_setmiterlimit (int pdf_document. double value)

    Возможные значения параметра — 1 и более.

    pdf_setlinewidth

    Установка ширины строк

    void pdf_setlinewidth (int pdf_document. double width)

    pdf_setdash

    Установка вида штриховки

    void pdf_setdash ( int pdf_document. double white, double black)

    Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.

    pdf_moveto

    Установка текущей точки

    void pdfjnoveto (int pdf_document, double x, double y)

    pdf_curveto

    Черчение кривой

    void pdf_curveto (int pdf_document, double xl, double yl, double x2, double y2, double x3, double y3)

    Чертит кривую Безьс от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.

    См. также: pdfjnoveto(), pdf_lineto(), pdf_stroke().

    pdf_lineto

    Черчение отрезка

    void pdfjineto (int pdf_document, double x, double y)

    Чертит линию от текущей точки до указанной (х,у).

    См. также: pdf_moveto(), pdf_curveto(), pdf_stroke().

    pdf_circle

    Черчение окружности

    void pdf_circle (int pdf_document, double x, double y, double radius)

    См. также: pdf_arc(), pdf_stroke().

    pdf_arc

    Черчение дуги

    void pdf_arc (int pdf_document, double x, double y, double radius, double start, double end)

    Начальный и конечный угол задаются start и end.

    См. также: pdf_circle(), pdf_stroke().

    pdf_rect

    Черчение прямоугольника

    void pdf_rect (int pdf_document, double x, double y, double width, double height)

    Левый нижний угол задается (х,у); высота и ширина — height, width.

    См. также pdf_stroke().

    pdf_closepath

    Завершение текущего пути

    void pdf_closepath (int pdf_document)

    Чертит линию от текущей точки до точки, где начиналась первая линия. Многие функции, например pdfjnovetoO, pdf_circle(), pdf_rect(), начинают новый путь.



    pdf_stroke

    Заштриховка пути

    void pdf_stroke (int pdf_document)

    Текущий путь — это совокупность всех линий. Без этой функции линии начерчены не будут.

    См. также: pdf_closepath(), pdf_c1osepath_stroke().

    pdf_closepath_stroke

    Черчение и закрытие пути

    void pdf_closepath_stroke (int pdf_document)

    Это комбинация pdf_closepath() и pdf_stroke().

    См. также: pdf_closepath(), pdf_stroke().

    pdf_fill

    Заполнение пути цветом

    void pdf_fill (int pdf_document)

    См. также: pdf_closepath(), pdf_stroke(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fiTl (), pdf_setrgbcolor().

    pdf_fill_stroke

    Заполнение пути цветом и закрытие его

    void pdf_fill_stroke (int pdf_document)

    См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill(), pdf_setgray(), pdf_setrgbcolor_fill(), pdf_setrgbcolor().

    pdf_closepath_fill_stroke

    Черчение, закрашивание и закрытие пути

    void pdf_dosepath_fin_stroke (int pdfjjocument)

    См. также: pdf_closepath(), pdf_stroke(), pdf_fill(), pdf_setgray_fill()) pdf_setgray(), pdf_setrgbcolor_fiTI(), pdf_setrgbcolor().

    pdf_endpath

    Завершение пути без его закрытия void pdf_endpath (int pdf_document)

    См. также pdf_dosepath().

    pdf_clip

    Прикрепление всех линий к текущему пути

    void pdf_c!ip (int pdf_docuraent)

    pdf_setgray_fill

    Установка заполнения серым цветом

    void pdf_setgray_fill (int pdfjjocument, double gray_value)

    См. также pdf_setrgbcolor_fill ().

    pdf_setgray_stroke

    Установка штриховки серым цветом

    void pdf_setgray_stroke (int pdf_document, double gray_value)

    См. также pdf_setrgbcolor_stroke().

    pdf_setgray

    Установка заполнения и штриховки серым цветом

    void pdf_setgray (int pdf_document, double grayj/alue)

    См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().

    pdf_setrgbcolor_fill

    Установка заполнения цветом rgb

    void pdf_setrgbcolor_fill (int pdf_document, double red_value, double green_value, double blue_value)

    См. также pdf_setrgbcolor_fill().

    pdf_setrgbcolor_stroke

    Установка штриховки цветом rgb

    void pdf_setrgbcolor_stroke (int pdfjjocument, double red_value, double green_value, double blue_value)



    См. также pdf_setrgbcolor_stroke().

    pdf_setrgbcolor

    Установка заполнения и штриховки серым цветом rgb

    void pdf_setrgbcolor (int pdf_document, double red_value, double green_value, double blue_value)

    См. также: pdf_setrgbcolor_stroke(), pdf_setrgbcolor_fill().

    pdf_add_outline

    Добавление закладки для текущей страницы

    int pdf_add_outline (int pdf_ document, string text [, int parent [, int open]])

    Название закладки определяется аргументом text. Она становится дочерним объектом объекта parent и по умолчанию открыта (если аргумент open не равен 0). Возвращается идентификатор закладки, который может использоваться как родительский для других закладок.

    pdf_set_transition

    Установка режима перехода между страницами

    void pdf_set_transition (int pdf_document, int transition)

    Используйте функцию PDF_set_parameter() с параметром «transition».

    См. также pdf_set_duration().

    pdfset_duration

    Установка интервала между страницами

    void pdf_set_duration (int pdfjiocument, double duration)

    См. также pdf_set_transition().

    pdf_open_gif

    Открытие рисунка GIF

    int pdf_open_gif (int pdf_document, string filename)

    Используйте функцию pdf_open_image_file().

    <?php $im = pdf_open_gif($pdf. "test.gif"):
    pdf_place_image($pdf. $im. 100. 100. 1):
    pdf_close_image($pdf. Sim): ?> "

    pdfopen_png

    Открытие рисунка PNG

    int pdf_open_png (int pdf, string png_file)

    Используйте функцию pdf_open_image_file().

    pdf_openjpeg

    Открытие рисунка JPEG

    int pdf_ppen_jpeg (int pdf_document, string filename)

    Используйте функцию pdf_open_image_file().

    pdf_open_tiff

    Открытие рисунка TIFF

    int pdf_open_tiff (int PDF-document, string filename)

    Используйте функцию pdf_open_image_file().

    pdf_open_image_file

    Чтение рисунка из файла

    int pdf_open_image_file (int PDF_document, string format, string filename)

    Загружает рисунок формата format из файла filename и возвращает его идентификатор. Возможные форматы: PNG, TIFF, JPEG и GIF.

    <?php $pim = pdf_open_image_file
    ($pdf. "png". "picture.png");
    pdf place_image($pdf. $plm. 100, 100. 1):
    pdf_close_image($pdf. Spim); ?>



    Функция заменяет pdf_open_jpeg(), pdf_open_gif(), pdf_open_tiff(), pdf_ open_png().

    См. также: pdf_close_image(), pdf_execute_image(), pdf_place_image(), pdf_ put_image().

    pdf_open_memory_image

    Открытие рисунка, созданного графическими функциями PHP

    int pdf_open_memory_image (int pdfjJocument, int image)

    Функция принимает дескриптор рисунка, созданного PHP, и делает его доступным для документа pdf. Функция возвращает идентификатор рисунка pdf.

    <?php // Example: Including a memory image
    $im = ImageCreateClOO. 100);
    $col = ImageColorAllocate($im. 80. 45. 190);
    ImageFiimim. 10. 10, $col);
    $pim = pdf_open_memory_image($pdf. $im):
    ImageDestroy($im):
    pdf_place_image($pdf. $pim. 100. 100, 1);
    pdf_close_image($pdf. Spim): ?>

    См. также: pdf_clo.scjmage(), pdf_executejmage(), pdf_place_image(), pdf_ put_iraage().

    pdf_closejmage

    Закрытие рисунка

    void pdf_close_image (int image)

    Закрывает рисунок, открытый функциями pdf_open_ ().

    См. также: pdf_open_jpeg(), pdf_open_gif(), pdf_open_memory_image().

    pdf_get_image_height

    Установка высоты рисунка в пикселах

    string pdf_get_image_height (int pdf_document, int image)

    См. также: pdf_open_image_file(), pdf_open_memory_image(), pdf_get_image_ width().

    pdf_get_image_width

    Установка ширины рисунка в пикселах

    string pdf_get_image_width (int pdf_document. int image)

    См. также: pdf_open_itnage_file(), pdf_openjnemory_image(), pdf_get_image_ height().

    pdf_placejmage

    Размещение рисунка на странице

    void pdf_p!ace_image (int pdf_doc, int image, double x, double y, double scale)

    Позиция размещения задается (х,у); масштаб — scale.

    См. также pdf_put_image().

    pdf_put_image

    Сохранение рисунка в PDF для дальнейшего использования

    void pdf_put_inage (int pdf_document, int image)

    Внедряет рисунок в документ без его отображения. Затем рисунок может быть размещен на странице функцией pdf_execute_image() необходимое число раз. Полезно при многократной вставке рисунка (уменьшается размер файла).

    Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.



    См. также: pdf_place_image(), pdf_execute_image().

    pdf_execute_image

    Размещение сохраненного рисунка на странице

    void pdf_execute_image (int pdf_document, int image, double x, double y, double scale) :

    Отображает рисунок, внедренный функцией pdf_put_image().

    Начиная с версии 2.01 pdflib функция бесполезна и выводит только предупреждение.

    Example I. Multiple show of an image
    <?php
    Sim = ImageCreatedOO. 100);
    Scoll = ImageColorAllocate($im. 80. 45. 190);
    ImageFill($im. 10. 10. Scoll):
    $pim = pdf_open_memory_image($pdf. Sim);
    pdf_put_image($pdf. $pim);
    pdf_execute_image($pdf, $pim. 100. 100. 1);
    pdf_execute_image($pdf. $pim. 200. 200. 2); // 200 %
    pdf_close_image($pdf. $pim); ?>

    pdf__add_annotation

    Добавление примечания

    void pdf_add_annotation (int pdf_document, double llx. double lly, double urx. double ury, string title, string content)

    Примечание располагается в левом нижнем углу (Их, Пу), верхний правый угол (urx. ury).

    pdf_set_border_style

    Установка стиля обрамления примечаний и гиперссылок

    void pdf_set_border_style (int pdf_document. string style, double width)

    Аргумент style может принимать значения «solid» или «dashed». Ширина задастся аргументом width.

    См. также: pdf_set_border_color(). pdf_set_border_dash().

    pdf_set_border_color

    Установка цвета обрамления ссылок и примечаний

    void pdf_set_border_color (int pdf_document, double red, double green, double blue)

    Три компонента цвета могут принимать значения из диапазона от 0.0 до 1.0.

    См. также: pdf_set_border_style(), pdf_set_border_dash().

    pdf_set_border_dash

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

    void pdf_set_border_dash (int pdf_document. double black, double white)

    Устанавливает длину черных и белых полос прерывистых линий.

    См. также: pdf_set_border_style(), pdf_set_border_color().

    ClibPDF

    Библиотека ClibPDF позволяет PHP создавать документы PDF. Она не является полностью свободно распространяемой. Библиотека действует подобно pdflib, но создает документы меньшего размера с большей скоростью.



    При необходимости воспользуйтесь документацией, поставляемой с ClibPDF.

    Все функции, за исключением cpdf_open(), принимают в качестве своего первого аргумента дескриптор открытого документа.

    В настоящее время ClibPDF, в отличие от pdflib, не позволяет одновременно работать с несколькими документами. Но она способна создавать документы в памяти, не используя временный файл. Возможно также модифицировать любую страницу.

    <?php defineC'PPM". 2.83464566929):
    // пойнтов в миллиметре Scpdf = cpdf_open(0)
    cpdf_page_imt($cpdf. 1. 0. 595. 842. PPM);
    cpdf_add_outlт netScpdf. 0. 0. 0. 1. "Page 1"):
    cpdf_begin_text(Scpdf).
    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(Scpdf): cpdf_moveto(Scpdf. 50. 740).
    cpdf_11neto(Scpdf. 330. 740). cpdf_stroke(Scpdf):
    cpdf_final1ze($cpdf);
    Header("Content-type: application/pdf"):
    cpdf_output_buffer(Scpdf):
    cpdf_close(Scpdf); ?>

    Пример из комплекта pdflib можно использовать для сравнения двух библиотек.

    <?php Sradius - 200-
    Smargin - 20: Spagecount * 40.
    $pdf -= cpdf_open(0):
    cpdf_set_creator(Spdf. "pdf_clock.php3");
    cpdf_set_title(Spdf. "Analog Clock").
    while(Spagecount-- > 0) {
    cpdf_page_imt(Spdf. $pagecount+l. 0. 2 *
    (Sradius + Smargin). 2 * (Sradius * Smargin). 1.0).
    cpdf_set_page_ammation($pdf. 4. 0 5. 0. 0. 0); /* wipe */
    cpdf_translate
    (Spdf. Sradius + Smargin. Sradius + Smargin):
    cpdf_save(Spdf); cpdf_setrgbcolor(Spdf. 0.0. 0.0. 10):
    /* minute strokes */ cpdf_setl-mew1dth($pdf. 2.0):
    for ($alpha = 0: $alpha < 360: $alpha += 6) {
    pdf_rotate($pdf. 60). cpdf_moveto($pdf. Sradius. 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 (Salpha = 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); } Sltime -= getdatet):
    /* 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): cpdfjineto
    ($pdf. $radius/2. 0 0): cpdf_hneto
    ($pdf. -$radius/10. $radius/20): cpdf_closepath
    ($pdf): cpdf_filK$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. Sradius * 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_setlmewidth($pdf. 2): cpdf_save($pdf).
    cpdf_rotate($pdf. -((Sltimefseconds'] - 15.0) * 6.0)):
    cpdf_moveto($pdf. -$radius/5. 0.0): cpdf_lineto($pdf. Sradius. 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(Spdf); cpdf_finalize_page($pdf. $pagecount+l); }
    cpdf_finalize($pdf):
    cpdf_save_to_file($pdf."e:\\clock.pdf"); cpdf_close($pdf): ?>



    cpdf_global_set_document_limits

    Установка ограничения для всех документов

    void cpd8f_global_set_document_limits (int maxpages. int maxfonts, int maximages, int raaxannotations. int maxobjects)

    Функцию следует вызывать до cpdf_open().

    См. также cpdf_open().

    cpdf_set_creator

    Заполнение поля «создатель документа»

    void cpdf_set_creator (string creator)

    См. также: cpdf_set_subject(), cpdf_set_title(), cpdf_set_keywords().

    cpdf_set_title

    Заполнение поля «заголовок документа»

    void cpdf_set_title (string title)

    См. также: cpdf_set_subject(), cpdf_set_creator(), cpdf_set_keywords().

    cpdf_set_subject

    Заполнение поля «тема документа»

    void cpdf_set subject (string subject)

    См. также: cpdf_set_title(), cpdf_set_creator(), cpdf_set_keywords().

    cpdf_set_keywords

    Заполнение поля «ключевые слова документа»

    void cpdf_set_keywords (string keywords)

    См. также: cpdf_set_tit!e(), cpdf_set_creator(), cpdf_set_subject().

    cpdf_open

    Открытие нового документа

    int cpdf_open (int compression [, string filename])

    Первым аргументом можно указать необходимость сжатия документа (если он не равен 0). Если указывается второй аргумент, то документ будет создаваться в файле, а не в памяти. Имя файла «-» указывает на стандартный поток вывода (это пока не работает с Apache).

    Возвращаемый дескриптор используется всеми после/чующими функциями.

    См. также: cpdf_close(), cpdf_output_buffer(), cpdf_save_to_file().

    cpdf_close

    Закрытие документа pdf

    void cpdf_close (int pdfjJocument)

    Эту функцию следует вызывать последней, даже после cpdf_finalize(), cpdf_output_buffer() или cpdf_save_to_file().

    См. также cpdf_open().

    cpdf_page_init

    Начало новой страницы

    void cpdf_page_init (int pdf_document, int pagejiumber, int orientation, double height, double width [, double unit])

    Параметры новой страницы: page_number — ее номер, orientation — ориентация (0 — вертикальная, 1 — горизонтальная), высота height и ширина width; необязательный аргумент unit указывает разрешение в точках на дюйм (по умолчанию — 72).



    См. также cpdf_set_current_page().

    cpdf_finalize_page

    Завершение указанной страницы

    void cpdf_finalize_page ( int pdf_document, int page_number) После этого страница не может модифицироваться.

    См. также cpdf_page_init().

    cpdf_finalize

    Завершение документа

    void cpdf_fina!ize (int pdf_document)

    После этого необходимо вызвать cpdf_close().

    См. также cpdf_close().

    cpdf_output_buffer

    Вывод документа из буфера памяти

    void cpdf_output_buffer (int pdf_document)

    Выводит документ на стандартный поток вывода (отсылает браузеру). Для этого документ должен быть создан в памяти (а не в файле).

    См. также cpdf_open().

    cpdf_save_to_file

    Запись документа в файл

    void cpdf save_to_file (int pdf_document, string filename)

    Функция не требуется, если документ изначально создавался в файле.

    См. также: cpdf_output_buffer(), cpdf_open().

    cpdf_set_current_page

    Установка текущей страницы

    void cpdf_set_current_page (int pdf_document, int page number)

    Все последующие операции будут проводиться на данной странице. Между страницами можно переключаться до вызова cpdf_fina1ize_ page().

    См. также cpdf_finalize_page().

    cpdf_begin_text

    Начало текстового раздела

    void cpdf_begin_text (int pdf_document)

    Раздел должен быть завершен функцией cpdf_end_text().

    <?php cpdf_begi n_text($pdf);
    cpdf_set_font($pdf. 16. "Helvetica". "WinAnsiEncoding"):
    cpdf_text($pdf, 100. 100. "Some text"): cpdf_end_text($pdf) ?>

    См. также cpdf_end_text().

    cpdf_end_text

    Завершение текстового раздела

    void cpdf_end_text (int pdf_document) Завершает раздел, начатый cpdf_begin_text().

    См. также cpdf_begin_text().

    cpdf_show

    Вывод текста в текущую позицию

    void cpdf_show (int pdf_document, string text)

    См. также: cpdf_text(), cpdf_begin_text(), cpdf_end_text().

    cpdf_show_xy

    Вывод текста в указанную позицию

    void cpdf_show_xy (int pdfjjoc, string, text, double x, double у [, int mode])

    Аргументом mode можно указать используемое разрешение (если указывается 0, то используется разрешение по умолчанию).



    Функция идентична cpdf_text() без необязательных аргументов.

    См. также cpdf_text().

    cpdf_text

    Вывод текста с параметрами

    void cpdf_text ( int pdf_document, string text, double x, double у [, int mode [, double orientation [, int alignmode]]])

    Параметр orientation задает вращение строки в градусах, a alignmode — выравнивание текста.

    См. документацию ClibPdf относительно возможных значений.

    См. также cpdf_show_xy().

    cpdf_set_font

    Выбор текущего шрифта

    void cpdf_set_font (int pdf_doc, string font_name, double size, string encoding)

    Выбирает текущий шрифт, его размер и кодировку. В настоящее время поддерживаются только стандартные шрифты postscript. Кодировка может быть указана значениями «MacRomanEncoding», «Mac-ExpertEncoding», «WinAnsiEncoding» и «NULL» (использовать встроенную).

    См. также документацию ClibPDF.

    cpdf_set_leading

    Установка межстрочного расстояния

    void cpdf_set leading (int pdf_document, double distance) Используется при выводе текста функцией cpdf_continue_text().

    См. также cpdf_continue_text().

    cpdf_set_text_rendering

    Установка режима вывода текста

    void cpdf_set_text_rendering (int pdfjJocument, int mode)

    Возможные значения аргумента mode: 0 (текст с заполнением), 1 (контурный текст), 2 (заполненный контурный текст), 3 (невидимый), 4 (заполненный текст, прикрепленный к пути), 5 (контурный текст, прикрепленный к пути), 6 (заполненный контурный текст, прикрепленный к пути), 7 (текст, прикрепленный к пути).

    cpdf_set_horiz_scaling

    Установка горизонтального разрешения

    void cpdf_set_horiz_scaling (int pdfjJocument, double scale)

    cpdf_set_text_rise

    Установка подъема текста

    void cpdf_set_text_rise (int pdf_document, double value)

    cpdf_set_text_matrix

    Установка матрицы преобразования шрифта

    void cpdf_set_text_matrix (int pdfjJocument, array matrix)

    cpdf_set_text_pos

    Установка позиции текста

    void cpdf_set_text_pos (int pdfjJocument, double x, double у [, int mode])

    Устанавливает позицию вывода текста последующим вызовом cpdf_ show().



    Параметром mode можно указать разрешение.

    См. также: cpdf_show(), cpdf_text().

    cpdf_set_char_spacing

    Установка межсимвольного интервала

    void cpdf_set_char_spacing (int pdf_document, double space)

    См. также: cpdf_set_word_spacing(), cpdf_set_leading().

    cpdf_set_word_spacing

    Установка интервала между словами

    void cpdf_set_word_spacing (int pdf_document, double space)

    См. также: cpdf_set_char_spacing(), cpdf_set_leading().

    cpdf_continue_text

    Вывод текста со следующей строки

    void cpdf_continue_text (int pdf_document, string text)

    См. также: cpdf_show_xy(), cpdf_text(), cpdf_set_leading(), cpdf_set_text_ pos().

    cpdf_stringwidth

    Вычисление ширины строки с использованием текущего шрифта

    double cpdf_stringwidth (int pdf_document, string text)

    См. также cpdf_set_font().

    cpdf_save

    Сохранение текущих установок

    void cpdf_save (int pdfjjocument)

    См. также cpdf_restore().

    cpdf_restore

    Восстановление ранее сохраненных установок

    void cpdf restore (int pdf document)

    Восстанавливает установки, сохраненные cpdf_save().

    <?php cpdf_save($pdf);
    // всякие вращения и трансформации ...
    cpdf_restore($pdf) ?>

    См. также cpdf_save().

    cpdf_translate

    Установка начала системы координат

    void cpdf_translate (int pdf_doc. double x, double у [. int mode])

    cpdf_scale

    Установка масштабирования

    void cpdf_scale (int pdf_document, double x-scale, double-scale)

    cpdf_rotate

    Установка угла вращения в градусах

    void cpdfj-otate (int pdf_document, double angle)

    cpdf_setflat

    Установка равномерности

    void cpdf_setflat (int pdfjlocument. double value)

    Возможные значения параметра — от 0 до 100.

    cpdf_setlinejoin

    Установка параметра linejoin

    void cpdf_setlinejoin (int pdf_document, long value)

    Возможные значения параметра — от 0 до 2 (0 = miter, 1 = round, 2 = bevel).

    cpdf_setlinecap

    Установка параметра linecap

    void cpdf_setlinecap (int pdf_document, int value)

    Возможные значения параметра — от 0 до 2 (0 = butt end, I = round, 2 = projecting square).

    cpdf_setmiterlimit



    Установка параметра miter limit

    void cpdf_setmiterlimit (int pdf_document, double value)

    Возможные значения параметра — 1 и более.

    cpdf_setlinewidth

    Установка ширины строк

    void cpdf_setlinewidth (int pdf_document, double width)

    cpdf_setdash

    Установка вида штриховки

    void cpdf_setdash ( int pdf_document, double white, double black)

    Устанавливает размер белых и черных полос. Если оба аргумента равны 0, то линия будет непрерывной.

    cpdf_newpath

    Начало нового пути

    void cpdf_newpath (int pdfjjocument)

    cpdf_moveto

    Установка текущей точки

    void cpdfjraveto (int pdf_document, double x. double у [, int mode])

    cpdf_rmoveto

    Смещение текущей точки

    void cpdf_rmoveto (int pdf_doc, double x, double у [, int mode])

    См. также cpdf_moveto().

    cpdf_curveto

    Черчение кривой

    void cpdf_curveto (int pdf_document. double xl, double yl. double x2, double y2, double x3, double y3 [, int mode])

    Чертит кривую Безье от текущей точки до (хЗ.уЗ), используя точки (xl.yl) и (х2,у2) как ориентирующие.

    См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_rlineto(), cpdf_lineto().

    cpdf_lineto

    Черчение линии

    void cpdf_lineto (int pdf_document, double x, double у [, int mode])

    Чертит линию от текущей точки до указанной (х,у).

    См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().

    cpdf_rlineto

    Черчение отрезка

    void cpdf_rlineto (int pdf_document. double x, double у [, int mode]) Координаты (х,у) указываются относительно текущей точки.

    См. также: cpdf_moveto(), cpdf_rmoveto(), cpdf_curveto().

    cpdf_circle

    Черчение окружности

    void cpdf_circle (int pdf_document, double x, double y, double radius [, int mode])

    См. также cpdf_arc().

    cpdf_arc

    Черчение дуги

    void cpdf_arc (int pdf_document, double x-соог, double y-coor. double radius, double start, double end [, int mode])

    Начальный и конечный угол задаются start и end.

    См. также cpdf_circle().

    cpdf_rect

    Черчение прямоугольника

    void cpdf_rect (int pdf_document, double x, double y, double width, double height [, int mode])

    Левый нижний угол задается (х,у); высота и ширина — height, width.



    cpdf_closepath

    Завершение текущего пути

    void cpdf_closepath (int pdfjiocument)

    cpdf_stroke

    Заштриховывание пути

    void cpdf_stroke (int pdfjiocument)

    См. также: cpdf_closepath(), cpdf_closepath_stroke().

    cpdf_closepath_stroke

    Черчение и закрытие пути

    void cpdf_closepath_stroke (int pdf_document)

    Это комбинация cpdf_closepath() и cpdf_stroke().

    См. также: cpdf_closepath(), cpdf_stroke().

    cpdf_fill

    Заполнение пути текущим цветом

    void cpdfjfin (int pdf_document)

    См. также: cpdf closepath(), cpdf_stroke(), cpdf_setgray_fill(), cpdf_ setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

    cpdf_fill_ stroke

    Заполнение пути цветом и закрытие его

    void cpdf_fill_stroke (int pdf_document)

    См. также: cpdf_closepath(), cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

    cpdf_closepath_fill_stroke

    Черчение, закрашивание и закрытие пути

    void cpdf_closepath_fill_stroke (int pdf_document)

    См. также: cpdf_closepath(). cpdf_stroke(), cpdf_fill(), cpdf_setgray_ fill(), cpdf_setgray(), cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

    cpdf_clip

    Прикрепление всех линий к текущему пути

    void cpdf clip (int pdfjiocument)

    pdf_setgray_fill

    Установка заполнения серым цветом

    old cpdf_setgray_fill (int pdf_document, double value)

    См. также cpdf_setrgbcol or_fill ().

    pdf_setgray_stroke

    Установка штриховки серым цветом

    poid cpdf_setgray_stroke ( int pdf_document, double gray value)

    См. также cpdf_setrgbcolor_stroke().

    pdf_setgray

    Установка заполнения и штриховки серым цветом

    old cpdf_setgray (int pdf_document, double gray value)

    См. также: cpdf_setrgbcolor_stroke(), cpdf setrgbcolor fill().

    pdf_setrgbcolor_fill

    Установка заполнения цветом rgb

    oid cpdf_setrgbcolor_fill (int pdf_doc, double red, double green, double blue)

    См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor().

    pdf_setrgbcolor_stroke

    Установка штриховки цветом rgb

    oid cpdf_setrgbcolor_stroke (int pdf_document, double red value, double green value, double blue value)



    См. также: cpdf_setrgbcolor_fill(), cpdf_setrgbcolor().

    pdf_setrgbcolor

    Установка заполнения и штриховки серым цветом rgb

    oid cpdf_setrgbcolor (int pdf_document, double red_value, double green_value, double blue_value)

    См. также: cpdf_setrgbcolor_stroke(), cpdf_setrgbcolor_fill().

    pdf_add_outline

    Добавление закладки для текущей страницы

    oid cpdf_add_outline (int pdf_document, string text)

    Название закладки определяется аргументом text.

    ?php :pdf = cpdf_open(0).
    3dfj>agejmt($cpdf. 1. 0. 595. 842):
    3df_add_outline($cpdf. 0. 0. 0. 1. "Page 1"):
    // ... /' some drawing // ... cpdf_f i nalт ze($cpdf):
    Header("Content-type: application/pdf"):
    cpdf_output_buf*?er($cpdf):
    cpdf_close($cpdf). ?>

    cpdf_set_page_animation

    Установка режима перехода между страницами

    void cpdf_set_page_animation (int pdf_document, int transition. double duration)

    Аргумент transition определяет метод перехода, a duration — его длительность в секундах.

    cpdf_Import_jpeg

    Открытие рисунка JPEG

    int cpdfjmportjpeg (int pdf_doc. string filename, double x, double y. double angle, double width, double height. double x-scale, double y-scale [, int mode])

    Открывает рисунок из файла filename и размещает его в позиции (х,у) на текущей странице. Для рисунка можно указать угол поворота в градусах и масштабирование.

    См. также cpdf_placejnlinejmage().

    cpdf_place_inlinejmage

    Размещение сгенерированного рисунка на странице

    void cpdf_plасеJnlineJmage (int pdf_document, int image, double x, double y, double angle, double width, double height [, int mode])

    Внедряет рисунок, созданный графическими функциями PHP.

    См. также cpdfJmportJpeg().

    cpdf_add_annotation

    Добавление примечания

    void cpdf_add_annotation (int pdf_document, double Их, double lly, double urx, double ury. string title, string content [, int mode])

    Примечание располагается в левом нижнем углу (Их, Ну), верхний правый угол — (urx. ury).


    Содержание раздела