PHP生成PDF
Posted by quentin 在 Thursday, 3 November 2011有时我们需要使用脚本动态的创建PDF文档,这里介绍一些免费的开源PHP脚本来生成PDF 的方法。
1.FPDF: PDF生成器
FPDF是一个纯粹的通过PHP类来生成PDF文档的方法,需要生成的内容直接在PHP代码中来指定,生成文字,图片,线条等等,都有自己的方法。下面介 绍一个用FPDF来生成”Hello World”的PDF文档:
求知若渴,虚心若愚!
居安思危,积极进取!
有时我们需要使用脚本动态的创建PDF文档,这里介绍一些免费的开源PHP脚本来生成PDF 的方法。
1.FPDF: PDF生成器
FPDF是一个纯粹的通过PHP类来生成PDF文档的方法,需要生成的内容直接在PHP代码中来指定,生成文字,图片,线条等等,都有自己的方法。下面介 绍一个用FPDF来生成”Hello World”的PDF文档:
老婆昨天产检发现小孩儿小了一个月,我让老婆回家休养了。医生说要输营养液,多补补身体。争取能在预产期前把孩子养正常了。
虽然老婆没说什么,但是我觉得这事儿辛苦她了。怀孕的事儿,都是女人受苦的。辛苦你了,老婆。为了孩子,你要多吃点,让孩子多吸收点营养。
晚上一个人在家吃了面,挺想她的。也很牵挂我的孩子。希望乖孩子快快的长大,不要让他妈妈这么辛苦。
老婆,想你了~么么~
走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们。
01. 自己的户口档案、养老保险、医疗保险、住房公积金一定要保管好。
由于程序员行业每年跳槽一次,我不隐瞒大家,我至少换过5个以上的单位,这期间跳来跳去,甚至是城市都换过3个。还好户口没丢掉,其他都已经是乱了,好几个城市里,都有交过三金,甚至是一个程序的2个区里交的都有,那些东西,10年后,会变得很重要。你买房子若有公积金,可以取出来,贷款利率也会比较低一些,有孩子了,还需要上学,生病了还需要医疗保险。
一、怎样鉴别真皮、仿皮:
(一)未经修饰的面革的鉴别以毛孔为主要鉴别方式:
1.真皮与真皮的鉴别:黄牛皮毛孔碎小、细圆、紧密均匀且呈不规则的“满天星”排布,毛孔陷入不深且直插入皮面;水牛皮粗糙,毛孔比黄牛革深而粗大、稀少,革质较松弛,不如黄牛革丰满;羊皮毛孔多,皮脂腺、汗腺也很多,所以革面特别松软,手感柔暖,牢度较低,又毛孔细小呈扁圆形,排列均匀如鱼鳞状。猪皮毛孔稀少,深而粗大,较倾斜的陷入革内,三孔一堆,呈品字分布。革面粗糙而且凹凸不平。马皮与牛革相似,但还是有区别的,马皮的毛孔呈椭圆形,比黄牛皮的毛孔略为大些,并斜插入革内,呈山脉形状排列。另马皮薄,牢度不如牛皮。但透气性和吸湿性较好,穿着时不会有闷气不适。
2.真皮与仿皮的鉴别:真皮都有毛孔,且愈顶愈明显,仿皮则没有毛孔,虽然表面有时也会仿真皮毛孔压制花纹,但不会有毛孔。
(二)对于粒面层经修饰失去原有特征的,应根据加工工艺,仔细分类鉴别。主要从以下两方面着手。
1.打开发动机舱、看其出生日期
提车可查验发动机舱的生产日期
发动机铭牌上的生产日期是鉴别新车是否的又一个标准,同时他也是判定是否是库存车的唯一途径,新车虽然存在检测、运输到销售的诸多环节,提车日期与车辆出生日期都不会有太大差距,畅销车型或许会接近,滞销车型时间间隔会长一些,甚至演变成库存车辆。
2.俯下身躯观察轮胎及底盘
提车可以观察轮胎和底盘情况
轮胎和底盘是比较直接观察到的鉴别方法,如果车辆长时间行驶后轮胎胎毛会消失殆尽、轮胎花纹有磨损、新车底盘附着有泥泞、灰尘、沙石等。
3.刹车盘上的秘密
可检查刹车盘
当车辆行驶中、刹车系统是绝对不能避免使用的,当我看到一辆车刹车盘锈迹斑点时,请不要害怕,这说明他很原始。新车刹车盘一般比较光亮,没有太多的刹车磨损,而刹车盘太过光滑,可能就是经常驾驶的原因。
__toString()
抽象类:
1. 截断字符函数substr() 和mb_substr().
在截断字符时,一般都会使用substr()这个函数。但是强烈推荐使用mb_substr(),后者在处理特殊字符上可使用mb_internal_encoding()函数设定字符集格式。
区别可参考如下例子:
<?php
$str = 'ñ Substr() ñ Mb_substr() ñ Others';
mb_internal_encoding("UTF-8");
echo substr($str, 0, 28),"<br>";
echo mb_substr($str, 0, 28),"<br>";
?>
Facebook:
http://www.facebook.com/sharer.php?u=CONTENT-URL&t=CONTENT-TITLE
Twitter:
http://twitter.com/home?status=SHARED-CONTENT-DESCRIPTION
Linkedin:
http://www.linkedin.com/shareArticle?mini=true&url=CONTENT-URL&title=CONTENT-TITLE&summary=DEATILS-OPTIONAL&source=YOURWEBSITE-NAME
Javascript下有自己的URLencode函数,并不要我们自己去实现。如下:
编码函数:encodeURIComponent()
解码函数:decodeURIComponent()
感觉还是挺方便的,跟PHP 的urlencode一样好用。
发送限制
为了抵制垃圾邮件和防止滥用行为,如果您将邮件发送给超过 500 个收件人,或者发送大量无法递送的邮件,Google 会暂时停用您的帐户。如果您使用 POP 或 IMAP 客户端(如 Microsoft Outlook 或 Apple Mail),可能一次只能将邮件发送给 100 个人。您的帐户应该会在 24 小时内重新启用。
如果您经常与同一群人进行交流,那么您可能会对 Google 网上论坛感兴趣。
源地址:https://mail.google.com/support/bin/answer.py?hl=cn&answer=22839
今天早上来,公司的电脑突然挂了。IT说是硬盘损坏了。只能换主机或者硬盘。
来公司这么久一直有记手记,这次惨了,全没了。
唉,现在才知道使用google doc或者其他网络存储的重要性。
问题:
假设有这样的一个表:
CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(60) NOT NULL DEFAULT '',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
如何这个表的AUTO_INCREMENT字段值设置为0呢?
尝试使用:INSERT INTO `test` (id, name) VALUES (0, 'Name 0'); 执行下来结果是id自动为1了。
所以如果需要上面的语句有效的执行,需要在执行sql语句前先执行:
SET sql_mode='NO_AUTO_VALUE_ON_ZERO';
然后再执行:
INSERT INTO `test` (id, name) VALUES (0, 'Name 0');
网上抄的:
杨韶赞,
杨弈,
杨夷强,
杨冠,
杨吉圃,
杨均聪,
杨贝泽,
杨敦伯,
杨康忠,
杨精可,
杨赞聪,
杨古钢,
杨孝焕,
杨远丘,
杨宾光,
杨彩发,
杨太冬,
杨偌,
杨有国,
杨北笛,
杨尚赐,
杨赐,
杨大培,
杨笙勇,
杨泽豪,
杨知锐,
杨力林,
杨旺常,
杨开超,
杨宁,
杨均高,
杨明俐,
杨炎弘,
杨意才,
杨钧隆,
杨锡舍,
杨威,
杨牵琢,
杨章卓,
杨捷致,
杨谦风,
杨弘柏,
杨夜坚,
杨贤槐,
杨厚峦,
杨起佳,
杨凛付,
杨瑞云,
杨峥炯,
孟子曰:"舜发于畎亩之中,傅说举于版筑之间,胶鬲举于鱼盐之中,管夷吾举于士,孙叔敖举于海,百里奚举于市。故天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空伐其身行,行弗乱其所为,所以动心忍性,曾益其所不能。人恒过,然后能改。困于心,衡于虑,而后作。徵于色,发于声,而后喻。入则无法家拂士,出则无敌国外患者,国恒亡。然后知生于忧患难与共,而死于安乐也。"
程序员热衷于长时间地工作。我想说的是,你就承认吧,你的工作/老板并没有让你这样做,你自己要这样做而已。当然,我知道,也许并非所有程序员都喜欢长时间的编程。不过肯定的是,随着加班成为业内的普遍现象,至少一半的程序员必须喜欢加班,不是吗?
我早已听到以下这类借口。“不,不是那样的,我们只是喜欢炫酷的技术活,而且不想遗留未解决的问题。实际上,加班是一件好事,它让我们变得出色!”
我认为,你不能只见树木,不见森林。从某个角度来说,你这样做并非为了自己,而是为了“某个人”。无须质疑,他也许是个高尚的人,但你并不是他的奴隶。从其他角度来说,你有多少次加班,是为了解决问题,研究新技术,编码实现某些东西,以及在截止时间之前完成任务?但是,你在业务上是机智过人的程序开发者,你在帮助公司获得成功。公司管理者已经向你说明了公司的经济状况——必须这样做,公司依靠你。我想说的是,除非这个管理者现在就在你旁边,半夜2点还在陪你聊天,否则他的话将一文不值。
让我来讲述一个朋友曾经跟我说过的故事。这个故事是关于一个天才程序员的,姑且叫他John吧。
目前常见的绣法
扣眼绣、链绣、断绣、飞绣、羽毛绣、瓣绣、回针绣、克里岛绣、Crean绣、十字绣、法国结。
全针绣法(X)
先由网眼1穿上来,再由网眼2穿下去,再由网眼3穿上来,再由网眼4穿下去,再网眼5穿上来,再由网眼2下去,再由网眼3上来,再由网眼6下去,以次类推 ,将整个格子绣满。
半针绣法(1/2X)
半针绣是一条对角线构成的,即为全针绣的一半 ,更能凸显出层次感。
四分之一绣法
1/4针绣是由对角线的一半构成的,如果要边线正方形中残留的部分,表现不同颜色,则需要有1/4针绣来表现 。
四分之三绣法(1/2X)
3/4绣是由一条完整的对角线与半条对角线所构成出“人”字形状 。
回针绣法(边线)
第一针由网眼1上来,再由网眼2下去;第二针则由网眼3上来,再由网眼2下去,再由网眼4上来回到网眼3,除了第一针,其余每一针都是以回针的方式回到原穿上来的网眼中。回针一般用于绣过线、轮廓和字母 。
法兰西结
把针举到1的位置穿出,将线绕针一圈,把针插在2的位置。用不绣花的指握住绣花线的端部,把结拉紧,而后将针穿过织物,把住绣线,直到必须松开为止。若打大结,可适当增加线的股数,但只缠一次 。
最近忙一些事情,幸福?烦人?累?还是成长?
嗯,应该都有吧。静下来的时候突然发现,自己不再是以前那个无忧无虑的小男孩儿了。肩上的担子不知不觉的重了许多。
一直很担心是不是太仓促?是不是考虑清楚了?其实现在我也没有答案,但是我已经不再纠结这些没有意义的事情了。只要相亲相爱,无论是谁,我都愿意一起走过。
还记得当时写了一篇寻找结婚对象的文章。要求基本她都符合,只是有几条不合格。我相信,慢慢的我可以改变她。(只要她肯努力。)
今天收拾东西准备回家,听着音乐一直到现在。刚洗完澡,有点睡不着。她出差了,突然发现还是有些牵挂的。不过,这几天没有她在旁边,我睡得挺晚,但是起得挺早,不过仍然还是迟到。呵呵~
就这样吧,或许我的人生新篇章就此拉开帷幕吧。
祝福我们幸福,也祝福曾经爱过的和被爱过的人也要幸福。
谢谢爱我的和我爱的人们!
最后特别感谢下爸爸妈妈,这场婚礼基本上都是你们在操劳,这段日子你们辛苦了。