本人既蠢又懒纯菜鸟一枚,出道近三载却发现自己好生颓废,一切都好似原地踏步!决定痛定思痛痛改前非,不能再这样虚度光阴!
首先有了整理之前积累经验的想法,思来想去却又实在没有能够拿出手的东西,只有把在前东家做的一个仿百度文库的小功能献上,但愿能为有需要者提供些许参考……
功能需求为pdf文档只供在线查看不能下载或打印,所尝试方法均参考网络资料,归为原创确实心虚,下面开始介绍:
方法一:pdfobject.js加载pdf文件 + 隐藏Adobe工具栏:该方法严格来说没有实现要求,因为pdf文档在缓存中可以找到,如果要求不高可以使用本方法
1.引入pdfobject.js
2.margin-top设置为-57px隐藏Adobe工具栏
方法二:SWFTools + FlexPaper:该方法通过SWFTools将pdf文件转换为swf格式通过FlexPaper展示,但是有些pdf文件通过转换工具无法转换或转换后无法显示,高版本FlexPaper未找到去打印功能版
1.安装SWFTools 0.9.0
2.下载FlexPaper 2.1.0官方版本或去打印版本
3.将FlexPaper 2.1.0中的css和js文件夹及FlexPaperViewer.swf文件拷贝到项目中,创建浏览页面(浏览页面与FlexPaperViewer.swf要位于同一目录)
4.转换代码:
public bool Pdf2Swf(string fileUrl, string savePath)
{
try
{
using (Process p = new Process())
{
string cmdStr = @"C:\Program Files\SWFTools\pdf2swf.exe";
string argsStr = " -t " + fileUrl + " -s flashversion=9 -o " + savePath;
//调用新进程 进行转换
ProcessStartInfo psi = new ProcessStartInfo(cmdStr, argsStr);
p.StartInfo = psi;
p.Start();
p.WaitForExit();
}
}
catch
{
return false;
}
return true;
}
方法三:Print2flash + Print2flash自带展示代码:所有能够打印预览的文件均可以通过Print2flash转换为swf,而且可以设置转换参数(如是否允许打印等),但是其转换的swf文件无法在FlexPaper 2.1.0中显示,不知道是不是因为FlexPaper版本太低的问题;采用Print2flash将文件转换成html文件自动产生的代码展示转换后的文件,存在问题为代码调用Print2flash没有找到参数设置去除打印功能
1.安装Print2flash
2.将文件通过Print2flash转换为html文件自动生成的前台展示代码:
<%----%>
3.后台转化代码:
public void Pdf2Swf(string src,string dest)
{
Print2Flash3.Server2 server = new Print2Flash3.Server2();
server.ConvertFile(src, dest, null, null, null);
}
以上三种方法均有不足之处,还待大神指导完善;因本人坐井太久,见识极为有限,亦期待大神指点一二……