Информационные технологииStfw.Ru 🔍

ClibPDF

Графика, Flash, pdf
🕛 01.11.2006, 15:31
Библиотека 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).

Учебник по основам PHP   Теги:

Читать IT-новости в Telegram
Информационные технологии
Мы в соцсетях ✉