仿百度文库
来源:互联网 发布:tk 注册免费域名 编辑:程序博客网 时间:2024/04/27 07:07
标签存档: flexpaper
仿百度文库方案,openoffice.org 3+swftools+flexpaper
作者: admin 日期: 2012 年 2 月 8 日没有评论 | 查看次数: 1,840
文档生成技术细节 提取文字图片
作者: admin 日期: 2012 年 2 月 6 日没有评论 | 查看次数: 982
2、调用命令行执行CMD命令
1
/// <summary>
2
/// 运行命令
3
/// </summary>
4
/// <param name="strShellCommand">命令字符串</param>
5
/// <returns>命令运行时间</returns>
6
private static double RunShell(string strShellCommand)
7
{
8
double spanMilliseconds = 0;
9
DateTime beginTime = DateTime.Now;
10
11
Process cmd = new Process();
12
cmd.StartInfo.FileName = "cmd.exe";
13
cmd.StartInfo.UseShellExecute = false;
14
cmd.StartInfo.CreateNoWindow = true;
15
cmd.StartInfo.Arguments = String.Format(@"/c {0}", strShellCommand);
16
cmd.Start();
17
cmd.WaitForExit();
18
19
DateTime endTime = DateTime.Now;
20
TimeSpan timeSpan = endTime - beginTime;
21
spanMilliseconds = timeSpan.TotalMilliseconds;
22
23
return spanMilliseconds;
3、检查文件是否生成完毕
1
<strong></strong>
2
3
<strong>/// <summary>
4
/// 检查是否转换成功(文件是否生成完毕)
5
/// </summary>
6
/// <param name="sourcePath">要检查文件地址</param>
7
/// <param name="targetPath">要复制到的地址(如果不需要真正复制,请跟sourcePath一致)</param>
8
/// <param name="timeout">最大等待时间</param>
9
/// <returns></returns>
10
private static bool IsParseSuccess(string sourcePath, string targetPath, int timeout)
11
{
12
bool isSuccess = false;
13
14
if (timeout <= 0)
15
timeout = 30;
16
17
int i = 0;
18
while (!RenameFile(sourcePath, targetPath))
19
{
20
Thread.Sleep(1000);
21
i++;
22
if (i == timeout)
23
break;
24
}
25
if (i < timeout)
26
isSuccess = true;
27
28
return isSuccess;
29
}
30
31
/// <summary>
32
/// 重命名文件(用来检查文件是否生成完成)
33
/// </summary>
34
/// <param name="sourePath">源地址</param>
35
/// <param name="targetPath">目标地址</param>
36
/// <returns></returns>
37
private static bool RenameFile(string sourePath, string targetPath)
38
{
39
bool isOpen = false;
40
41
//如果是相同地址,直接移动检查是否文件已经生成,否则进行复制(因为目标文件存在的话会有问题)
42
if (sourePath.Equals(targetPath))
43
{
44
try
45
{
46
//移动文件
47
File.Move(sourePath, targetPath);
48
isOpen = true;
49
}
50
catch (Exception e)
51
{
52
53
}
54
}
55
else
56
{
57
bool isCopySuccess = false;
58
try
59
{
60
//复制文件
61
File.Copy(sourePath, targetPath, true);
62
isCopySuccess = true;
63
}
64
catch (Exception e)
65
{
66
isCopySuccess = false;
67
}
68
if (isCopySuccess)
69
{
70
//如果复制成功,删除源文件
71
File.Delete(sourePath);
72
}
73
}
74
75
return isOpen;
76
}</strong>
4、杀掉进行函数
1
<strong> /// <summary>
2
/// 根据进程名称来关闭进程
3
/// </summary>
4
/// <param name="processName"></param>
5
private static void KillPrecess(string processName)
6
{
7
foreach (Process p in Process.GetProcesses())
8
{
9
if (p.ProcessName == processName)
10
{
11
p.Kill();
12
}
13
}
14
}</strong>
文档转pdf
我们介绍的文档转化为pdf的方法,要求是较为通用,即不需要根据具体文档写具体的程序,且不仅要支持Office文档,最好还要支持txt、html等其他文档。
1、使用pdfFactory(见源码方法:ParsePDFWithPdfFactory)
说明:软件需要注册才能使用
原理:
a. 调用系统默认打印机(pdfFactory)打印文档;
b. 从打印机的临时目录里将pdf拷贝到目标路径;
pdfFactory的设置:
a. 打开打印机,设置“pdfFactory Pro”为默认打印机;
b. 打开“pdfFactory Pro”的“打印机首选项”,在“Licensing”选项卡里注册打印机;
c. 打开“pdfFactory Pro”的“打印机首选项”,结合程序,进行如下两个图的设置;
优点:
a. 只要支持打印的文件均可以用此法转化为pdf;
不足:
a. 服务器上经常会弹出文件打印窗口;
b. 一些损坏的文件或者格式不正确的文档会中止生成过程;
c. 如果遇到带病毒宏的文档,会对服务器产生破坏;
注意事项:
a. 打印过程中会产生大量临时文件在用户目录,需要及时清理垃圾文件,或者将对应目录迁移到磁盘空间较大的位置;
b. Windows Server需要安装Server版pdfFactory;
2、使用FlashPaper(见源码方法:ParsePDFWithFlashPrinter)
原理:调用命令行“flashprinter c:\document.doc -o c:\document.pdf”进行打印;
优点:
a. 只要支持打印的文件均可以用此法转化为pdf;
b. 操作简单
不足:
a. 由于程序本身问题,有时可能导致打印不能结束,几百个进程同时运行拖垮系统的情况;
3、其他方法(未附源码)
使用其他虚拟打印机,例如:Virtual PDF Printer
使用jcom或其它方式调用Office的Component进行转化,具体请参考:将office文档(word,excel,powerpoint)转换为pdf
调用使用JodConverter调用OpenOffice转化,具体请参考:JodConverter实现Office转化PDF格式
pdf转flash(见源码方法:ParseSWF)
原理:使用SWFTools的pdf2swf,调用命令行“pdf2swf.exe -T 9 -p 1-3 -s languagedir=D:\xpdf-3.02pl5\xpdf-chinese-simplified D:\document.pdf -o D:\document.swf”进行转换;
常见问题:
1、部分文档转化后乱码,控制台提示:找不到“Adobe-GB1”字体
解决办法:在pdf2swf命令中带上语言包,详情请看:http://cqfish.blog.51cto.com/622299/163566
2、部分文档可能无法在FlexPaper里无法显示
解决办法:flash版本的问题,在pdf2swf命令中带上参数,设置生成的版本为9(参数为:-T 9),这样兼容性最好。
pdf转图片(见源码方法:ParseCoverImage)
原理:使用“VeryPDF PDF To Image Converter”软件,调用命令行“pdf2img.exe -r 25 -f 1 -l 1 -i c:\1.pdf -o c:\11.jpg ”进行转换;
pdf转文本(见源码方法:ParseText)
有时为了生成摘要或者索引文档内容,需要将文档里的文本读取进来,xpdf是一个不错的工具。
原理:使用“xpdf”软件,调用命令行“pdftotext.exe c:\1.pdf c:\1.txt”进行转化;
常见问题:要让xpdf支持中文,还需要下载中文语言包并做一些配置,xpdf中文化详细配置请参考:http://emily2ly.javaeye.com/blog/743552
本文涉及软件及源码下载:document-preview-online-demo-canbeing.rar
来源:http://www.cnblogs.com/flashlm/archive/2010/11/27/document-preview-online-file-convert.html
flexpaper flash右上角的圆圈一直在转解决PHP调用
作者: admin 日期: 2012 年 1 月 28 日没有评论 | 查看次数: 1,998
FlexPaper+SwfTools实现的在线文档功能
作者: admin 日期: 2012 年 1 月 27 日没有评论 | 查看次数: 1,144
Flex Paper 源码编译
作者: admin 日期: 2012 年 1 月 25 日没有评论 | 查看次数: 1,218
解决FlexPaper分页分段异步加载问题
作者: admin 日期: 2012 年 1 月 23 日没有评论 | 查看次数: 1,473
FlexPaper实现ASP.NET文档在线浏览(附源码)
作者: admin 日期: 2012 年 1 月 22 日没有评论 | 查看次数: 2,786
linux下用flexpaper做像百度文库和豆丁网一样的在线文档浏览
作者: admin 日期: 2012 年 1 月 21 日没有评论 | 查看次数: 3,520
ASP.NET使用flexpaper做在线文档浏览
作者: admin 日期: 2012 年 1 月 20 日没有评论 | 查看次数: 1,002
0 0
- 仿百度文库
- 实现仿百度文库
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库解决方案
- 仿百度文库
- 仿百度文库解决方案
- 【DotNet】仿百度文库
- 仿百度文库
- 仿百度文库解决方案
- 仿百度文库实现方案
- 仿百度,豆瓣读书文库阅读器
- 仿百度,豆瓣读书文库阅读器
- 仿百度,豆瓣读书文库阅读器
- 仿百度文库、豆丁在线阅读
- 仿百度,豆瓣读书文库阅读器
- 文件转换 仿百度文库功能
- 仿百度文库在线阅读实现
- Java 自定义注解 源码实现
- 第九周项目1求出1000以内所有项数之和
- 第9周项目2分数的累加
- mysql show processlist 显示mysql查询进程
- Design
- 仿百度文库
- html5及android多个视频连续播放问题
- C语言
- C++中的单冒号与双冒号
- 第九周项目二——分数的累加
- ubuntu14.04中安装qq(只需三句命令)
- 为TextView添加Drawable
- HTTP method GET is not supported by this URL
- Android APK反编译得到Java源代码和资源文件