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).