FlashPaper 使用经验之谈
李志海 20101229 QQ:76855049
CSDN:资源下载地址:http://lizhihai_99.download.csdn.net/
http://download.csdn.net/source/2947794
一、目的
我的这篇文章侧重点是如何很好的应用FlashPaper,不是告诉大家FlashPaper是什么。
二、FlashPaper介绍(从百科里面摘的)
FlashPaper 是Macromedia推出的一款电子文档类工具,通过使用本程序,你可以将需要的文档通过简单的设置转换为SWF格式的Flash动画,原文档的排版样式和字体显示不会受到影响,这样做的好处是不论对方的平台和语言版本是什么,都可以自由的观看你所制作的电子文档动画,并可以进行自由的放大,缩小和打印,翻页等操作,对文档的传播非常有好处,而且由于Flash动画的普及性和强大的可调节性,可以让你制作出非常漂亮的专业电子文档!
三、所需软件
l Windows 系列操作系统
l FlashPaper2.2 绿色版就行。网上有,或者到我的csdn上下载
l Office 2010 建议装最新版本的,我以前装的是2007感觉不是很好。
l AdobeReader 最新版本
四、转化程序
转化程序是通过cmd调用的FlashPrinter.exe这个命令执行的。转化程序注意几点:
l 把要转化的文件放入队列,保证程序一个一个的执行转化。
l 转化完成后让程序延迟一会,再执行下一个
主要代码如下:
String tmpOutFile = outFile.getPath().concat(File.separator)
.concat(
inFile.getName()
.replaceAll("[.]{1}.*$", ".swf"));
fileInst = new File(tmpOutFile);
List<String> commandArray = new ArrayList<String>();
commandArray.add(defaultCommand);
commandArray.add(inFile.getPath());
commandArray.add("-o");
commandArray.add(tmpOutFile);
ProcessBuilder pbObj = new ProcessBuilder();
pbObj.command(commandArray);
Map<String, String> envMap = pbObj.environment();
envMap.clear();
envMap.putAll(System.getenv());
pbObj.directory(outFile);
pbObj.redirectErrorStream(true);
boolean b = false;
Process proObj = null;
try {
proObj = pbObj.start();
final InputStream ins = proObj.getInputStream();
final ByteBuffer byteBuffer = ByteBuffer.allocate(1024);
Thread th = new Thread() {
public void run() {
ReadableByteChannel rbcObj = Channels
.newChannel(ins);
try {
while (rbcObj.read(byteBuffer) != -1) {
byteBuffer.flip();
logger.info(java.nio.charset.Charset
.defaultCharset()
.decode(byteBuffer));
byteBuffer.clear();
}
} catch (IOException e) {
logger.error(e);
}
}
};
th.setDaemon(true);
th.start();
try {
proObj.waitFor();
b = true;
} catch (InterruptedException e) {
logger.error(e);
}
// 休息
Thread.sleep(30 * 1000);
} catch (Exception e) {
logger.error("执行出错了");
logger.error(e);
} finally {
if (proObj != null) {
proObj.destroy();
}
ManagerThread.getInstance().doNext(b, resFileConvert);
}
注意:别人有写好的FlashPaper4Java可以参考一下。这个网上也有,或到我的csdn上下载。
五、进程实护
用FlashPaper做转化一定要注意进程实护问题。因为FlashPaper用的是打印原理。同一台机器,同一时间只能有一个进程在执行。其它的只能是等待。另外在打印的时候可能会出现“卡纸”问题,需要程序去实时监控。
我的进程实护程序是用c#写的,每隔一段时间去看进程运行时间是不是超过了你设定的时间,如果超过了,就杀掉。主要代码如下:
foreach (Process print in Process.GetProcessesByName("FlashPrinter"))
{
if (((TimeSpan)(DateTime.Now - print.StartTime)).TotalMinutes > 3)
{
print.Kill();
}
}
进程实护程序用c/s程序写。写完后把它加到启动项里,每次重启机就不用关了。
六、Flex加载FlashPaper
上面是说如何把文件转化为 swf的。下面我们来说如何把文件展现出来。我目前用的是方法一。
方法一:SWFLoader加载,加载完后改变它的大小。
如果直接用SWFLoader加载的话,加载出的界面很小,不会按父容器的大小去自动变化。所以要给它加一个监听器,加载完后再去改变它的大小。如下:
<mx:SWFLoader id="swfLoader" width="700" height="520" bottom="10" top="10" left="10" right="10"/>
Private function init():void{
swfLoader.addEventListener(Event.INIT, initHandle);
}
private function initHandle(e : Event) : void {
swfLoader.getChildAt(0).width=pWidth;
swfLoader.getChildAt(0).height=pHeight;
}
优点:打开多个浏览器都不会影响其正常显示。与方法二的区别
缺点:文件会有点变形。
方法一:SWFLoader加载,通过LocationConnction与FlashPaper进行通信,调用其内部方法,改变其大小。
优点:不能同时打开多个文件,因为LocationConnction通道已经被第一占用了。
缺点:文件不会变形。
七、破解FlashPaper的自带的商标
FlashPaper2.2/Interface文件夹下有DefaultViewer2.swf文件,把其替换成自己的皮肤就可以。
八、.NET程序(运行在IIS中)会遇到权限问题:
解决办法是,修改IIS的程序池的运行用户的权限。
1.把networkservice这个用户加到管理员组
2.把IIS的运行账户换成你的管理员账户。如下图:
注明:关于第五和第八条是我的一个网名叫“星”的朋友提供的解决思路,在这里非常感谢他。
现在我的应用程序很稳定,如果大家按照上面的思路去做会很快的应用起来。我在应用的过程中遇到了很多困难,写这篇文章就是为了让朋友们少走弯路。
FlashPaper 使用经验之谈的更多相关文章
- 【经验之谈】Git使用之TortoiseGit配置VS详解
前言 上一篇<[经验之谈]Git使用之Windows环境下配置>: 安装 配置和使用 后记 关于vs中使用git网上的教程大家也可以找到,我当时配置的时候也是按照网上找的教程一步一步来的, ...
- 【经验之谈】Git使用之Windows环境下配置
前言 安装 配置 关于git使用的几个问题 后记 关于代码托管,以前用过vss和svn,看博客或论坛的时候,经常有人提到github,有很多著名的开源软件都托管在github,想来肯定不错(莫笑),当 ...
- 【经验之谈】Windows环境下配置WordPress
前言 wordpress全球著名的开放博客平台,拥有成千上万个各式插件和不计其数的主题模板样式,使用php和mysql搭建,下面说下载windows环境下配置wordpress,经验之谈. 安装 关于 ...
- 利用FlashPaper在web页面中显示PDF文件(兼容各浏览器)
应项目需求要把PDF内嵌到网页中显示,其中有了很多办法,比如用<embed/>元素放入PDF文件,但是效果不理想,浏览器兼容不理想,在ie9/8(其他版本没有测试)显示会提示下载pdf文件 ...
- 定制个性化的FlashPaper生成的文件
1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵 ...
- 基于FlashPaper的文档播放器
本文主要讨论.描述了使用Adobe公司的Flex与FlashPaper产品完成对发布到网上的文档资料进行只读控制,也就是说只允许浏览操作.对下载.打印进行控制. FlashPaper FlashPap ...
- 利用FlashPaper实现类似百度文库功能
最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求. 首先讲下思路: 1>安装FlashPaper: 2>利用java代码将 ...
- 不同版本PHP之间cURL的区别(-经验之谈)
之前在做一个采集的工具,实现采集回来的文章,图片保存起来.文章内容是保存在数据库,图片是先需要上传到图片服务器,再返回图片地址,替换掉文章的图片地址. 问题来了:都能成功采集都东西,但是,本地测试是正 ...
- FlashPaper组件——api
属性摘要 属性 说明 documentPath:String FlashPaper文件的路径. borderThickness:Number 边框宽度. borderColor:String 边框颜色 ...
随机推荐
- JS面向对象组件(三)--面向对象中的常用属性和方法
图片的由来看下面: 1.hasOwnProperty:看是不是对象自身下面的属性 var arr = []; arr.num = ; Array.prototype.num2 = ; //所有的数组对 ...
- 转:移动开发中一些bug及解决方案
网页开发要面对各种各样的浏览器,让人很头疼,而移动开发中,你不但要面对浏览器,还要面对各种版本的手机,iOS好一点,而安卓就五花八门了,你可能在开发中也被它们折磨过,或者正在被它们折磨,我在这里说几个 ...
- 删除binlog的方法
不知道你有没有为mysql的binlog占用大量磁盘感到无奈,my.cnf里binlog的size可以设置多大做分割,但没有看到删除的配置,在mysql里show了一下variables, mysql ...
- mysql的text类型长度问题
在我的概念中,mysql中的text字段应该是没有长度限制的,但是今天事实告诉我,text类型的长度是有限制的.其中mysql的text类型有64K长度限制的,MEDIUMTEXT中型是2G,LONG ...
- myeclipse10添加jQuery自动提示
首先先要在装上spket插件,这个网上有好多教程,我就不详细说了,主要说一下后面的设置,因为我发现我按照网上的装完也设置完没办法使用自动提示功能,以下是我根据前辈的经验然后自己摸索出来的: 选中所建的 ...
- [转] C# 键盘中的按键对应的KeyValue
原文C#KeyValue对应键盘 首先先看一下什么情况下需要对按键进行识别: KeyPress事件响应函数中,有KeyPressEventArgs, 对应于e.KeyChar; KeyDown事件响应 ...
- 防范 DDoS 攻击的 15 个方法
为了对抗 DDoS(分布式拒绝服务)攻击,你需要对攻击时发生了什么有一个清楚的理解. 简单来讲,DDoS 攻击可以通过利用服务器上的漏洞,或者消耗服务器上的资源(例如 内存.硬盘等等)来达到目的.DD ...
- 处理 JSON null 和空数组及对象
描述了对 JSON 数据中使用的 null 和空数组及对象的处理. JSON 数据具有 null 和空数组及对象的概念.此部分说明其中每个概念如何映射到 null 和未设置的数据对象概念. Null ...
- yii中设置提示成功信息,错误提示信息,警告信息
方法一: <?phpYii::app()->user->setFlash(‘success’,”Data saved!”); 设置键值名为success的临时信息.在getFlash ...
- 用DzzOffice管理阿里云OSS
在DzzOffice分两种方式管理阿里云OSS 1.把阿里云oss作为多人或企业的共享网盘使用. 2.接入个人的阿里云oss管理,可同时管理多个bucket,多个bucket之间可以互传文件. 下面先 ...