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的运行账户换成你的管理员账户。如下图:

注明:关于第五和第八条是我的一个网名叫“星”的朋友提供的解决思路,在这里非常感谢他。

现在我的应用程序很稳定,如果大家按照上面的思路去做会很快的应用起来。我在应用的过程中遇到了很多困难,写这篇文章就是为了让朋友们少走弯路。

时间: 2024-10-11 04:30:55

FlashPaper 使用经验之谈的相关文章

【总结】Effective java经验之谈,类与接口

转载请注明出处:http://blog.csdn.NET/supera_li/article/details/44940563 Effective Java系列 1.Effective java经验之谈,创建和销毁对象 2.Effective java经验之谈,泛型 3.Effective java经验之谈,类与接口 4.Effective java经验之谈,通用方法 5.Effective java经验之谈,枚举,注解,方法,通用设计,异常 6.Effective java经验之谈,并发编程

项目经理多年的经验之谈

每个人都有不同的人生经历,但大都是人生中的生活经历.同样我也有很多和其他人一样的人生生活经历,因此在这里我就不谈生活经历啦.因为这非常的常见,而且还大都很相似.今天,我在这里就与大家分享一下多年来工作中的工作经验,人们常说人生经验宝贵,工作经验难的,我们都工作过,我们都有自己的工作经验,但是我今天所要描述的是一个学习计算机网络的学生到工作中后,从事一个完全不一样的专业方向发展.我这几年主要从事着医学软件系统,我就不多说了,我就分享一下我多年的项目经理经验之谈,希望对大家有用. 第一.项目实施前.

时间复杂度经验之谈

;时间复杂度经验之谈 没有循环的代码称为常量阶(O(1)),常量阶不能是循环 大部分单重循环为线性阶O(n) 双重循环为平方阶O(n2) 三重循环为立方阶O(n3) 折半查找法为对数阶算法,如果一个一重循环不是常量阶,又不是线性阶,那么这个算法肯定是对数阶 ;时间复杂度总结 ;求解问题的规模即(多大的问题),语句频度(求解问题所需语句的总和) 时间复杂度(算法执行时间的增长率)如 确定的3次 而不是n次解决 那么时间复杂度为常量阶,如输出个helloworld,只要1次执行语句就能解决问题 如果

传统IDC机房与云计算如何快速结合最佳实践的经验之谈

大家好,有两周没好好坐下来聊聊近期的实践课程了,今年也是对网工技能要求上的一个非常大的挑战,怎么说呢?因为上云的趋势已经来临,去年是所有的企业都在拥抱互联网,今年则是所有的企业都在拥抱云计算,加上各大产商的疯狂扩展与竞争,"价格战····"已经不计其数,但真正能协助用户落地实施方案成功上云的服务商,用手指在上海完全能数得过来. 这里就不点名了,点名就有点个人情绪在里面了,还是回归老本行扯扯技术,聊聊梦想. 我见过很多公司,号称自己有云.但是去聊了下,也其实就是虚拟化(kvm.xen.v

利用FlashPaper实现类似百度文库功能

最近需要实现一个类似百度文库的功能,在Google上淘了一段时间,发现FlashPaper还算能够不错的实现此需求. 首先讲下思路: 1>安装FlashPaper: 2>利用java代码将doc等文件转换为swf文件: 3>页面展示swf即可. 关于FlashPaper的使用及安装这里就不再赘述,网上的资料很多,可以自行Google. 下面是java下如何利用FlashPaper将doc等文件转化为swf文件--> @param swfName 指定生成的swf文件名@param

使用阿里云一年多个人经验之谈。(转)

首先说说我的需求.   需求很简单.就是一个DZ程序的论坛.访问量也不太大.每天几千PV.   帖子有几万吧.图片10万张不到.   所以数据库大概几万条记录.数据盘数据5G左右.   主要使用的阿里云产品有:ECS.RDS.CDN.OCS 不常用的有OSS.ACE.SLB.   ECS: 本质就是一个服务器.运行在云上的一个服务器.主要作用是做运算的.跑各种程序的.   用ECS架设的MYSQL会显得很业余.为什么这么说呢?主要有一下几点理由. 1.数据安全性差,ECS数据一天自动备份一次.而

使用FlashPaper在线转换.doc为.swf_实用技巧

https://yq.aliyun.com/ziliao/160044?spm=5176.8246799.0.0.JBbqjY 摘要: 本文讲的是使用FlashPaper在线转换.doc为.swf_实用技巧, FlashPaper 是Macromedia推出的一款电子文档类工具!通过使用FlashPaper,可以将需要的文档通过简单的设置转换为SWF格式的Flash动画,原文档的排版样式和字体显示不会收到影响,这样做的好处是不论对方的平台和语言 云计算 云服务器ECS 大数据 建站 备案 文档

定制个性化的FlashPaper生成的文件

1:找到已安装FlashPaper目录下的子目录Interface下的文件DefaultViewer2.swf,在此swf文件的基础上实现自己的修改. 2:利用swf反编译工具,这里推荐 硕思闪客精灵(SWFDecompiler),保存SWFDecompiler反编译过的.fla文件. 3:利用falsh制作工具(如Adobe Flash Professional CS5),打开此fla文件,找到第3个帧,添加下列代码即可实现定制(具体说明可以参考附后资料,隐藏即false,显示即true,请根

微软MVP攻略 (如何成为MVP?一个SQL Server MVP的经验之谈)

一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 初衷 什么是微软MVP? 成为微软MVP的条件? 如何成为微软MVP? (一) 申请时间划分 (二) 前期准备 (三) 下载/填写申请表格 (四) 申请MVP (五) 各种资料的填写 微软MVP奖项及权益包括什么? 成为微软MVP之后 个人建议 互动资讯 二.初衷 搞微软技术的,大家或多或少都有听说过微软的“最有价值专家”(MVP),网上也有不少资料对这个称谓做了介绍,但是都是一些大体的描述,并没有更加细节方面的,比