PHP4手册:函数库及函数(四十) PDF 格式档案函式库 - 1


--------------------------------------------------------------------------------
PDF 格式档案函式库
--------------------------------------------------------------------------------
本函式库共有 65 个函式
PDF 是 Adobe 所发展的可携式文件格式,它的文件可以在网路上传输、浏览,甚至使用印表机印出,或使用其它输出装置输出,都可以保存原来的文字及图片的编排。详细的资讯可以参考 Adobe 的网站。参考其中有关 PDF 或 Acrobat 的部份。
在 UNIX 系统中,可以使用 Thomas Merz 开发的 PDF 函式馆。将它编译安装完成后,再编译 PHP 程式方可供 PHP 使用 pdflib。编译时可能要 JPEG library 及 TIFF library。
除了用这个函式库可以建立 PDF 档案外,FastIO 公司发展的产品 ClibPDF 也可以处理 PDF 档案。
以下为处理 PDF 档案的范例,本例对 test.pdf 加工后等待使用者读取。
$fp = fopen("test.pdf", "w");
$pdf = PDF_open($fp);
pdf_set_info_author($pdf, "Uwe Steinmann");
PDF_set_info_title($pdf, "Test for PHP wrapper of PDFlib 2.0");
PDF_set_info_author($pdf, "Name of Author");
pdf_set_info_creator($pdf, "See Author");
pdf_set_info_subject($pdf, "Testing");
PDF_begin_page($pdf, 595, 842);
PDF_add_outline($pdf, "Page 1");
pdf_set_font($pdf, "Times-Roman", 30, 4);
pdf_set_text_rendering($pdf, 1);
PDF_show_xy($pdf, "Times Roman outlined", 50, 750);
pdf_moveto($pdf, 50, 740);
pdf_lineto($pdf, 330, 740);
pdf_stroke($pdf);
PDF_end_page($pdf);
PDF_close($pdf);
fclose($fp);
echo "finished";
?>
上例中的 gettest.php3 可能像下面的样子
$fp = fopen("test.pdf", "r");
header("Content-type: application/pdf");
fpassthru($fp);
fclose($fp);
?>
PDF_get_info: 传回档案资讯。
PDF_set_info_creator: 设定建档者字串。
PDF_set_info_title: 设定档案标题。
PDF_set_info_subject: 设定档案主题。
PDF_set_info_keywords: 设定档案的关键字。
PDF_set_info_author: 设定档案作者。
PDF_open: 建立新的 PDF 档。
PDF_close: 关闭 PDF 档。
PDF_begin_page: 启始 PDF 档案页面。
PDF_end_page: 关闭 PDF 档案页面。
PDF_show: 输出字串到 PDF 档案。
PDF_show_xy: 输出字串到指定坐标。
PDF_set_font: 设定使用的字型及大小。
PDF_set_leading: 设定行距。
PDF_set_text_rendering: 设定文字表现方式。
PDF_set_horiz_scaling: 设定文字水平间距。
PDF_set_text_rise: 设定文字高度。
PDF_set_text_matrix: 设定文字矩阵。
PDF_set_text_pos: 设定文字位置。
PDF_set_char_spacing: 设定字元间距。
PDF_set_word_spacing: 设定字间距。
PDF_continue_text: 输出文字。
PDF_stringwidth: 计算字串的宽度。
PDF_save: 储存环境变数。
PDF_restore: 还原环境变数。
PDF_translate: 移动原点。
PDF_scale: 缩放物件。
PDF_rotate: 旋转物件。
PDF_setflat: 设定平滑值。
PDF_setlinejoin: 设定连线参数。
PDF_setlinecap: 设定 linecap 参数。
PDF_setmiterlimit: 设定斜边界限。
PDF_setlinewidth: 设定线宽。
PDF_setdash: 设定虚线样式。
PDF_moveto: 设定处理的坐标点。
PDF_curveto: 绘贝氏曲线。
PDF_lineto: 绘直线。
PDF_circle: 绘圆。
PDF_arc: 绘弧。
PDF_rect: 绘长方形。
PDF_closepath: 形成封闭的向量形状。
PDF_stroke: 沿向量绘线。
PDF_closepath_stroke: 形成封闭的向量形状并沿向量绘线。
PDF_fill: 填满目前的向量。
PDF_fill_stroke: 填满目前的向量并沿向量绘线。
PDF_closepath_fill_stroke: 形成封闭的向量形状沿向量绘线并填满。
PDF_endpath: 关闭目前向量。
PDF_clip: 组合所有向量。
PDF_setgray_fill: 指定填入的颜色为灰阶。
PDF_setgray_stroke: 指定绘图的颜色为灰阶。
PDF_setgray: 指定绘图的颜色为灰阶并填入。
PDF_setrgbcolor_fill: 指定填入的颜色为彩色。
PDF_setrgbcolor_stroke: 指定绘图的颜色为彩色。
PDF_setrgbcolor: 指定绘图的颜色为彩色并填入。
PDF_add_outline: 目前页面加入书签。
PDF_set_transition: 设定页的转换。
PDF_set_duration: 设定二页的切换时间。
PDF_open_gif: 开启 GIF 图档。
PDF_open_memory_image: 开启记忆体图档。
PDF_open_jpeg: 开启 JPEG 图档。
PDF_close_image: 关闭图档。
PDF_place_image: 放置图片到 PDF 档指定位置。
PDF_put_image: 放置图片到 PDF 档。
PDF_execute_image: 放置 PDF 档中图片到指定位置。
PDF_add_annotation: 加入注解。
--------------------------------------------------------------------------------
函式:PDF_get_info()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_get_info
传回档案资讯。
语法: int pdf_get_info();
传回值: 整数
函式种类: 特殊档案格式
内容说明
本函式用来取得 PDF 的档案资讯,例如作者、主题....等等。需要 pdflib 2.0 以上才能使用本函式的功能。
参考
PDF_set_info_creator() PDF_set_info_author() PDF_set_info_keywords() PDF_set_info_title() PDF_set_info_subject()
--------------------------------------------------------------------------------
函式:PDF_set_info_creator()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_info_creator
设定建档者字串。
语法: void pdf_set_info_creator(int info, string creator);
传回值: 无
函式种类: 特殊档案格式
内容说明
本函式用来设定 PDF 的建立档案者资讯。参数 info 为 PDF 档案资讯代码,供 PDF_open() 所使用的代码。参数 creator 为建档者名称。需要 pdflib 2.0 以上才能使用本函式的功能。
--------------------------------------------------------------------------------
函式:PDF_set_info_title()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_info_title
设定档案标题。
语法: void pdf_set_info_title(int info, string title);
传回值: 无
函式种类: 特殊档案格式
内容说明
本函式用来设定 PDF 的档案标题 (title)。参数 info 为 PDF 档案资讯代码,供 PDF_open() 所使用的代码。参数 title 为欲设定的档案标头字串。需要 pdflib 2.0 以上才能使用本函式的功能。
--------------------------------------------------------------------------------
函式:PDF_set_info_subject()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_info_subject
设定档案主题。
语法: void pdf_set_info_subject(int info, string subject);
传回值: 无
函式种类: 特殊档案格式
内容说明
本函式用来设定 PDF 的档案主题 (subject)。参数 info 为 PDF 档案资讯代码,供 PDF_open() 所使用的代码。参数 subject 为欲设定的档案主题字串。需要 pdflib 2.0 以上才能使用本函式的功能。
--------------------------------------------------------------------------------
函式:PDF_set_info_keywords()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_info_keywords
设定档案的关键字。
语法: void pdf_set_info_keywords(int info, string keywords);
传回值: 无
函式种类: 特殊档案格式
内容说明
本函式用来设定 PDF 档案的关键字 (keyword)。参数 info 为 PDF 档案资讯代码,供 PDF_open() 所使用的代码。参数 keywords 为欲设定的档案关键字字串。需要 pdflib 2.0 以上才能使用本函式的功能。
--------------------------------------------------------------------------------
函式:PDF_set_info_author()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_info_author
设定档案作者。
语法: void pdf_set_info_author(int info, string author);
传回值: 无
函式种类: 特殊档案格式
内容说明
本函式用来设定 PDF 档案的作者。参数 info 为 PDF 档案资讯代码,供 PDF_open() 所使用的代码。参数 author 为欲设定的档案作者名字。需要 pdflib 2.0 以上才能使用本函式的功能。
--------------------------------------------------------------------------------
函式:PDF_open()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_open
建立新的 PDF 档。
语法: int pdf_open(int file, int info);
传回值: 整数
函式种类: 特殊档案格式
内容说明
本函式用来开启新的 PDF 档案,意即建立新的 PDF 档。参数 file 为使用 fopen() 所开档的档案代码。参数 info 为 PDF_get_info() 产生的 PDF 档案资讯代码。成功则传回 PDF 档案代码。
--------------------------------------------------------------------------------
函式:PDF_close()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_close
关闭 PDF 档。
语法: boolean pdf_close(int pdfid);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来关闭 PDF 档案。参数 pdfid 为 PDF 档案代码。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_begin_page()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_begin_page
启始 PDF 档案页面。
语法: boolean pdf_begin_page(int pdfid, double height, double width);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来启始 PDF 档案页面,并设定页面大小。参数 pdfid 为 PDF 档案代码。参数 height 与 width 为浮点数形态的数字,分别为 PDF 页面的高度和宽度。成功则传回 true 值。
参考
PDF_end_page()
--------------------------------------------------------------------------------
函式:PDF_end_page()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_end_page
关闭 PDF 档案页面。
语法: boolean pdf_end_page(int pdfid);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来关闭 PDF 档案页面,并设定页面大小。参数 pdfid 为 PDF 档案代码。成功则传回 true 值。
参考
PDF_begin_page()
--------------------------------------------------------------------------------
函式:PDF_show()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_show
输出字串到 PDF 档案。
语法: boolean pdf_show(int pdfid, string text);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来送出文字字串到 PDF 档案中。参数 pdfid 为 PDF 档案代码。参数 text 为欲加入的字串。成功则传回 true 值。
参考
PDF_show_xy() PDF_set_text_pos() PDF_set_font()
--------------------------------------------------------------------------------
函式:PDF_show_xy()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_show_xy
输出字串到指定坐标。
语法: boolean pdf_show_xy(int pdfid, string text, double x-koor, double y-koor);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来送出文字字串到 PDF 档案中的指定坐标上。参数 pdfid 为 PDF 档案代码。参数 text 为欲加入的字串。参数 x-koor 及 y-koor 分别为 X, Y 二点坐标,为浮点数型态。成功则传回 true 值。
参考
PDF_show() PDF_set_text_pos() PDF_set_font()
--------------------------------------------------------------------------------
函式:PDF_set_font()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_font
设定使用的字型及大小。
语法: boolean pdf_set_font(int pdfid, string fontname, double size, int encoding);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定指定的字型及字型大小,供程式有关字串输出使用。参数 pdfid 为 PDF 档案代码。参数 fontname 为字型名称。参数 size 为字型大小。参数 encoding 的内定值为 4,其数字如下 0 表 builtin、1 为 pdfdoc、2 为 macroman、3 表 macexpert 与 4 为 winansi。成功则传回 true 值。本函式需要 pdflib 2.0 以上方可支援。
--------------------------------------------------------------------------------
函式:PDF_set_leading()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_leading
设定行距。
语法: boolean pdf_set_leading(int pdfid, double distance);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定输出文字间的行距。参数 pdfid 为 PDF 档案代码。参数 distance 为欲设定的行距值,为浮点数。使用本函式后会影响到 PDF_continue_text() 所输出的字串。执行成功则传回 true 值。
参考
PDF_continue_text()
--------------------------------------------------------------------------------
函式:PDF_set_text_rendering()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_text_rendering
设定文字表现方式。
语法: boolean pdf_set_text_rendering(int pdfid, int mode);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定输出文字间的表现方法。参数 pdfid 为 PDF 档案代码。参数 mode 为 render 的方式,值如下表
数值 方式
0 实心文字
1 空心文字
2 填满及空心文字
3 透明文字
4 实心文字并裁切向量
5 空心文字并裁切向量
6 填满及空心文字并裁切向量
7 裁切向量
执行成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_set_horiz_scaling()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_horiz_scaling
设定文字水平间距。
语法: boolean pdf_set_horiz_scaling(int pdfid, double scale);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定文字的水平间距。参数 pdfid 为 PDF 档案代码。参数 scale 为欲设定的间距值,为浮点数。
--------------------------------------------------------------------------------
函式:PDF_set_text_rise()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_text_rise
设定文字高度。
语法: boolean pdf_set_text_rise(int pdfid, double value);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定文字的高度。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的高度,为浮点数。
--------------------------------------------------------------------------------
函式:PDF_set_text_matrix()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_text_matrix
设定文字矩阵。
语法: boolean pdf_set_text_matrix(int pdfid, array matrix);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定文字的矩阵。参数 pdfid 为 PDF 档案代码。参数 matrix 为阵列,最多可有六个元素。
--------------------------------------------------------------------------------
函式:PDF_set_text_pos()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_text_pos
设定文字位置。
语法: boolean pdf_set_text_pos(int pdfid, double x-koor, double y-koor);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定文字的显示位置。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数,分别为 X、Y 的座标。在使用本函式后的 PDF_show() 会受到影响。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_set_char_spacing()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_char_spacing
设定字元间距。
语法: boolean pdf_set_char_spacing(int pdfid, double space);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定字元 (char) 的间距。参数 pdfid 为 PDF 档案代码。参数 space 为浮点数,为欲设定的距离。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_set_word_spacing()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_set_word_spacing
设定字间距。
语法: boolean pdf_set_word_spacing(int pdfid, double space);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定字 (word) 的间距。参数 pdfid 为 PDF 档案代码。参数 space 为浮点数,为欲设定的距离。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_continue_text()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_continue_text
输出文字。
语法: boolean pdf_continue_text(int pdfid, string text);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式输出文字到下一行。参数 pdfid 为 PDF 档案代码。参数 text 为欲输出显示的文字。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_stringwidth()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_stringwidth
计算字串的宽度。
语法: double pdf_stringwidth(int pdfid, string text);
传回值: 浮点数
函式种类: 特殊档案格式
内容说明
本函式用来计算指定字串的宽度。参数 pdfid 为 PDF 档案代码。参数 text 为欲计算的文字。成功则传回 true 值。
--------------------------------------------------------------------------------
函式:PDF_save()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_save
储存环境变数。
语法: boolean pdf_save(int pdfid);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来储存目前的环境变数,有点像是 postscript 语法中的 gsave 指令,当平移或旋转某一物件又不要影响别的物件时,本函式就很有用了。参数 pdfid 为 PDF 档案代码。本函式通常配合 PDF_restore() 使用。
参考
PDF_restore()
--------------------------------------------------------------------------------
函式:PDF_restore()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_restore
还原环境变数。
语法: boolean pdf_restore(int pdfid);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来还原之前储存的环境变数,有点像是 postscript 语法中的 grestore 指令,当平移或旋转某一物件又不要影响别的物件时,本函式就很有用了。参数 pdfid 为 PDF 档案代码。
使用范例
以下为部份的例子
PDF_save($pdf);
// 在这儿旋转物件....等等。
PDF_restore($pdf);
?>
参考
PDF_save()
--------------------------------------------------------------------------------
函式:PDF_translate()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_translate
移动原点。
语法: boolean pdf_translate(int pdfid, double x-koor, double y-koor);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来移动原点。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数,分别为 X、Y 的移动距离。
使用范例
下例先从 (0,0) 画条线到 (100, 100),再将原点向 X、Y 移动 (100, 100), 再画条 (0, 0) 至 (100, 100) 的线,形成 (-100, -100) 到 (100, 100) 的线。程式的前后省略。
PDF_moveto($pdf, 0, 0);
PDF_lineto($pdf, 100, 100);
PDF_stroke($pdf);
PDF_translate($pdf, 100, 100);
PDF_moveto($pdf, 0, 0);
PDF_lineto($pdf, 100, 100);
PDF_stroke($pdf);
?>
--------------------------------------------------------------------------------
函式:PDF_scale()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_scale
缩放物件。
语法: boolean PDF_scale(int pdfid, double x-koor, double y-koor);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来将物件放大或缩小。参数 pdfid 为 PDF 档案代码。参数 x-koor 与 y-koor 均为浮点数,分别为 X、Y 的缩放比例。
使用范例
下例先设定 X, Y 均放大 72 倍,再从 (0,0) 画条线到 (1, 1),形成了 (0, 0) 到 (72, 72) 的线。
PDF_scale($pdf, 72.0, 72.0);
PDF_lineto($pdf, 1, 1);
PDF_stroke($pdf);
?>
--------------------------------------------------------------------------------
函式:PDF_rotate()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_rotate
旋转物件。
语法: boolean pdf_rotate(int pdfid, double angle);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来将物件旋转。参数 pdfid 为 PDF 档案代码。参数 angle 为旋转角度。
--------------------------------------------------------------------------------
函式:PDF_setflat()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_setflat
设定平滑值。
语法: boolean pdf_setflat(int pdfid, double value);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定平滑值。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的平滑值,范围为 0 至 100。
--------------------------------------------------------------------------------
函式:PDF_setlinejoin()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_setlinejoin
设定连线参数。
语法: boolean pdf_setlinejoin(int pdfid, int value);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定连线 (linejoin) 参数。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的值,范围为 0 至 2。
--------------------------------------------------------------------------------
函式:PDF_setlinecap()
--------------------------------------------------------------------------------
PDF 格式档案函式库
PDF_setlinecap
设定 linecap 参数。
语法: boolean pdf_setlinecap(int pdfid, int value);
传回值: 布林值
函式种类: 特殊档案格式
内容说明
本函式用来设定 linecap 参数。参数 pdfid 为 PDF 档案代码。参数 value 为欲设定的值,范围为 0 至 2。