用hypersnap或fpe2001截图。有些游侠有截图热键,看正版说明书就知道。截图后需用acdsee转换成jpg格式,省空间。
-
hypersnap-dx_v5.11.01汉化注册版 用法
按压缩包内的使用说明装软件后,启动hypersnap,点“选项-配置快捷键”,选中“启用快捷键”,也可把键组合调整为合适的。点菜单栏的“捕捉”,选中“启用特殊捕捉directx”。在弹出的对话框选中所有项目,“3d图形控制卡类型”任选一项,这是根据显卡状况选的,一般不用调整,若截图的颜色不好看,请选“1×4”或“1×2”。点菜单栏的“捕捉-捕捉设置”,前3个选项卡用默认值,“查看和编辑”选项卡选中“使用新的捕捉替换当前”,“快速保存”选项卡选中“自动将每次捕捉的图像保存到文件中”,点“更改”选择图片保存路径,选中“文件名依序递增”,“停止保存于”填入99999。
游戏或视频中,按scrolllock键截图,并自动保存成bmp格式。对视频截图时,必须令播放器处于当前窗口状态,可让视频暂停后在截图。
最后用acdsee把图片转为jpg格式。
游戏和视频需启用特殊捕捉directx。对一般窗口用ctrl+shift+w截取,会自动滚屏。对窗口中某个区域截图用ctrl+shift+r 。
-
下载地址
截图软件hypersnap.zip
匿名提取文件连接
http://pickup.mofile.com/9028986014449969
打开页面后,点左边的“免登录下载”按钮
-
fpe2001截图方法
安装fpe2001后,执行fpe.exe启动软件。点“捉图”选项卡,选中“on”,设置保存位置,“编号”输入4个0,这样文件名自动命名为pic0001,pic0002,这样的四位数。选中“++”的复选框,表示文件名按+1的顺序命名。每次启动游戏前,先启动ftp,看看“捉图”设置对不对。之后启动游戏。按print键截图并自动保存。图片是bmp格式,在800*600分辨率下,图片是1.4m,需用acdsee转换成jpg图片。建议安装acdsee3.1,启动速度快。在acdsee浏览所有图片的界面,ctrl+a选中所有图片,右键选“转换/converter”,选jpg格式,“设置”按钮里的一般不调,里面有个清晰度的数值,65是推荐值,想保持高清晰就调90。
--
贴网上的:
hypersnap-dx使用方法:
hypersnap-dx是一款运行于microsoft windows平台下的抓屏软件,利用它我们可以很方便地将屏幕上的任何一个部分,包括活动客户区域、 活动窗口、客户区域、桌面等抓取下来,供我们使用,确实是一个功能强大的抓图软件。
1.保存序列号有技巧
很多朋友都遇到过注册码失效的情况:即某一注册码注册后过几天后hypersnap-dx会弹出窗口提示无效的注册,要求重新注册。而且即使用原来的注册码根本注册不成功!其实,我们只要先将hypersnap-dx卸载,然后就可以用原先的注册码注册成功了。最后,还要选择“帮助”→“检查是否有新版本”命令,并在弹出的窗口中将“自动检查新版本的间隔”设置为0天,以后就不会有问题了。
另外,hypersnap-dx 4.x的序列号保存在c:\program files\hypersnap-dx 4\hprsnap.hs4li文件中,而5.x的则保存在c:\program files\hypersnap-dx 5\hprsnap5.hs5lic文件中。你只要把这些文件保存起来,等重新安装软件后,再把它们拷贝到安装文件夹下即可完成注册。
2.连同光标抓取
有时为了得到更加真实的效果,往往需要连同光标一起抓下来。这时候hypersnap-dx的连同光标抓取图像功能就有了它的用武之地,只要我们选择“捕捉”→“捕捉设置”命令,在打开的“捕捉设置”窗口中,选中“包括光标指针”选项,按“确定”按钮退出,以后抓取后的图像上就会有可爱逼真的小光标图像了。
3.抓取滚动窗口
如果要抓取的目标画面太长而在一屏上显示不了,这时很多人分屏抓成几个文件,再用绘图软件把它们拼起来。其实,我们只要选择“捕捉”→“捕捉设置”命令,选择“捕捉”标签,并选中“窗口捕捉时自动滚动窗口”选项,然后再抓那些超长图片时,你会发现hypersnap完全能够突破屏幕和滚动条的限制,自动一边卷动画面一边抓图,这样就可以把很长的画面一次性全部抓取。
4.抓取扩展窗口
通过这个功能,我们可以做到真正的“所见即所抓”,即可以把屏幕上显示的内容“一网抓尽”。如我们在浏览一个网站时,在ie中显示的内容不止一页,此时ie会在窗口的右边出现滚动条,这时通过一般的方法无法抓取到滚动条下面的图片。我们只要选择“捕捉”菜单下的“延展活动窗口”命令或者按下ctrl+
shift+x快捷键即可抓取。
小提示
★要抓取扩展窗口,必须运行在windows xp下。
★在很多抓取软件中支持自动卷屏功能(auto scrolling),这些相应报刊也有所介绍,但是它和扩展窗口抓取是有一定区别的。以一个ie窗口为例,如果我们只想抓取带有滚动条部分区域,则可以使用自动卷屏功能,但如果想抓取整个窗口的外框(即包括标题条、工具栏和其他内容区)并连同滚动条下的所有内容时,则必须使用扩展窗口抓取功能。
★被抓取的窗口必须不处于最大化状态,否则无法被捕获。
5.抓取vcd、dvd及directx显示图像
vcd、dvd及directx显示的图像很特殊,使用printscreen键把它复制到剪贴板后,再通过画图程序打开保存后会发现它是红色的,无法抓取。不过,选中“捕捉”→“启用特殊捕捉(directx,glide,dvd...) ”选项,并在弹出的设置框中选中所有选项,以后只要按下scroll lock键就可以抓取到vcd、dvd或directx图像了。
6.界面定制随心所欲
新版hypersnap把工具栏、菜单及浮动窗口三者完全融合在一起,菜单可变成浮动窗口,浮动窗口又可变成工具栏,而其相互间的转换仅仅需要鼠标轻轻地拖动。这样我们就可以完全根据自己的需要来更好地定制整个操作范围。
7.一次显示所有的菜单
同时,在显示风格上,hypersnap-dx的菜单也能够自动隐藏不常使用的菜单,已经是尽得office xp风格精髓。如果你想一次显示所有的菜单,一种方法是直接双击菜单项即可。二来,你也可以取消“选项”菜单下“officexp风格”勾选来取消此功能。
8.快速全屏显示图像
要让hypersnap中的图片全屏显示,只要按下ctrl+pagedown键即可。而要恢复,则可按下任意键。
9.把它当作一个图像浏览器
hypersnap-dx除了可以对浏览的图片进行编辑外,还可以把它当成一个图像浏览器。选择“文件”→“打开”命令,打开一幅图像,然后使用快捷键pageup和pagedown向上和向下浏览图片。
10.抓取动态图像
选中“捕捉”→“捕捉设置”命令,在打开的“捕捉设置”窗口中选择“快速保存”选项卡,在设置框中选中相关选项,包括文件包及起始名称、终止名称、抓取间隙时间(0为不连续抓取)等参数,然后点下抓取桌面的热键后就可以将操作抓成bmp序列,再通过acdsee软件的rename series功能将之存为符合animator studio的格式,然后通过animator studio导入这些bmp序列,再存为avi文件即可实现动态抓取功能了。
11.自动启动hypersnap
既然hypersnap是我们经常要用到的抓取工具,那我们没有理由不让它随系统自动启动。选择“选项”→“启动和托盘区图标”命令,在打开的“启动和托盘区图标”设置窗口中选中“随着 windows 自动启动”、“总是最小化启动”和“在最小化时,仅显示托盘图标”选项,同时一并选中“单击”关闭窗口”[x] 按钮时并不退出”选项。这样,hypersnap-dx就会随系统启动,而且我们最小化或单击窗口的关闭按钮就会使hypersnap-dx最小化到系统托盘上,按下设置的热键即可抓取图片。
12.设置图像分辨率
在hypersnap-dx中允许我们设置图像分辨率:选择“设置”→“默认图像分辨率”命令,在打开的“图像分辨率”窗口中设置一下“水平分辨率”和“垂直分辨率”,并选中“用作将来捕捉屏幕图像的默认值”选项,以后抓取的图像就是我们设置的分辨率大小。
13.想抓哪块就抓哪块
大多数截图软件只能抓矩形、圆形、多边形窗口,但这还不够自由,如在网上见到一幅精美的建筑图片,只想选取其中一部分,这时hypersnap的自由捕捉(freehand)功能就派上用场了:单击“捕捉”→“自由捕捉”,然后就可以像使用photoshop中的套索选择工具一样,将所需要截取的部分一点点圈出来,再右击鼠标,选择“结束捕捉”就可以了。
小提示
★按住鼠标左键时,将会以点的方式记录鼠标的轨迹。如果在中间松开左键,则会以直线方式连接。如果欲抓取的图形边缘有规则直线,此技巧对于选择选区法很有用。
★在hypersnap截图中,单击并按住右键会弹出功能菜单,可以完成或取消捕捉,还可以在多种捕捉方式中进行切换。
14.批量抓取图像
以前版本的hypersnap一次只能抓一幅图像,后面捕捉的会自动覆盖前面捕捉的内容,让我们很不方便。但新版的hypersnap允许我们批量捕捉多幅图像,并可以自动把它们命名为snap01、snap02…齐排列,随便抓多少张都可以。
不过,这些文件都是临时性文件,如果你在未经编辑的情况下便全部关闭,那这些文件会被自动清除。所以我们最好让它们在抓取后自动保存起来:单击“捕捉”→“捕捉设置”,再选中“快速保存”,勾选“自动将每次捕捉的图像保存到文件中”,并设置文件名及保存的路径及起止数字即可。
15.异形窗口一次搞定
如今软件界面越做漂亮,再加上很多的软件都支持换肤操作,这样就会使窗口显得奇形怪状。有时抓取这样的窗口,会连同周围的部分也抓取下来,要把那奇形怪状的窗口从中抠出来,还真是费力不少。不过,大家只要选择“捕捉”→“窗口或控件”命令,hypersnap即可自动探测窗口的形状,并能够按照它的实际外形进行截取。如图3,就是笔者抓取下来的winamp 3换肤后的奇异窗口!
小提示
大家也可以把抓取下来的图片保存为支持透明背景的文件格式,如gif、png等。这对于制作网页的朋友相当有用。
16.给图片盖上自己的印章
有时出于宣传的需要,很想给自己的图片加上一个标注,比如注上作者名、截取日期、版权声明之类的信息。新版本的hypersnap可以满足我们的需要:
先打开一个图像,然后选择“图像”→“水印”(或单击工具栏上的水印工具),在弹出的窗口中单击“新建水印”命令打开“编辑水印”窗口。在“图像”选项卡里导入自己的卡通图片,勾选“水印中使用此图像”,并给此水印起一个名字即可把导入的卡通图片作为水印。
小提示
★在此选项卡中“来自选集”可以用选择工具选择当前捕捉图片,如无选择区域,则为整幅图片。
★在“文本”选项卡中也可以使用文字作为水印,同时也可以设置字体、颜色、排列方式等。另外,“日期”、“时间”、“文件”、“路径”和“用户”等为系统变量,会根据系统的变化而更改。单击“预览”按钮,则可以随时查看自己的水印效果。
★在“帧”选项卡中调整背景、边框及文本图像的位置。在“布置”中设置水印在图像中的位置和透明度。
水印建立后,大家只要单击工具栏“水印”工具旁的下拉按钮,再选择制作好的水印即可把它立即应用到当前图像中。
17.让水印自动烙到图像上
如果你希望把某个水印自动烙到所捕捉的图像上,请选择“图像”→“水印”命令,然后选择某个水印,再单击“编辑”命令,选择“布置”标签,再勾选“自动将此水印添加到所有捕捉的图像上”复选框即可。
18.定制按钮和菜单项
单击“显示”→“自定义”,在“自定义”窗口中可以将需要调整的按钮拖动到工具栏、菜单或浮动窗口中。同时,大家也可以直接单击菜单里的命令,并可以把它们拖动到任意位置。这样,不同的人可以轻松拥有自己的个性界面。
小提示
此操作与office xp中的操作很类似,大家可以很快上手。
19.激活快捷键
在hypersnap-dx中一定要先激活快捷键,才能在捕捉图像或者其他对象时使用快捷键。程序默认激活快捷键,如果没有激活快捷键,则在“选项”菜单中单击“激活快捷键”激活快捷键。
20.快捷键小结
缺省情况下快捷键定义如下:
ctrl+shift+f: 全屏幕截取。
ctrl+shift+v: 截取虚拟桌面。
ctrl+shift+w: 截取屏幕上鼠标所指窗口,闪烁的黑色矩形框内为抓取对象。
ctrl+shift+r: 截取特定区域,此时鼠标变为"+"光标,按住键拖动出一个矩形框,其中内容将被选中。
ctrl+shift+a: 截取当前活动窗口。
ctrl+shift+c: 截取不含边框的当前活动窗口。
ctrl+shift+p:截取最后指定区域。
f11: 重复最后一次截取。
shift +f11: 停止自动截取。
scoll lock: 对特殊环境中的图形截取。
f1: 帮助信息。
21.自定义快捷键
单击“显示”→“自定义”,在“自定义”窗口中单击“键盘”标签,则可以指定任何一个命令的快捷键。使用我们用起来更加顺手。
22.给名捕几个助手
我们可以将外部程序或文件加到hypersnap-dx的菜单栏里来。单击菜单“工具”→“定制工具”,单击“新建”,修改名称,再到“命令”处输入完整的路径和文件名即可(当然也可以直接单击后面的“浏览”按钮打开程序)。这样“工具”菜单里就多出启动相应程序的命令,单击即可启动相应程序,不需要再切换到桌面或开始菜单,相当给名捕多出一些助手,这对于我们这些经常需要在多个软件之间进行切换的用户来说,实在是非常贴心。
23.让hypersnap-dx打开多种文件
单击菜单“工具”→“定制工具”,单击“新建”,修改名称,再单击“命令”旁的“浏览”按钮,在浏览窗口中,默认支持的主要类型是exe、com、
pdf、bat等文件。其实,当选择为所有文件(*.*)时,除了文件夹和快捷方式外,其他文件基本上都支持,这样也可以在hypersnap中快速打开其他的文件(如doc、txt文件等)。
24.给图片添加阴影和边框
单击“图像”→“阴影”,在弹出的“阴影”窗口中调整阴影大小与深度。单击“图像”→“帧”,则可以为图像添加灰色边框。同时,要注意的是,加阴影、添边框不仅仅只是对图像有效,图像内选定的区域也可以加上阴影和边框。如果希望以后每幅图像都自动添加这些效果,则请在“阴影”窗口中勾选“自动添加此阴影到所有的捕捉”复选框即可。以后不需要时,再取消此项设置。
25.批量保存图像文件
单击“窗口”→“窗口”命令,在弹出的窗口中,可以配合ctrl、shift键选中多个窗口,然后单击“保存”按钮即可批量保存图像文件,这对于需要处理大量捕捉文件的用户来说,尤为有用。
26.使用ftp上传图片
选择“文件”→“上传到ftp服务器”命令则可以把图片上传到ftp服务器,便于你的图片共享。
27.自动打印捕捉的图像
在hypersnap-dx中可对捕捉的图像进行自动打印。在“捕捉”菜单,单击“捕捉设置”命令,打开“捕捉设置”对话框,然后单击“复制和打印”标签,选中“自动打印每次捕捉的图像”复选框,然后单击“确定”按钮,即可对所捕捉的图像进行自动打印。
28.直接捕捉图像到word文件
选择“捕捉”→“捕捉设置”命令,打开“捕捉设置”对话框,然后单击“复制和打印”标签,选中“将每次捕捉的图像都复制到剪贴板上”复选框,然后再选中“将每次捕捉的图像粘贴到”复选框,在其下的下拉框中选中当前正在编辑的word文件窗口。在hypersnap-dx中“将捕捉的图像直接粘贴到当前的word文件”这一功能非常的好用,在写文章时,如果需要一些插图,捕捉后立刻就将它粘贴到所编辑的word文件中。非常的方便,不像在word中操作比较麻烦,每插入一幅图片都要进行好几步操作。
29.自动保存捕捉文件
选择“捕捉”→“捕捉设置”命令,打开“捕捉设置”对话框,然后单击“快速保存”标签,选中“自动将每次捕捉的图像保存到文件中”复选框,程序将捕捉到的图像自动保存到一个文件夹。由于windows的剪贴板只能存放一幅图像,所以只有最后一幅被截取的图像才会保留在剪贴板中。单击“更改”按钮可以更改自动保存文件的路径。选中“每次捕捉都提示输入文件名”复选框,则在每一次捕捉完成后都要提示你输入要保存的文件名。
30.设置剪裁图像和比例的大小
选择“捕捉”→“捕捉设置”命令,打开“捕捉设置”对话框,然后单击“剪裁和比例”可以设置剪切图像的区域或大小。
31.使用图像菜单
hypersnap-dx不仅仅是一个抓图软件,同时它也是一个非常好的图像处理软件,它还在“图像”菜单下提供了剪裁、更改分辨率、比例缩放、自动修剪、镜像、旋转、修剪、马赛克、浮雕和尖锐等功能。
32.使用颜色菜单
在hypersnap-dx的“颜色”菜单下提供了许多比较实用的功能,如灰度、统计颜色、反转彩色和亮度等。其中“统计颜色”命令可以统计一幅图像中有多少颜色。而“灰度”命令则可以把彩色图像转为灰度图像。通过“饱和度”命令可以调整图像的饱和度,从而得到一个比较清晰的图像。
33.注册文件类型
在“选项”菜单下单击“注册文件类型”命令,打开“注册文件类型”对话框(图28),在该对话框中选择要用hypersnap-dx打开的文件类型。hypersnap-dx中提供了八种类型的图片格式,选中其图片格式后,以后使用该图片时,hypersnap-dx作为其默认查看器。如果要在同一窗口中打开每个文件,则选中“在同一窗口中打开每个文件”,否则选中“使用新窗口打开新文件”。最后单击“确定”按钮,使注册文件类型生效。注册了图片的类型,在“资源管理器”中直接双击图像文件,即可进行浏览。
34.在捕捉的图像上添加文字
有些时候需要在捕捉的图像上添加一些说明文字,hypersnap-dx中也提供了这一功能:抓取图像后,单击左边绘图工具栏上的大写字母a,在图像上拖动鼠标,选择合适的矩形区域,然后释放鼠标,在弹出的文本工具对话框中输入文字。然后在“文本工具”对话框中单击“字体/颜色”按钮可以设置字体的颜色和字体的样式。同样,在hypersnap-dx中也提供了文字的左对齐、居中和右对齐,其操作跟在word中的操作相同。
小提示
★如果没有看见该工具栏,则可以在显示菜单下,单击“绘图工具栏”,在hypersnap-dx窗口上显示绘图工具箱。
★在“文本工具”对话框中输入文字后,不关闭该对话框,将鼠标放到已输入文字的图片上,然后使用鼠标移动文字框,可以调整输入文字到一个最恰当的位置。
35.直接从外部设备中获得图像
通过“文件”→“获取”命令可以直接从扫描仪或数码相机获得图像。
36.转换文件格式
先打开一个图像文件,再选择“文件”→“另存为”命令即可把打开的文件转换为另一种文件格式。
37.把图片设置为墙纸
选择“文件”→“打开”命令打开一幅图片,再选择“文件”→“设为墙纸”命令,打开“设为墙纸”对话框,可以在其中选择图像在桌面上的显示方式,如果要使图像在桌面上居中显示,则单击“居中”即可。如果对所设置的墙纸不满意,可以单击“去除墙纸”按钮,将所设置的墙纸去除掉。通过此法,我们可以把游戏中比较酷的画面直接抓下来设为桌面的墙纸,很好用。
38.捕捉hypersnap-dx自身
hypersnap-dx 虽然能捕捉别的软件画面,但不能截取自身,因为它截取的时候,都是把自身隐藏后,去截取别的软件,所以自身隐藏了,也就捕捉不到了。要截取它,方法一是同时开两个窗口,然后利用一个窗口对另一个窗口进行捕捉。在使用快捷键时需要在不捕捉的窗口中取消激活快捷键,而另一个则激活快捷键。
方法二是使用快捷键“print screen sys rq”能够将现在正在活动的窗口截取下来,这也包括它自身,这或许是截取它自己的惟一办法,但这个快捷键有很多的好处,任何活动的画面它都可以及时地截取下来,很方便,要多用。
39.捕捉多级菜单
在有些特殊情况下需要捕捉多级菜单,比较原始得捕捉方法是使用键盘快捷键“print screen”将整个画面都捕捉到剪贴板上,然后再进行一些手工的编辑。这样使用起来比较麻烦,而在hypersnap-dx中就直接提供了多级菜单的捕捉。多级菜单捕捉的缺省快捷键是“ctrl+shift+m”,下面我们以捕捉winamp的多级菜单为例来说明如何捕捉多级菜单。运行hypersnap-dx,在选项菜单上选择“激活快捷键”命令,然后最小化程序hypersnap-dx。在winamp窗口上展开多级窗口到最低级的菜单,然后按下快捷键“ctrl+shift+m”,使用鼠标单击第一级菜单,接着单击第二级菜单,然后再单击最后一级菜单,最后单击回车键,就将图像捕捉下来了。
40.放大图像的注意点
hypersnap-dx 虽然能将图像放大,但它不具备自动填充的功能,当图像放大 200% 以上时,就会产生明显的失真,建议大家最好不要过分运用放大功能,当然缩小图像是没有问题的。
41.抓取灰度图
一般我们抓图都是抓取真彩图片,但很多报刊杂志在排版时采用的是灰度图,在hypersnap中抓到图后,在存盘前,注意选择一下“颜色”→“灰度”命令即可把当前图片转为灰度图,再存盘即可。
小提示
当然,如果编辑明确规定需要真彩图片,那可千万不要转化了
1.office组件把pdf转成word:
可以利用office 2003中的microsoft office document imaging组件来实现
pdf转word文档,也就是说利用word来完成该任务。方法如下:
用adobe reader打开想转换的pdf文件,接下来选择“文件→打印”菜单,在打开的“打印”窗口中将“打印机”栏中的名称设置为“microsoft office document image writer”,确认后将该pdf文件输出为mdi格式的虚拟打印文件。
注:如果没有找到“microsoft office document image writer”项,使用office 2003安装光盘中的“添加/删除组件”更新安装该组件,选中“office 工具 microsoft draw转换器”。
然后,运行“microsoft office document imaging”,并利用它来打开刚才保存的mdi文件,选择“工具→将文本发送到word”菜单,在弹出的窗口中选中“在输出时保持图片版式不变”,确认后系统会提示“必须在执行此操作前重新运行ocr。这可能需要一些时间”,不管它,确认即可。
注:对pdf转doc的识别率不是特别完美,转换后会丢失原来的排版格式,所以转换后还需要手工对其进行排版和校对工作。
以上仅在word2003中可用,其他版本没有microsoft office document image writer。
2.利用第三方工具软件:
scansoft pdf converter for microsoft word
下载地址:
http://www.mydown.com/soft/245/245551.html
3.asp.net实现将word转换pdf格式:
一:必备工具
安装必须的工具ms vs.net2003,ms office2003,adobe acrobat 7.0 professional,postscript.exe,gs811w32.exe
ms vs.net2003的安装不说明
ms office2003的安装不说明
adobe acrobat 7.0 professional安装说明
运行setup.exe文件,出现输入序列号,就运行注册机,用鼠标在第一行刷下就可以看见序列号,复制粘贴到adobe acrobat 7.0 professional安装程序对话框,安装到最后出现注册时,点击phone...将安装程序中显示的第二行序列号(第一行是刚才注册机生成的序列号)复制粘贴到注册机的第二行,点击右边的按钮,再用鼠标刷第三行授权号就出来了,将其复制粘贴到安装程序的最后一行,完成安装注册!
postscript.exe默认安装就可以了,它是一个pdf转换时所需要的脚本
gs811w32.exe默认安装就可以,它其实是个pdf虚拟打印机的驱动
二:配置虚拟打印机
进入windows的控制面板,进入打印机,点击"添加打印机"图标.在安装对话框上"按一步",出现选择打印机时,在制造商一栏中选择"generic",在打印机一栏中,选择"ms publisher color printer",然后一路按下一步,知道安装结束.
三:开始写第一个程序(脚本程序)
为什么要使用脚本程序进行转换呢,其实实际测试过程中,使用pdf distiller的对象引用到c#后,转换成功,但整个pdf distiller对象不能释放,第二次再转换时,就发生了错误,故此处使用脚本程序实现转换.这样我们只要在c#的程序中调用脚本程序就可以实现word到pdf的转换。
宿主脚本文件名:convertdoc2pdf.js
脚本文件内容:
var files = wscript.arguments;
var fso = new activexobject("scripting.filesystemobject");
var word = new activexobject("word.application");
var pdf = new activexobject("pdfdistiller.pdfdistiller.1");
word.activeprinter = "ms publisher color printer";
//files(0) 为word文档文件名
//files(1) 为,转换后需要保存的路径
//调用fso.getbasename(files(0))后,为无路径,无扩展名,的文件名
//files.length为文件参数的个数,使用循环可以支持多个word文档的转换
var docfile = files(0);
var psfile = files(1) + fso.getbasename(files(0)) + ".ps";
var pdffile = files(1) + fso.getbasename(files(0)) + ".pdf";
var logfile = files(1) + fso.getbasename(files(0)) + ".log";
try{
var doc = word.documents.open(docfile);
//word文件转成ps文件;
word.printout(false, false, 0, psfile);
doc.close(0);
//ps文件转成pdf文件;
pdf.filetopdf(psfile,pdffile,"");
fso.getfile(psfile).delete();//删除ps脚本文件
fso.getfile(logfile).delete();//删除转换的日志文件
word.quit();
wscript.echo("isuccess");//成功
wscript.quit(0);
}
catch(x)
{
word.quit();
wscript.echo("isfail");//失败
wscript.quit(0);
}
然后测试该脚本程序
启动ms-dos,输入如下命令:
c:\>cscript //nologo c:\convertdoc2pdf.js c:\test.doc c:\
说明:
运行成功后将看到test.pdf文档了
c:\test.doc参数对应的是脚本程序中的files(0)
c:\参数对应的是脚本程序中的files(1)
你可以安照该脚本改写成,支持多个参数,使用for循环,一次转换多个word文档,此处没有使用多个文件转换功能,是考虑到,该段脚本放在c#的线程中执行,这样一来也可以转换多个word文档.
四:使用c#调用convertdoc2pdf.js脚本
新建一个c#的windows应用程序,添加一个按钮button1
添加一个函数,函数名startconvertpdf
public void startconvertpdf()
{
process proc = new process();
proc.startinfo.filename = "cmd.exe";
proc.startinfo.workingdirectory = @"c:\";
proc.startinfo.createnowindow = true;
proc.startinfo.useshellexecute = false;
proc.startinfo.redirectstandardinput = true; //输入重定向
proc.start();
proc.standardinput.writeline(@"cscript //nologo c:\convertdoc2pdf.js c:\test.doc c:\");
proc.standardinput.writeline("exit");
proc.waitforexit();
}
然后在按钮的click事件中添加调用线程的代码
private void button1_click(object sender, system.eventargs e)
{
//定义线程序
thread thconvert = new thread(new threadstart(startconvertdata));
thconvert.start();
}
注意:在测试上面的c#程序时,必须添加如下命名空间
using system.diagnostics;
using system.threading;
五:健壮的c#调用代码(实际考虑,可放在b/s系统中)
完成第4步的c#测试后,细心的读者,可能看到一点问题,那就是如何得到脚本运行后输出的结果,如何给线程中调用的startconvertdata方法传递参数
1:传递参数,此话说来也可用一篇教程告诉大家线程中方法如何来传递参数,现在就讲一个方案,此种方案很多,我采用一个类,初始化这个类,然后调用该类的方法作为线程执行的方法
2:得到脚本的输出结果,使用process对象的输出重定向,就是说改变输出方向,使脚本不输出到控制台(ms-dos窗口),而是重定向输出到c#程序中,并采用线程的异步回调方法,显示脚本运行结果。
添加一个新类,类名为topdf
using system;
using system.diagnostics;
using system.componentmodel;
using system.windows.forms;
using system.data;
namespace doc2pdf
{
public class topdf
{
private string strword = "";//此处的word文件不含路径
private string spath = "";
public string sexecresult = "";
public bool bsuccess = false;
public topdf(string sparamword,string sparampath)
{
strword = sparamword;
spath = sparampath;
}
public void startconvertpdf()
{
process proc = new process();
proc.startinfo.filename = "cmd.exe";
proc.startinfo.workingdirectory = spath;
proc.startinfo.createnowindow = true;
proc.startinfo.useshellexecute = false;
proc.startinfo.redirectstandardinput = true;//标准输入重定向
proc.startinfo.redirectstandardoutput = true;//标准输出重定向
proc.start();
proc.standardinput.writeline("cscript //nologo "+spath+"convertdoc2pdf.js "+spath+strword+ " "+spath);
proc.standardinput.writeline("exit");
sexecresult = proc.standardoutput.readtoend();//返回脚本执行的结果
proc.waitforexit();
proc.close();
}
public void endconvertpdf(system.iasyncresult ar)//ar参数必须写,是线程执行完成后的回调函数
{
if(sexecresult.indexof("isuccess")!=-1)bsuccess=true;
else if(sexecresult.indexof("isfail")!=-1)bsuccess=false;
//如果放在b/s系统,你可以在此处写数据库,是成功还是失败,并用一个webservice程序不断检查数据库,此webservice程序不放在该回调用函数中
//如果放在c/s系统,回调函数可以不放在类中,以便在窗体程序中调用结果
}
}
}
改写原来的button1_click事件中的代码
private void button1_click(object sender, system.eventargs e)
{
topdf my2pdf = new topdf("test.doc","c:\\");
threadstart thstartconvert = new threadstart(my2pdf.startconvertpdf); //开始异步调用线程
thstartconvert.begininvoke(new asynccallback(my2pdf.endconvertpdf),null);//设置异步线程的回调函数
//如果需要转换多个word,你可以用循环
//如果是b/s系统,可以将本段代码放在aspx中,并结合客户端的无刷新显示数据的技术,不断访问webservice程序,以确定pdf是否转换成功或失败
}
六:编写更加健壮的c#调用代码(实际考虑,可放在windows的服务程序中)
实际使用时,由于转化pdf时cpu的占用率很高,考虑只在同一时间转换一篇word文档,放弃异步线程的回调函数的使用,考虑一个windows的服务程序。
写一个函数checkdata2convert(),不断的检查没有转换的word文档,并使用循环调用topdf类中执行转换方法startconvertpdf
//以下给出,泛代码,用户按照自己的需求,填写完整即可
//bool bstart为全局变量,控制循环的进入与退出
//例:18:30开始检查并转换,那么18:30时,bstart=true;并启动转换线程
//6:30停止转换线程,bstart=fasle;
private void checkdata2convert()
{
//检查指定目录下的没有转换的word文档,你同样可以检查数据库中记录的没有转换的word文档
string spath = system.threading.thread.getdomain().basedirectory; //当前的路径
while(bstart)
{
int ifilecount = checkword(); //checkword为一个方法,检查当前没有转换的word文档,返回没有转换的文件数,该方法的代码由读者自己编写
for(int i=0;i<ifilecount;i++)
{
string sword = getwordfilename(i) //getwordfilename为一个方法,返回一个不带路径的word文件名,该方法的代码由读者自己编写
//topdf类中的startconvertpdf()方法使用的是不带路径的word文件名
topdf my2pdf = new topdf(sword ,spath);
my2pdf.startconvertpdf();
if(my2pdf.sexecresult.indexof("isuccess")!=-1)
{
//成功,写日志,或回写数据库
}
else if(my2pdf.sexecresult.indexof("isfail")!=-1)
{
//失败,写日志,或回写数据库
}
}
if(!bstart)break;
thread.sleep(1000);
}
}
然后在服务的开始事件中,启动线程
protected override void onstart(string[] args)
{
//可以使用一个开始定时器,检查是否到开始时间,时间一到,就开始执行线程,此处的开始执行线程可以放在开始定时事件中
//可以使用一个结束定时器,检查是否到结束时间,时间一到,就结束线程,结束线程的代码可以放在结束定时事件中
//注意:应该使用组件中的定时器,而不是windows的forms中的定时器
//该定时器的类名为system.timers.timer,千万别搞错,不然执行不会正常的
bstart = true;
thread thconvert = new thread(new threadstart(startconvertdata));
thconvert.start();
}
然后在服务的结束事件中,设置停止线程的标识bstart= false
protected override void onstop()
{
bstart = false;
//为何次处不停止线程呢,因为考虑到,现在线程正在转换word文档,但没有结束,所以只设置停止标识,转换完成后,线程也执行结束了.
}
安装一个adobe acrobat 软件,打开excel后,在打印设置项:名称设置为adobe pdf格式就行了,打印出来后就是pdf格式文档,你在ps里面可以打开,cdr也可以打开,非常方便,随意放大,300分辩率可以放到1.2m。