文库网站开发转换搭建——文档转换

news/2024/5/19 14:37:35/文章来源:https://blog.csdn.net/nanxu699/article/details/118901071

文档何时转换,是人为转换呢?还是由计算机自动转换?

一、不同转换:

       (1)、人工转换:

              用户上传文件   —>   文档编辑专员对用户所上传文档进行审核。并设置审核标识   —>   管理员择时对已经通过审核的文档进行转换

       (2)、计算机转换:

              用户上传文件   —>  计算机初审  —>  计算机启动文档转换程序 对文档转换  —>  同时启动进程监控服务,对死锁转转换程序进行关闭,释放内存资源

       补充:在整个文档业务中,我们希望加入举报业务,即对不良文档进行举报。(管理员可以针对被举报文档做出有针对性的管理)

二、由doc、docx、xls等等文档到pdf的转换过程。

        由doc、docx、xls等等文档到pdf的转换过程我是借助FlashPaper完成的,所以在要完成这个操作,大家必须安装flashpaper,至于flashpaper的版本吗!您就自己斟酌吧!理念是,能用就行,好用即可。

 /// <summary>
        /// 将用户所上传文件转化成为pdf文件
        /// </summary>
        private void ConvertToPdf(string resFilePath, string pdfFilePath)
        {
            try
            {
                Process p = new Process();
                p.StartInfo.FileName = "cmd";
                p.StartInfo.UseShellExecute = false;
                p.StartInfo.RedirectStandardInput = true;
                p.StartInfo.RedirectStandardOutput = true;
                p.StartInfo.RedirectStandardError = true;
                p.StartInfo.CreateNoWindow = true;
                p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;

                p.Start();
                string strOutput = null;
                string s = ConfigurationSettings.AppSettings["FlashPaper"] + resFilePath + " -o " + pdfFilePath;

                p.StandardInput.WriteLine(s);
                p.StandardInput.WriteLine("exit");
                strOutput = p.StandardOutput.ReadToEnd();

                Console.WriteLine(strOutput);
                p.WaitForExit();
                p.Close();
            }
            catch (Exception ex)
            {
                LogHelper.Info("转化成为pdf时出发生错误" + ex.Message);
                throw ex;
            }
        }

二、完成了向pdf的转换过程、接下来我们实现向swf的转换。

      pdf到swf的转换过程我是借用的SWFTools系列工具之pdf2swf.exe,至于下载地址,您Google即可。

   

        /// <summary>
        /// 将用户所上传文件转化成为swf文件

        ///pdfFilePath,就是要转换的pdf文件路径
        /// </summary>
        private void ConvertToSwf(string pdfFilePath,string saveSwfFilePath,string fileName)
        {
            try
            {
                int flag = 0;
                int pageCount = GetPageCount(pdfFilePath);//计算pdf的页数
                string swfUrl = string.Empty;

                if (Directory.Exists(saveSwfFilePath) == false)
                    Directory.CreateDirectory(saveSwfFilePath);

                string exe = ConfigurationSettings.AppSettings["FlexPaper"];

                if (!File.Exists(exe))
                    throw new ApplicationException("Can not find: " + exe);

                StringBuilder sb = new StringBuilder();

                if (pageCount % 5 > 0)//每5页转换成为一个swf文件 这个细节很重要,我是每五页转换成一个swf文件,这样可以方便实现预装载。
                    flag = 1;
                else
                    flag = 0;

                for (var i = 0; i < (pageCount / 5 + flag); i++)
                {
                    swfUrl = saveSwfFilePath + "\\" + fileName + "-" + (i * 5 + 1).ToString() + "-" + ((i + 1) * 5) + ".swf";
                    sb.Append(exe);
                    sb.Append(" -o \"" + swfUrl + "\"");//output 
                    sb.Append(" -z");
                    sb.Append(" -s flashversion=9");//flash version 
                    sb.Append(" -s disablelinks");//禁止PDF里面的链接 
                    sb.Append(" -p " + (i * 5 + 1) + "-" + ((i + 1) * 5));//page range 
                    sb.Append(" -j 100");//Set quality of embedded jpeg pictures to quality. 0 is worst (small), 100 is best (big). (default:85) 
                    sb.Append(" \"" + pdfFilePath + "\"");//input 

                    string strOutput = null;
                    Process proc = new Process();
                    proc.StartInfo.FileName = "cmd";
                    proc.StartInfo.UseShellExecute = false;
                    proc.StartInfo.RedirectStandardInput = true;
                    proc.StartInfo.RedirectStandardOutput = true;
                    proc.StartInfo.RedirectStandardError = true;
                    proc.StartInfo.CreateNoWindow = true;
                    proc.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
                    proc.Start();

                    proc.StandardInput.WriteLine(sb.ToString());
                    proc.StandardInput.WriteLine("exit");
                    strOutput = proc.StandardOutput.ReadToEnd();

                    Console.WriteLine(strOutput);
                    proc.WaitForExit();
                    proc.Close();
                    sb.Remove(0, sb.Length);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info("转化成为swf文件错误" + ex.Message);
                throw ex;
            }
        }

        /// <summary>
        /// 计算pdf文件总页数
        /// </summary>
        /// <param name="pdfPath"></param>
        /// <returns></returns>
        public static int GetPageCount(string pdfPath)
        {
            try
            {
                byte[] buffer = File.ReadAllBytes(pdfPath);
                int length = buffer.Length;
                if (buffer == null)
                    return -1;

                if (buffer.Length <= 0)
                    return -1;

                string pdfText = Encoding.Default.GetString(buffer);
                System.Text.RegularExpressions.Regex rx1 = new System.Text.RegularExpressions.Regex(@"/Type\s*/Page[^s]");
                System.Text.RegularExpressions.MatchCollection matches = rx1.Matches(pdfText);

                return matches.Count;
            }
            catch (Exception ex)
            {
                LogHelper.Info("计算pdf文件总页数错误" + ex.Message);
                throw ex;
            }
        }

好了,文档的转换大功告成,这是我在网上看到了一些关于文库网站转换学习的,大家都可以参考借鉴。文库网站开发有什么疑问可以私信,大家一起交流进步。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_873317.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排名中期的网站优化策略

如何判断网站是否处于排名中期 什么是网站的排名中期&#xff0c;这是本段的核心内容&#xff0c;网站的排名中期&#xff0c;确切的来说就是我们网站进入了百度搜索关键词的前20名&#xff0c;但是并没有进入前三名的这个过程。但是这个又不是绝对的&#xff0c;为什么这么说呢…

草根站长心酸路:你的网站后来怎么样了?

原文链接 作为一个站长&#xff0c;下面这些你一定都懂&#xff1a;1、没有资金&#xff0c;连空间都用免费的2、没有技术&#xff0c;连域名都不知道怎样解析3、没有人缘&#xff0c;碰到问题没有人能够帮助4、受人鄙视&#xff0c;有时请教一些所谓的高手&#xff0c;等了48小…

google-seo-faster-powerful

1. 参考链接&#xff1a; a. http://article.yeeyan.org/view/6774/2620 b. http://www.zhihu.com/question/20161362 c. http://www.360doc.com/content/12/0610/14/10160908_217229878.shtml d. http://www.ha97.com/4105.html e. http://blog.sciencenet.cn/blog-73488…

快速建立Typecho博客网站

最近偶然间发现Typecho这个开源的博客程序&#xff0c;又燃起了我的一颗自建私人博客的心。相比于老牌的WordPress&#xff0c;Typecho足够的轻量级&#xff0c;甚至于256M内存的小鸡也能够完美的运行起来。作为一个非专业前端开发的业余博主&#xff0c;Typecho拥有足够的主体…

Typecho博客网站主题和插件安装

Typecho的主题安装其实很简单&#xff0c;最多不超过3步的操作就能够简单的设置好一个主题或者插件。 一、主题安装 1、获得主题 首先找到自己想要的博客主题风格&#xff0c;这个很容易在一些Typecho论坛找到&#xff0c;而且一般都会有预览&#xff0c;很容易就能确定哪一款…

WordPress网站添加个性输入礼花及震动特效/其他CMS网站均可尝试

作为 wordpress 用户的一员&#xff0c;真是为了装逼操心吃力&#xff08;虽然 js 文件不是我写的&#xff09;。WordpPress 输出框的一个礼花及震惊殊效后果&#xff0c;因为是挪用的 js 文件&#xff0c;以是不只仅可以用于 WordPress&#xff0c;其它网站上一样可以正常应用…

资源网站搜录友情链接交换

站长导航&#xff1a;免费申请收录&#xff0c;支持收录各种资源站/个人博客/友情链接互换&#xff0c;增加百度收录

资源下载网站整站资源|建站6万资源数据32G整站下载

整站资源加&#xff0b;搭建教程 下载地址&#xff1a;https://suguoer.com/21241.html

SEO篇如何生成site.txt文本文件批量提交url加快百度网站收录wordpress文章

下面的教程是针对wordpress博客如何加快百度收录自动提交sitemap。 步骤&#xff1a; ①新建一个空白txt文件&#xff0c;将下面的代码复制到文档中。 <?php require(./wp-blog-header.php); header(Content-type: application/txt); header(HTTP/1.1 200 OK); $posts_t…

Nginx完成一个简单的web网站

nginx完成一个简单的web网站 网页制作生成web网站总结参考 网页制作 vscode下完成代码的编写 两个简陋的页面&#xff0c;其中包含有页面的跳转和供下载文件的链接 主页面&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"&g…

Java读取互联网web服务网站

Java基于http协议读取互联网web网站 简介实例一、读取指定城市的天气预报二、给指定手机号码发送验证码 总结参考 简介 网址组成分析 网址的组成&#xff1a; 协议&#xff1a;//域名&#xff1a;端口号/虚拟路径&#xff1f;参数列表#锚点 协议&#xff1a;用于计算机与计算机…

一个非常适合python入门和学习的网站

废话不多说&#xff0c;直接给链接&#xff1a; https://www.tutorialspoint.com/python/index.htm 十分清楚和详细的讲解 支持在线编程 Have fun!

Python数据分析——某地产网站二手房销售数据分析

一、数据分析的流程思路 1、明确分析目的和思路/提出假设 2、数据收集 3、数据处理/整理 4、数据分析/验证假设 5、数据展现/可视化图表 6、报告撰写 二、分析目的 需求01&#xff1a;每平米二手房单价&#xff08;总价&#xff0c;按月均价&#xff09;需求02&#xf…

博学谷网站编写(HTML、CSS、JS),实现轮播图,倒计时等功能

页面效果&#xff1a; 2. 源码&#xff08;gitee地址&#xff09;&#xff1a;https://gitee.com/meng-shuyu/boxuegu 3. 点击这里下载 zip 运行即可

小米网站编写(HTML、CSS、JS),实现轮播图

1. 页面效果&#xff1a; 2. 源码&#xff08;gitee地址&#xff09;&#xff1a;https://gitee.com/meng-shuyu/xiaomi 3. 点击这里下载 zip 运行即可

京东网站页面编写(HTML、CSS、JS),包括京东秒杀的倒计时、轮播图等功能

1. 页面效果&#xff1a; 2. 源码&#xff08;gitee地址&#xff09;&#xff1a;https://gitee.com/meng-shuyu/jingdong 3. 网站图标一般存储在网站的根目录下&#xff0c;如京东网站图标地址为&#xff1a; https://www.jd.com/favicon.ico 4. 点击这里下载 zip 运行即可…

【大数据新手上路】“零基础”系列课程--Flume收集网站日志数据到MaxCompute

概述&#xff1a;大数据时代&#xff0c;谁掌握了足够的数据&#xff0c;谁就有可能掌握未来&#xff0c;而其中的数据采集就是将来的流动资产积累。 任何规模的企业&#xff0c;每时每刻都在产生大量的数据&#xff0c;但这些数据如何归集、提炼始终是一个困扰。而大数据技术的…

【大数据技巧】Flume采集网站日志到MaxCompute常见问题汇总

本文列举了Flume采集网站日志到MaxCompute的一些常见问题&#xff0c;欢迎大家补充&#xff1b; Q&#xff1a;找不到指定路径的文件 A&#xff1a;本实验要在Linux系统下运行&#xff0c;路径也要写在Linux下的路径 Q&#xff1a;找不到指定sink type的类 A&#xff1a;插件错…

【阿里云网站日志分析实践】通过Log Service日志服务导入MaxCompute分析

日志服务收集的日志除了可以被实时查询外&#xff0c;还可以把日志数据投递到大数据计算服务MaxCompute&#xff08;原ODPS&#xff09;&#xff0c;进一步进行个性化BI分析及数据挖掘。通过日志服务投递日志数据到MaxCompute具有如下优势&#xff1a; 使用非常简单。用户只需要…

【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏

前几天在云栖社区上写了一篇普惠性的文章&#xff0c;很粗偏向数据架构层面。具体可以进入&#xff1a;【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析&#xff0c;但是在具体实操中肯定不会那么一帆风顺。为了避免大家走弯路特意先写了一篇架…