我们知道,PHP语言的合理运用可以帮助我们实现导出Word文档的功能。今天我们将为大家介绍PHP处理Word转PDF的相关实现方法。

  PHP处理Word转PDF代码示例:

PHP代码
  1. <?php       
  2. set_time_limit(0);       
  3. function MakePropertyValue($name,$value,$osm){       
  4. $oStruct = $osm->Bridge_GetStruct       
  5. ("com.sun.star.beans.PropertyValue");       
  6. $oStruct->Name = $name;       
  7. $oStruct->Value = $value;       
  8. return $oStruct;       
  9. }       
  10. function word2pdf($doc_url$output_url){       
  11. $osm = new COM("com.sun.star.ServiceManager")       
  12. or die ("Please be sure that OpenOffice.org     
  13. is installed.
    "
    );       
  14. $args = array(MakePropertyValue("Hidden",true,$osm));       
  15. $oDesktop = $osm->createInstance("com.sun.star     
  16. .frame.Desktop");       
  17. $oWriterDoc = $oDesktop->loadComponentFromURL       
  18. ($doc_url,"_blank", 0, $args);       
  19. $export_args = array(MakePropertyValue       
  20. ("FilterName","writer_pdf_Export",$osm));       
  21. $oWriterDoc->storeToURL($output_url,$export_args);       
  22. $oWriterDoc->close(true);       
  23. }       
  24. $output_dir = "D:/LightTPD/htdocs/";       
  25. $doc_file = "D:/LightTPD/htdocs/2.doc";       
  26. $pdf_file = "2.pdf";       
  27. $output_file = $output_dir . $pdf_file;       
  28. $doc_file = "file:///" . $doc_file;       
  29. $output_file = "file:///" . $output_file;       
  30. word2pdf($doc_file,$output_file);       
  31. ?>  

    * 在支持position:fixed的浏览器上使用position:fixed,这样当拖动共同条的时候弹窗位置是固定的。
    * 优化了IE6下onscroll 事件绑定的函数

还需改进的地方(过段事件等项目应用的时候会修改):

    * 30秒后自动关闭
    * 方便的插入弹出内容

 

JavaScript代码
  1. var RBMessage={      
  2.     boxW:200,      
  3.     boxH:101,      
  4.     init:function(){      
  5.         var that = this;      
  6.         this.createBox();      
  7.         document.getElementById("msg_close").onclick = function() {      
  8.             that.BoxWin.style.display="none";      
  9.         }      
  10.     },      
  11.     bind: function() { //绑定窗口滚动条与大小变化事件      
  12.         var that = this,      
  13.         st, rt;      
  14.         window.onscroll = function() {      
  15.             if( !!window.ActiveXObject &amp;&amp; !window.XMLHttpRequest ){      
  16.                 clearTimeout(st);      
  17.                 clearTimeout(that.timer2);      
  18.                 that.setOpacity(0);      
  19.                 st = setTimeout(function() {      
  20.                     that.BoxWin.style.top = that.getY().top;      
  21.                     that.show();      
  22.                 },500);      
  23.             }      
  24.         };      
  25.         window.onresize = function(){      
  26.             if (!!window.ActiveXObject &amp;&amp; !window.XMLHttpRequest) {      
  27.                 clearTimeout(rt);      
  28.                 rt = setTimeout(function(){      
  29.                     that.BoxWin.style.top = that.getY().top      
  30.                 }, 100);      
  31.             }      
  32.         }      
  33.     },      
  34.     show: function() { //渐显      
  35.         clearInterval(this.timer2);      
  36.         var that = this,      
  37.         fx = this.fx(0, 100, 0.1),      
  38.         t = 0;      
  39.         this.timer2 = setInterval(function() {      
  40.             t = fx();      
  41.             that.setOpacity(t[0]);      
  42.             if (t[1] == 0) {      
  43.                 clearInterval(that.timer2)      
  44.             }      
  45.         },      
  46.         10);      
  47.     },      
  48.     fx: function(a, b, c) { //缓冲计算      
  49.         var cMath = Math[(a – b) > 0 ? "floor""ceil"],      
  50.         c = c || 0.1;      
  51.         return function() {      
  52.             return [a += cMath((b – a) * c), a – b]      
  53.         }      
  54.     },      
  55.     setOpacity: function(x) { //设置透明度      
  56.         var v = x >= 100 ? ‘‘‘Alpha(opacity=‘ + x + ‘)‘;      
  57.         this.BoxWin.style.visibility = x < = 0 ? ‘hidden‘‘visible‘//IE有绝对或相对定位内容不随父透明度变化的bug      
  58.         this.BoxWin.style.filter = v;      
  59.         this.BoxWin.style.opacity = x / 100;      
  60.     },      
  61.     getY: function() { //计算移动坐标      
  62.         var d = document,      
  63.         b = document.body,      
  64.         e = document.documentElement;      
  65.         var s = Math.max(b.scrollTop, e.scrollTop);      
  66.         var h = /BackCompat/i.test(document.compatMode) ? b.clientHeight: e.clientHeight;      
  67.         var h2 = this.BoxWin.offsetHeight;      
  68.         return {      
  69.             foot: s + h + h2 + 2 + ‘px‘,      
  70.             top: s + h – h2 – 2 + ‘px‘     
  71.         }      
  72.     },      
  73.     moveTo: function(y) { //移动动画      
  74.         clearInterval(this.timer);      
  75.         var that = this;      
  76.         var moveTopNum=-that.boxH;      
  77.         this.timer = setInterval(function() {      
  78.             moveTopNum+=5;      
  79.             that.BoxWin.style.bottom =  moveTopNum +‘px‘;      
  80.             if (moveTopNum >= 0) {      
  81.                 clearInterval(that.timer);      
  82.                 that.bind();      
  83.             }      
  84.         },50);      
  85.         return this;      
  86.     },      
  87.     createBox:function(){      
  88.         this.BoxWin=document.createElement(‘div‘);      
  89.         this.BoxWin.style.width = this.boxW+"px";      
  90.         this.BoxWin.style.height =  this.boxH+"px";      
  91.         this.BoxWin.style.bottom = – this.boxH+"px";      
  92.         this.BoxWin.id = "msg_win";      
  93.         this.BoxWin.innerHTML = ‘<div class="icos"><a href="javascript:void 0" title="关闭" id="msg_close">X</a></div><div id="msg_title">温馨提示(标题)</div><div id="msg_content"></div>‘;      
  94.         document.body.appendChild(this.BoxWin);      
  95.         var that = this;      
  96.         setTimeout(function() { //初始化最先位置      
  97.             that.BoxWin.style.display = ‘block‘;      
  98.             that.moveTo();      
  99.         },1000);      
  100.         return this;      
  101.     }      
  102. };      
  103. RBMessage.init();    

手工法:

Click Start, click Run, type regedit, and then click OK.

  1. In the left pane, locate and then click the following registry subkey:
    HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsNTCurrent VersionWPAEvents
  2. In the right pane, right-click OOBETimer, and then click Modify.
  3. Change at least one digit of the OOBETimer value to deactivate Windows.
  4. Click Start, click Run, type the following command, and then click OK:
    %systemroot%system32oobemsoobe.exe /a
  5. Click Yes, I want to telephone a customer service representative to activate Windows, and then click Next.
  6. Click Change Product key, type the new product key in the New key boxes, and then click Update. 



    Note If the previous Activation Wizard screen appears again, click Remind me later, and then restart the computer.
  7. Repeat steps 6 and 7 to verify that Windows is started. Click OK when you receive the following message:
    Windows is already activated. Click OK to exit.
  8. Install any Windows service packs that you want to install. 



    Note If you cannot restart Windows after you install a service pack, press F8 when you restart the computer, click Last Known Good Configuration, and then repeat this procedure.

 

脚本法:

ChangeVLKeySP1.vbs

ASP/Visual Basic代码
  1. ‘    
  2. ‘ WMI Script – ChangeVLKey.vbs   
  3.   
  4. ‘ This script changes the product key on the computer.   
  5.   
  6. ‘***************************************************************************   
  7.   
  8. ON ERROR RESUME NEXT   
  9.   
  10.   
  11. if Wscript.arguments.count<1 then   
  12.    Wscript.echo "Script can‘t run without VolumeProductKey argument"  
  13.    Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"  
  14.    Wscript.quit   
  15. end if   
  16.   
  17. Dim VOL_PROD_KEY   
  18. VOL_PROD_KEY = Wscript.arguments.Item(0)   
  19. VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-",""‘remove hyphens if any   
  20.   
  21. for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")   
  22.   
  23.    result = Obj.SetProductKey (VOL_PROD_KEY)   
  24.   
  25.    if err <> 0 then   
  26.       WScript.Echo Err.Description, "0x" & Hex(Err.Number)   
  27.       Err.Clear   
  28.    end if   
  29.   
  30. Next  

 

 

 

ChangeVLKey2600.vbs

 

ASP/Visual Basic代码
  1. ‘    
  2. ‘ WMI Script – ChangeVLKey.vbs   
  3.   
  4. ‘ This script changes the product key on the computer.   
  5.   
  6. ‘***************************************************************************   
  7.   
  8. ON ERROR RESUME NEXT   
  9.   
  10. if Wscript.arguments.count<1 then   
  11.    Wscript.echo "Script can‘t run without VolumeProductKey argument"  
  12.    Wscript.echo "Correct usage: Cscript ChangeVLKey.vbs ABCDE-FGHIJ-KLMNO-PRSTU-WYQZX"  
  13.    Wscript.quit   
  14. end if   
  15.   
  16. Dim VOL_PROD_KEY   
  17. VOL_PROD_KEY = Wscript.arguments.Item(0)   
  18. VOL_PROD_KEY = Replace(VOL_PROD_KEY,"-",""‘remove hyphens if any   
  19. Dim WshShell   
  20. Set WshShell = WScript.CreateObject("WScript.Shell")   
  21. WshShell.RegDelete "HKLMSOFTWAREMicrosoftWindows NTCurrentVersionWPAEventsOOBETimer" ‘delete OOBETimer registry value   
  22. for each Obj in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf ("win32_WindowsProductActivation")   
  23.   
  24.    result = Obj.SetProductKey (VOL_PROD_KEY)   
  25.   
  26.    if err <> 0 then   
  27.       WScript.Echo Err.Description, "0x" & Hex(Err.Number)   
  28.       Err.Clear   
  29.    end if   
  30.   
  31. Next   

    我们知道使用 Gmail 给美国和加拿大拨打电话是完全免费的,现在 Google 则再一次震撼到了我们!只要使用 Gmail 拨打国内电话,通话双方均全部免费!

    操作的步骤如下:

    1、确保登录 Gmail 后可以看到在 Chat 列表中看到 "Call phone"按钮。这有2个方法:

    其一、使用美国或加拿大 IP 地址登录 Gmail 肯定能看到该按钮;
    其二、把 Gmail 语言设置成 US English ,也是有可能使用到呼叫功能的。

    2、安装 Gmail voice and video chat 浏览器插件。

    3、点击"Chat"列表中的"Call phone"按钮,拨打你自己的 Google Voice 手机号,如:(111) 222-333

    4、听到 Google Voice 语音提示:“您当前没有新的消息,按“2”健拨打电话,按“4”健更改设置”。我们按“2”健。

    5、再次听到 Google Voice 语音提示:“请按键输入您要拨打的电话号码,按“#”号健确认。如果是国际长途,则请先按键“011”,再输入国家号,最后输入电话号码”。

    举2个例子:

    如果我要拨打的中国移动手机号为:13866667777,则我应按键输入:0118613866667777#
    如果我要拨打的国内固定电话号码为:021-77778888,则我应按键输入:011862177778888#(注:21为上海区号,大家不要输入021,这是错误的。)

    6、再次听到 Google Vocie 语音提示:“这是一个免费电话!”,接下来电话就直接接通了呢。

    这么大的好事,大家赶紧自己动手试试吧!

常用路由器默认密码集合

  艾玛 701g

  用户名:admin 密码:admin

  用户名:SZIM 密码:SZIM

  艾玛701H

  用户名:admin 密码:epicrouter

  Adsl Router

  用户名:anonymous 密码:12345

  华为 MT800

  用户名:admin 密码:admin

  Home Gateway

  用户名:user 密码:password

  Viking:

  用户名:root 密码:root

  TP-link

  用户名:admin 密码:admin

  实达2110EH ROUTER

  用户名:user 密码:password

  用户名:root 密码:grouter

  神州数码/华硕:

  用户名:adsl 密码:adsl1234

  全向:

  用户名:root 密码:root

  普天/大亚:

  用户名:admin 密码:dare

  UT斯达康

  用户名:admin 密码:dare

  e-tek

  用户名:admin 密码:12345

  zyxel

  用户名:anonymous 密码:1234

  北电

  用户名:anonymous 密码:12345

  大恒

  用户名:admin 密码:admin

  大唐

  用户名:admin 密码:1234

  斯威特

  用户名:root 密码:root

  用户名:user 密码:user

  中兴

  用户名:adsl 密码:adsl831 (中兴的adsl的密码前面为adsl,后面为型号,比如中兴831,密码就是adsl831)

  成都天逸 用户名:admin 密码:epicrouter

  上海中达 用户名:(随意) 密码:12345

  品牌:ViKing

  用户名:adsl 密码:adsl1234

  品牌:实达

  版本:2110ehr v3.20、 2110ehr v3.21、 2110ehr v3.51

  用户名:admin 密码:conexant

  版本:2110ehr v4.5

  用户名:root 密码:grouter

  版本:2110eh v3.51(中文web界面)

  用户名:admin 密码:starnetadsl

  品牌:艾玛

  用户名:admin 密码:admin

  品牌:神州数码/华硕

  用户名:adsl 密码:adsl1234

  品牌:全向

  用户名:root 密码:root

  品牌:普天

  用户名:putian 密码:123456

  品牌:e-tek

  用户名:admin 密码:12345

  品牌:zyxel

  用户名:anonymous密码:1234

  品牌:北电

  用户名:anonymous 密码:12345

  品牌:大恒

  用户名:admin 密码:admin

  品牌:大唐

  用户名:admin 密码:1234

  品牌:斯威特

  用户名:root 密码:root

  用户名:user 密码:user

  品牌:中兴

  用户名:adsl 密码:adsl831

  品牌:BENQ

  用户名:user 密码:benq1234

  品牌:华硕

  用户名:ADSL 密码:adsl1234

  艾玛 701g

  192.168.101.1 192.168.0.1

  用户名:admin 密码:admin

  用户名:SZIM 密码:SZIM

  艾玛701H

  用户名:admin 密码:epicrouter

 

1. 将服务器类型更改为 NTP。为此,请按照下列步骤操作:
a.  单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
b.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParametersType
c.  在右窗格中,右键单击“Type”,然后单击“修改”。
d.  在“编辑值”的“数值数据”框中键入 NTP,然后单击“确定”。

2. 将 AnnounceFlags 设置为 5。为此,请按照下列步骤操作:
a.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfigAnnounceFlags
b.  在右窗格中,右键单击“AnnounceFlags”,然后单击“修改”。
c.  在“编辑 DWORD 值”的“数值数据”框中键入 5,然后单击“确定”。

3. 启用 NTPServer。为此,请按照下列步骤操作:
a.  找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpServer
b.  在右窗格中,右键单击“Enabled”,然后单击“修改”。
c.  在“编辑 DWORD 值”的“数值数据”框中键入 1,然后单击“确定”。

进服务-停止windows time 服务, 再启动windows time  服务。 这样时间服务器就配置完毕
客户机设置:
册表项 MaxPosPhaseCorrection
路径 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
十进制修改为999999999
注册表项 MaxNegPhaseCorrection
路径 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeConfig
十进制修改为999999999
上面2项修改意思为:可以同步时间超过31年的时间差。因为XP默认为15小时, 超过15小时差就不给自动更新时间。
注册表项 NtpServer
路径 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeParameters
十进制修改为192.168.*.* (服务器地址)
注册表项 SpecialPollInterval
路径HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesW32TimeTimeProvidersNtpClient
修改为600  意思为10分钟自动更新时间一次  默认为7天更新一次
进服务-停止windows time 服务, 再启动windows time  服务。客户机设置完毕!

数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……

方法一

declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0

方法二

有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重 复或都重复可以忽略。

1、对于第一种重复,比较容易解决,使用

select distinct * from tableName

就可以得到无重复记录的结果集。

如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除

select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp

发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。

2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下

假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集

select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)

最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此 列)

PHP已经成为主流网页语言,我们每天访问的百度、开心等知名网站都是采用的PHP,由于PHP拥有平台无关性、易学等优点,许多中小型网站也逐步 加入PHP行列。如今,网络上的PHP建站程序可谓相当丰富,但参差不齐的性能却让一些站长们犯了愁。下面笔者向大家推荐几套不错的免费PHP建站软件。 PS:非权威排行榜,仅代表笔者观点。

1、PHPCMS 内容管理系统

官方网站:www.phpcms.cn

推荐理由:Phpcms由内容模型、会员、问吧、专题等20多个功能模块组成,内置新闻、图片、下载、信息、产品5大内容模型,功能强大得毋庸置 疑。如果大家觉得感受不明显,就去访问2008奥运官网、21世纪报道、卡巴斯基中国官网看看。

2、Discuz&PHPWind 论坛社区程序

官方网站:www.comsenz.com www.phpwind.com

推荐理由:关于Discuz、PHPWind的争辩在BBS社区领域早已司空见惯,多年来,两大高手的对决一直难分高下,两套论坛都有众多的粉丝。 一个功能强大,整合性较好;一个速度更快,处理效率较高,如何选择,就看网站的定位了。

3、iWeb SNS 社交网络软件

官方网站:www.jooyea.net

推荐理由:也许你会问为什么我不推荐uchome,不是uchome功能不够强大,而是笔者认为uchome如今早已被漫游平台绑架了。iWeb SNS有一个非常实用的功能,可以直接在后台更改模板代码,相信更有特色的网页风格比千篇一律的Facebook还是更有吸引力吧。

4、WordPress 博客程序

官方网站:cn.wordpress.org

推荐理由:全球使用量最大的博客程序,功能强大,插件众多,易于扩充功能,甚至有许多第三方开发的免费模板,安装方式简单易用。如果你想搭载一个 PHP博客网站,WordPress肯定是不二之选。

5、HDWiki 百科程序

官方网站:kaiyuan.hudong.com

推荐理由:中国第一款拥有自主知识产权的中文WIKI系统,就是类似于百度百科。易用,功能强大,对于众多的中小站长而言,利用 HDwiki 均能够在最短的时间内,花费最低的费用,采用最少的人力,架设一个性能优异、功能全面、安全稳定的百科网站平台。

6、PHP168 分类信息系统

官方网站:www.php168.com

推荐理由:集地区分类信息管理、城市管理、智能防采集、自定义模型自定义字段、搜索等多种强大的功能于一身,它可以帮助你做成类似58同城、百姓网 那样的巨型站。

7、VODCMS 视频点播系统

官方网站:www.vodcms.com

推荐理由:诚然市场占有率最高的视频程序是MaxCms,但它是asp的,而自家的PHP视频程序pocle又是面向企业用户,好在基于PHP的 VODCMS功能还算齐全,足够应付中小型网站需求。

8、EasyTalk 微博客程序

官方网站:www.9italk.com

推荐理由:由Twitter引发的微博客热已经开始蔓延到国内,康盛也在测试自己的CCT微博系统,似乎EasyTalk走得更前,不过谁会笑到最 后,还得等到它们各自推出正式版后才能见分晓。

笔者只推荐PHP语言程序并不是说其他语言的程序就不好,比如动易、Z-blog、马克斯等都是非常不错的建站软件,只是笔者更加倾向于PHP的跨 平台性。另外可能有朋友注意到文章里面没有提到Ecshop网店系统,虽然官方网站上一直宣称开源免费,但网站系统一般都是指用于个人和非商业用途免费, 然而又有多少网店不是以营利为目的呢?

早晨打开CB,看到微软免费发行SharePoint Designer的新闻,由于公司使用的是正版的Office,所以对新闻提供的下载并不怎么感兴趣,真正感兴趣的是官方下载页面同时提 供了一个安装KEY。按以往经验来分析,一般Office2007各个单独组件所使用的KEY是通用的,也就是说安装SharePoint Designer的KEY完全可以用来安装Project、Visio等。

按网上广泛流传的更换Office2007KEY的方法,打开注册表编辑器,定位到
HKEY_LOCAL_MACHINESOFTWAREMicrosoftOffice12.0Registration {90120000-003B-0000-0000-0000000FF1CE}项,

“{90120000-003B-0000-0000-0000000FF1CE}”项可能会因为安装的产品版本不同而有所不同,我们用的是 “Project Professional 2007”,该注册表项下“ProductName”值是“Microsoft Office Project Professional 2007”,将“DigitalProductID”改名或删除,之后启动Project会要求输入序列号,输入微软提供的 KEY“JB28C2GKFM3W9G3V8XMGQBYYB”,如果版本一致的话KEY的输入框后边会出现绿色的对勾,之后会执行一个安装步骤。安装完 毕后,重新启动Project,在“帮助”菜单下选择“激活产品”,此时会提示“此产品已被经激活”。

当然激活只是一方面,目前还没有测试是否能通过正版验证,理论上微软如果封堵这个KEY也是很容易的。