pdf2swf+flexpapers实现类似百度文库pdf在线阅读
1:工具准备
swftools.exe 下载
安装至d盘
swftools提供了一系列将各种文件转成swf的工具:
font2swf.exe
gif2swf.exe
jpeg2swf.exe
pdf2swf.exe
png2swf.exe
wav2swf.exe
这里我们只使用pdf2swf.exe
flexpaper下载
这里我们使用已经编译好的flexpaper的flash版本
2:示例语言,这里我使用的两种开发环境做示例
php示例
由pdf生成swf文件
<?php
/*
* created on 2010-11-17
*
* to change the template for this generated file go to
* window - preferences - phpeclipse - php - code templates
*/
//获取文件所在目录
$dir=dirname(__file__) ;
//删除测试文件
@unlink( $dir."" );
//使用pdf2swf转换命令
$command= "d:/swftools/pdf2swf.exe -t \"".$dir."" -o \"".$dir."" -s flashversion=9 ";
//创建shell对象
$wshshell = new com("wscript.shell");
//执行cmd命令
$oexec = $wshshell->run("cmd /c ". $command, 0, true);
?>
java示例
<%
/*
* created on 2010-11-17
*/
//获取文件所在目录
string path=request.getrealpath("/");
//使用pdf2swf转换命令
string command= "d:/swftools/pdf2swf.exe -t \""+path+"" -o \""+path+"" -s flashversion=9 ";
//执行cmd命令
runtime.getruntime().exec("cmd /c "+command);
%>
以上是php,java将pdf转换成swf方式,那显示呢,这样我们会使用到flexpaper,以下是flexpaper的使用
使用flexpaper展现swf
<script type="text/javascript" src="js/swfobject/swfobject.js"></script>
<script type="text/javascript">
var swfversionstr = "10.0.0";
var xiswfurlstr = "playerproductinstall.swf";
var flashvars = {
swffile : escape("test.swf"),
scale : 0.6,
zoomtransition : "easeout",
zoomtime : 0.5,
zoominterval : 0.1,
fitpageonload : false,
fitwidthonload : true,
printenabled : true,
fullscreenasmaxwindow : false,
progressiveloading : true,
printtoolsvisible : true,
viewmodetoolsvisible : true,
zoomtoolsvisible : true,
fullscreenvisible : true,
navtoolsvisible : true,
cursortoolsvisible : true,
searchtoolsvisible : true,
localechain: "zh_cn"
};
var params = {
}
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "samedomain";
params.allowfullscreen = "true";
var attributes = {};
attributes.id = "flexpaperviewer";
attributes.name = "flexpaperviewer";
swfobject.embedswf(
"flexpaperviewer.swf", "flashcontent",
"650", "500",
swfversionstr, xiswfurlstr,
flashvars, params, attributes);
swfobject.createcss("#flashcontent", "display:block;text-align:left;");
</script>
<body>
<div style="position:absolute;left:10px;top:10px;">
<div id="flashcontent">
</div>
</div>
</body>
通过上述方式我们可以将pdf转换成相应的swf文件,并通过flexpaper显示,防止用户下载,或copy。
pdf2swf的详细参数说明,上网百度或者google都能查到,但是注意的最好指定flashversion 为9,防止出现一些意外的错误。
pdf2swf 中并不是所有的pdf都能转换,加密的pdf pdf2swf转换不了
flexpaper 的参数详细说明请参考 http://code.google.com/p/flexpaper/wiki/parameters
flexpaper 常用的api http://code.google.com/p/flexpaper/wiki/api
如果出现乱码问题可能是字符集,网上有很多的相关解决方法可以查询【我没有碰到字符集堵的问题】。
还有pdf中含有图片可能转换成swf后图片不大清晰。
word,wps,txt等文档也可以采用该方式转换,但工具不一定为swftools
上传的flexpaper附件中已经包含flexpaper中相关文件不用重新下载,只要下载swftools,并安装。
flexpaper附件中包含了pdf2swf.jsp与pdf2swf.php两个文件及flexpaper相关的组件可以在java或php环境中运行。