打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
FlashPaper的文档转化为swf文件

FlashPaper的文档转化为swf文件

出处:http://www.cnblogs.com/tanjunmail/archive/2010/10/18/1855162.html

哥在一个制造业上班,图纸管理是老大难。从去年年底开始,就一直在琢磨着FLASHPAPER如何从服务端打印。看到网上许多哥们有同样经历,斗胆拿出来分享经验。
整体思路:
一) 客户端上传上来文件。
二) 服务端调用flashpaper
实际上进程有:cmd.exe|admimistrator 文件默认打开程序|network service flashprinter.exe|network service。出现顺序亦按此顺序。
首先,打开CMD,执行命令
接着,默认程序解析文件
最后,打印机打印文件
此处关键点详见第1部分
三) 服务端打印出.swf文件。
此处关键点详见第3部分
四) 由于.swf文件生成耗时较长,客户端需不断检查该文件是否生成,若生成,则打开,否则3S后再检查。检查方法详见第4部分。
------------------------------------------------------------------------------------------------------------------------------------------------
关键点:
1、程序的调用:
关键是在服务端生成一个temp文件,从服务端调用CMD执行此文件,此文件内容为命令。避开权限的限制。
请注意:建议用.net环境。

FlashPaper是一个虚拟打印机,可将word文件转化成swf格式文件(.doc .xls .txt .pdf等文件都可以正常生成SWF格式),用它可以在ASP.NET页面中实现类似百度文库或豆丁文档的在线文件查看效果。

1.代码文件

调用FlashPaper的.aspx文件中代码如下:(首先请确认你的FlashPrinter.exe可以运行)

/// <summary>
/// 执行进程
/// </summary>
/// <param name="sourceFileName">输入.doc文件路径</param>
/// <param name="outPutFileName">输出.swf文件路径</param>
public void ProcessExec(string sourceFileName, string outPutFileName)
{
if (!string.IsNullOrEmpty(FlashPaper))
{
//FlashPaper文件路径 可自行设置
string flashPrinter = FlashPaper;

Process pc = new Process();
pc.StartInfo.FileName = flashPrinter;//程序路径和名称
pc.StartInfo.Arguments = string.Format("{0} {1} -o {2}", flashPrinter, sourceFileName, outPutFileName);

pc.StartInfo.CreateNoWindow = true;//不创建窗口
pc.StartInfo.UseShellExecute = false;//不使用系统外壳启动
pc.StartInfo.RedirectStandardInput = false; //不重定向输入
pc.StartInfo.RedirectStandardOutput = false; //不重定向输出
pc.StartInfo.RedirectStandardError = true;
pc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;


try
{
pc.Start();

while (!pc.HasExited)
{
continue;
}
pc.WaitForExit();
pc.Close();
pc.Dispose();

//System.Threading.Thread.Sleep(4000);
MessageBox.Show("转换成功!");
}
catch (Exception ex)
{
throw ex;
}
}
}

2.FlashPaper在IIS6.0下不能运行的解决办法,是以下三者之一,反正我三个全试过就好使了,不清楚是哪一个:

1.如果不能正常操作,是权限的问题,以iis 为例,请把IUSR_xxx授权到读写的文件夹
2.在IIS的应用程序池中的标识预定义账户修改成本地系统,就拥有了全部的权限,就可以实现了
3.还碰到权限问题,简单的解决方法如下: 请把Network Service账号添加至administrators组,并重启iis admin服务。另外说一句,如果找不到Network Service账号,请找IIS_WPG组,把该组加到admin,这其实是一样的,该组下的NT AUTHORITY\NETWORK SERVICE就是Network Service。

切记重启IIS,最好重启服务器。。。



2、系统环境的配置
这里可以说是全文的核心了吧,很多人都是在这里卡住壳了。
首先,你下的flashpaper 原版的不如绿色的好用...汗!!
给个网址 :
http://down.orsoon.com/%CD%BC%CE%C4%B4%A6%C0%ED/Flash%20%C0%B9/0512/FlashPaper.rar
flashpaper绿色版。安装方法里边有。
曾经装了正版的flashpaper,提示flash.ocx不能注册。
请用360卸载了,删注册表。然后装这个盗版的,呵呵。
其次,关于权限的配置。
估计95%的人郁闷都是在这里了。上边的程序写的再正确,也不能正常调用。
解决办法异常简单,请把network service 账户加入administrators组。
没办法,就是这么恐怖。确实比较危险。
修改后别忘重启IIS。
(我在2003下是network service,但是据说XP的好像是 aspnet 。不过给大家个判断方法,从网页上调用下flashpaper,别给参数,就让他在哪儿吭哧吭哧的卡着,这样才能看清楚任务管理器里账户是谁,那么就把这个账户添加到administrators组。)
3、读取生成的SWF文件。
由于.swf文件生成耗时较长,客户端需不断检查该文件是否生成。
像tXt、图片等,生成比较快,越1s,但是WORD、PDF等就比较慢,曾经有章DWG图,原图60M,我的XEON服务器足足编译了半小时。
这里关键是这红色代码。意思是,判断服务端反馈时间,如果反馈时间太长,说明.swf还没生成。
<div align="center">
请耐心等待<span id="BackSecs" style="color: #FF0000;"></span>
</div>
<div align="center">
<img src="img/wait.gif" width="70" /></div>
<script language="javascript">
//检测URL是否存在,不存在则延迟并处理,生成文件后告警并跳转。
function countDown(Secs) {
BackSecs.innerText=Secs;
if(Secs>0) {
setTimeout("countDown("+Secs+"-1)",1000);

}
else {
getURL("swf/<%= url %>.swf")
//
}
}
function getURL(url)
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.open("GET",url,false);
xmlhttp.send();
if (xmlhttp.readyState==4){
if(xmlhttp.Status==200){
alert("解析成功");
window.location="flash.asp?url="+escape('<%=url%>');
} else
countDown(3);
}
}
//user like this:
getURL("swf/<%= url %>.swf")
</script>
4、模板问题。
flashpaper好就好在兼容格式多,特别是office系列。但是打印出来的文件都带个flashpaper图标,还有打印的按键。很不爽
但是,这是可以改变的。
flashpaper安装目录下有个Interface文件夹,里边的文件就是模板-DefaultViewer.swf
每当程序从文件获取信息,形成帧后,外边套的就是这个DefaultViewer.swf。
其作用就相当于瓶子,里边的水就是内容。
不想要图标和按键直接改变模板即可
修改方法
1)反编译DefaultViewer.swf。
推荐工具:硕思闪客精灵
2)使用方法网上一大堆,在反编译出来的fla上,直接删,把什么图标的能换就换,不爽的按钮想删就删。
3)生成新的DefaultViewer.swf,替换原来的
这样,我们局可以定制我们自己喜欢的界面了。
——————————————————————————————————————————————————————————
进阶讨论:
1、DefaultViewer.swf里边没有旋转按钮,不爽。哪位达人帮忙做个
2、DefaultViewer.swf全屏只是网页全屏,不爽。哪位达人帮忙做个像土豆网那样的。
3、不知道有没有能播放swf的SWF。这样看的人只能下下来外边播放的swf,里边的却下不下来。

..............................................................................................................................................................
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
......................................................................................................................................................
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

FlashPaper是将其他格式(如txt,doc,pdf,jpg,xls)的文档转化为swf文件的工具;
这是在web应用程序/网站中调用FlashPaper.exe转化文件的详细可重复配置。

在此之前从网上找了很多FlashPaper的配置,几乎都没有提出完整的可重复配置的方法。

该配置是在win server 2003,IIS6多次测试成功的,其他环境是否可行未知。

基本软件
1. FlashPaper2.2程序目录
2. 安装Flash player 10.2.152.32 (activex和plugin两个安装程序)
3. 初始化:运行FlashPaper2.2程序目录中的“初始化.bat”
4. 如果转pdf须安装Adobe Reader 9.1或9.2
5. 如果转doc须安装Word 2007
配置方法
1. 检查“Print Spooler”进程开启;
2. 检查“Macromedia FlashPaper”打印机安装正确;
3. 通过本地用户和组管理,将Network service用户(须查找该用户)添加到administrators组中, 执行命令iisrset重启iis;
4. Word必须是2007,2003需要在DCOM中设置权限,并且不一定能转换成功;
如果仍有问题可能需检查:
1. 转换文档读取和保存的文件夹的读写权限;
2. 打印机权限;
3. Aspnet用户添加到读写权限;
4. 远程打开word等软件的权限;
关于模板
Flashpaper 安装目录下有个Interface文件夹,里边的DefaultViewer2.swf就是模板文件。可反编译DefaultViewer2.swf。生成新的DefaultViewer.swf,替换原来的。比如去掉某个功能,去掉或替换logo等;
测试方法
1. 首先保证将文件直接拖到FlashPrinter.exe可以正确转化,此时可确定FlashPaper本身的配置已经正确;
2. .txt,.doc,.pdf要分别测试,一个格式的能转换并不一定其他格式可以,与相应用到的应用程序是否安装及访问权限有关

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
asp.net项目中 利用flashpaper实现百度文库效果
php仿百度文库,豆丁在线文档(word,excel,ppt转flash)
几款虚拟打印机的奇妙用途3
分享一个软件,将文件转换成swf格式(flash)
不可思议 文档变成SWF
Word转换为pdf文件
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服