仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1548|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页编程之PHP的FDF文档撑持

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:04:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
刚开始觉得自己对这些多少有些基础,很简单,但是看了老师那么熟练的进行网页布局的时候,突然之间发现,其实,我的基础并没有自己想像的那么好,自己设计的页面其实并不好看,就连表格的边框为1像素都不会弄。   译注:(保存)  
作PHP已有一年多了吧,从3.0到4.0,不克不及说有多高(我如今也只是大菜鸟,比起何、Hunte,差多了,固然还有其余高手),但也有些经历。从PHP的炽热  到如今的僻静, 一路看的多了,听的也多了,见过的"高手"(会写留言板,聊天室甚么的)也多,静上去一想:PHP只是一种言语。它自有  它存在的需要。国际的web开辟也只逗留在低程度的条理,想现在国内在鼎力开展asp组件时咱们却只会用asp,PHP也一样。不外要感激  php,它让我失掉了生平的第二份任务(第一份是asp的,现在狠学c/c++,怎样也没想到吧),固然也经由过程它熟悉了很多伴侣,Hunte,陈老板,一蛇,  何志强(固然至今没有联系,但他的文章让我受害非),sony,macro,cfr... 为了生计,为了未来的开展,小生将分开PHP界,固然不肯,  但也无法,将拖了好久的一篇文章译出来作为最初的礼品献给人人,献给一切利用PHP&mysql的伴侣。假如有进修VC和驱动开辟的伴侣可以和  
我联系,让咱们一同来切磋。  
---------------------------------------------------------------  


念头  

WWW上的交互意味着填表、点击submit按钮,然后失掉一个肯定的了局。Html和Http供应一个机制来经由过程表单很轻易地履行这类操作。  PHP用一种十分便当的办法来撑持这类机制,每一个输出域(译注:表单的输出框)的值被存贮为一个与输出域同名的PHP变量。  

一个很类似的机制已被adobe开辟着,然而是为PDF文档。他们复杂地叫它Acrobat 表单。 从用户的概念来看,Html表单和Acrobat表  单独一的分歧是它们的外不雅。前者利用HTML文档,后者利用PDF文档来出现表单。  

要开辟WEB界面,Acrobat表单也能够象HTML表单一样被处置,假如这个表单象HTML表单一样供应输出数据。但是,Adobe 已为表双数  据提出一个新的格局叫FDF(表双数据格局)。PHP已包括这类格局的撑持。  

用数据生成一个PDF文档的能够性,如定制它,是Acrobat 表单的附加特征了.用PDF文档作为表单而且在PHP顶用数据生成PDF文档将在 这篇文章中被描写。你会发明这两个例了是何等的轻易。  

在你入手下手试这篇文章中的在线例子之前你要装置Acrobat浏览器插件或利用Acrobat 4.假如你想在本人的web办事器上测试php剧本你也要装置PDF东西包并使PHP中的FDF撑持失效。  

最初,假如你开辟你本人的PDF表单你需求Acrobat Exchange 3.x或Acrobat 4。  

在曩昔的几年中,Adobe已开辟出可便携文档格局(PDF)而且扩大了它。一种扩大是答应用户输出数据并送到办事器中处置的Acrobat  表单,就象HTML表单。  
如许的PDF文档与静态的PDF文档很类似,但当你用Acrobat浏览器看它时,你会发明可编纂的区域。  就象HTML中一样有良多输出域无效,例如 提交和重置按钮,文本输出域,反省框等等.. 创立如许一个PDF表单需求Acrobat Exchange 3.x或新的Acrobat 4软件,不幸的是它们只能在windows和MacOS中运转。
二者都供应一个体例来放置分歧的输出域到一个已存在的PDF文档中。  
提交按钮传送在它被按下时挪用的URL属性。这十分象HTML,但分歧的是在数据被传送到办事器时的格局。  
在按下Submit按钮时,数据是用一个在URL中可以被察看切实其实定格局从HTML表单传输。Acrobat表单撑持这类格局,还有FDF(表双数据格局)  FDP是一种新格局,需求FDF东西包(以后版本4.0)注释。假如PHP在编译时加了FDF撑持,它就可以解析FDF数据而且用名字存取任何输出域。  FDF数据普通被存在PHP的HTTP_RAW_POST_DATA变量中(就象HTML数据存储在HTTP_POAT_DATA中一样)  
数据的实践赋值是在PHP剧本中完成的,相反的是HTML提交数据是在PHP引擎中被赋值的。  

要想失掉一个FDF数据看起来的模样,这儿是一个例子:(译注:从网上拷下的原始文件如斯,我也看不清乱码是甚么,不外假如放在英文体系中能看清吧)  

%FDF-1.2 %忏嫌 1 0 obj << /FDF << /Fields [ << /V (This is just some text for testing)/T (comment)>> ....  

这个仅仅是一个完全纪录的第一局部,但它能分明地暗示出输出域的注解(译注:多是题目吧)和它的值。这儿是测试文本。  

这了让它更清晰,供应一个复杂的例子。起首,假定咱们有一个包括数目,出书者,筹办者,日期,注解刊行者,刊行筹办者等域的PDF表单。  前五个域是文本域,最初两个域是反省框(check box)。咱们的PHP剧本总会显示数目、日期、注解域的值,当响应的反省框选中时才显示出书者、筹办者域的值。  
假如这个框(check box)被选中,它们的值是"On"这是在表单被创立时设置的。固然这个表单也有提交按钮,在咱们的这个例子中它乃至有reset按钮。  
点击提交按钮运转上面的剧本。这个剧本象下面所述的来赋域数据的值。  

<?php  

$fdffp = fopen("test.fdf", "w");  
fwrite($fdffp, $HTTP_RAW_POST_DATA, strlen($HTTP_RAW_POST_DATA));  
fclose($fdffp);  

$fdf = fdf_open("test.fdf");  
$volume = fdf_get_value($fdf, "volume");  
echo "The volume field has the value '<B>$volume</B>'<BR>";  

$date = fdf_get_value($fdf, "date");  
echo "The date field has the value '<B>$date</B>'<BR>";  

$comment = fdf_get_value($fdf, "comment");  
echo "The comment field has the value '<B>$comment</B>'<BR>";  

if(fdf_get_value($fdf, "show_publisher") == "On") {  
$publisher = fdf_get_value($fdf, "publisher");  
echo "The publisher field has the value '<B>$publisher</B>'<BR>";  
} else  
echo "Publisher shall not be shown.<BR>";  

if(fdf_get_value($fdf, "show_preparer") == "On") {  
$preparer = fdf_get_value($fdf, "preparer");  
echo "The preparer field has the value '<B>$preparer</B>'<BR>";  
} else  
echo "Preparer shall not be shown.<BR>";  
fdf_close($fdf);  

?>  

你可以尝尝这个例子 http://gehtnix.fernuni-hagen.de:8000/testfdf/example1.pdf  



对照实践情形,PDF表单比HTML表单有更好的外不雅,这类手艺好象没有切实的优势。但是,PDF有另外一种用途。你可以回忆一下下面的  
进程,并用数据构成一个PDF文档。  
假如你需求定制PDF文档中仅需的几个肯定局部,象地址,日期等等。它也能够用于创立完全的PDF文档,但要用PHP的pdf文档功效创立夹杂文档  
需求良多任务。  
例如在凡是情形下,它也值得用于设计者创立筹办文档(译注:多是草稿吧)。用PHP中的PDF文档功效创立PDF表单(译注:不是fdf文档)几近不成能的。  

在FDF顶用数据构成一个PDF文档很复杂。你用Acrobat 4的话将必需创立一个PDF文档并在个中到场输出域。放到你的web办事器上。  然后,你需求用PHP创立FDF文档,它包括每一个域,它的值和数据将被拔出的文档的参考。(这个PDF文档你方才已建好了)。这个会在php中被飞快地处置。文档的参考是一个指向PDF文档的URL。  

以第一个例子为基本,上面的php剧本十分轻易。剧本的第二局部已到场了。  

<?php  

$fdffp = fopen("test.fdf", "w");  
fwrite($fdffp, $HTTP_RAW_POST_DATA, strlen($HTTP_RAW_POST_DATA));  
fclose($fdffp);  

$fdf = fdf_open("test.fdf");  
$volume = fdf_get_value($fdf, "volume");  
$date = fdf_get_value($fdf, "date");  
$comment = fdf_get_value($fdf, "comment");  

if(fdf_get_value($fdf, "show_publisher") == "On") {  
$publisher = fdf_get_value($fdf, "publisher");  
} else  
$publisher = "";  

if(fdf_get_value($fdf, "show_preparer") == "On") {  
$preparer = fdf_get_value($fdf, "preparer");  
} else  
$preparer = "";  

fdf_close($fdf);  

$outfdf = fdf_create();  
fdf_set_value($outfdf, "f_volume", $volume, 0);  
fdf_set_value($outfdf, "b_volume", $volume, 0);  

fdf_set_value($outfdf, "f_comment", $comment, 0);  
fdf_set_value($outfdf, "b_comment", $comment, 0);  

fdf_set_value($outfdf, "f_date", $date, 0);  
fdf_set_value($outfdf, "b_date", $date, 0);  

fdf_set_value($outfdf, "f_preparer", $preparer, 0);  
fdf_set_value($outfdf, "b_preparer", $preparer, 0);  

fdf_set_value($outfdf, "f_publisher", $publisher, 0);  
fdf_set_value($outfdf, "b_publisher", $publisher, 0);  

fdf_set_file($outfdf, "http:/testfdf/resultlabel.pdf");  
fdf_save($outfdf, "outtest.fdf");  
fdf_close($outfdf);  
Header("Content-type: application/vnd.fdf");  
$fp = fopen("outtest.fdf", "r");  
fpassthru($fp);  
unlink("outtest.fdf");  

?>  

你也能够尝尝这个例子 http://gehtnix.fernuni-hagen.de:8000/testfdf/example2.pdf  

In this example several steps are performed:  
在这个例中几个步调已完成:  

用户已埴完了PDF 表单 example2.pdf  
点击提交按钮后,提交按钮联系关系的URL已被挪用。在这个例子中,已履行这个PHP剧本。PHP剧本检索FDF数据流中的数据并创立新的FDF文档  
它包括作为了局的PDF文档的数据。  

FDF文档用application/vnd.fdf类型送回。  

Acrobat插件读取数据并显示这个参考PDF文档。在此例中为 resultlabel.pdf。  

这仍不是FDF做的每件事,在这个教程中还有良多遗留的器材需求会商。  
你可以在adobe的web网站查验这篇文档。 实现固定数量的几张图片的上传;再如调试软件ZendStudio的使用,看了很多次老师的应用,但总感觉用的不顺手,不懂那么多的数据值,到底哪一个才是真正的问题所在;还有如数据库语句的封装,我只会用简单的函数来进行封装。
愤怒的大鸟 该用户已被删除
沙发
 楼主| 发表于 2015-2-4 08:34:52 | 只看该作者
环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。
只想知道 该用户已被删除
板凳
发表于 2015-2-6 15:26:22 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
第二个灵魂 该用户已被删除
地板
发表于 2015-3-2 18:07:00 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
海妖 该用户已被删除
5#
发表于 2015-3-11 04:56:18 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
小魔女 该用户已被删除
6#
发表于 2015-3-17 20:54:47 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
若天明 该用户已被删除
7#
发表于 2015-3-21 00:14:34 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
灵魂腐蚀 该用户已被删除
8#
发表于 2015-3-24 14:10:08 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
因胸联盟 该用户已被删除
9#
发表于 2015-3-27 07:08:17 | 只看该作者
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
柔情似水 该用户已被删除
10#
发表于 2015-4-14 01:36:52 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
不帅 该用户已被删除
11#
发表于 2015-4-26 00:09:18 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
12#
发表于 2015-5-2 01:52:20 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
莫相离 该用户已被删除
13#
发表于 2015-5-10 10:59:05 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
老尸 该用户已被删除
14#
发表于 2015-5-11 20:25:50 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
蒙在股里 该用户已被删除
15#
发表于 2015-6-13 09:48:51 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
活着的死人 该用户已被删除
16#
发表于 2015-6-24 20:55:30 | 只看该作者
当然这种网站的会员费就几十块钱。
小妖女 该用户已被删除
17#
发表于 2015-7-11 09:47:50 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
谁可相欹 该用户已被删除
18#
发表于 2015-7-12 03:46:48 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
透明 该用户已被删除
19#
发表于 2015-7-17 02:51:05 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 13:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表