zoukankan      html  css  js  c++  java
  • Office 转 PDF & PDF 转 SWF Linux版

    当网站有Office文件对外进行展示时,我们经常是不希望用户进行下载,而是在线进行预览。

    这个时候就有必要把Office文件进行转换成SWF文件在网页中显示了

    但现在还没有Office文件直接转化成SWF文件的方法,所以现在用PDF进行中转

    也就是Office =》 PDF =》 SWF

    以下是相应的转化代码(Linux版):Windows版请点:Office 转 PDF & PDF 转 SWF Windows版

    ----------------------------------------------------------------

    安装LibreOffice

    注意这里安的是LibreOffice4.4.4.3版本,如果进行默认安装会安装为4.0,在转WORD的时候会出现格式与原Word不同的情况

    #!/bin/sh
    pathDir=$(cd `dirname $0`; pwd)
    
    yum -y remove openoffice* libreoffice*
    tar -zxvf LibreOffice_4.4.4_Linux_x86-64_rpm.tar.gz 
    cd LibreOffice_4.4.4.3_Linux_x86-64_rpm/RPMS/
    yum -y localinstall *.rpm
    cd ${pathDir}
    rm -rf LibreOffice_4.4.4.3_Linux_x86-64_rpm
    echo "libreoffice instaled"

    ---------------

    命令,程序自动判断Linux环境还是Windows环境,调用不同方式进行转换

    try
        {
            //word "c:1.doc" "c:1.pdf" "E:Projects_GITToolsFlexPaperpdf2swf.exe" "c:1.swf"
            //取得文件夹
            var fileInfo = new System.IO.FileInfo(file);
            var path = fileInfo.Directory.FullName;
            var fileName = fileInfo.Name;
            string type = "";
            string officeFile = "";
            string pdfFile = "";
            string swfExe = "";
            string swfFileName = "";
            if (file.IndexOf(".doc") != -1)
            {
                type = "word";
            }
            else if (file.IndexOf(".ppt") != -1)
            {
                type = "powerpoint";
            }
            else if (file.IndexOf(".xls") != -1)
            {
                type = "excel";
            }
            //生成名字
            officeFile = file;
            string pdfName = fileName.Replace(fileInfo.Extension, ".pdf");
            pdfFile = Z.Core.Tools.IOPath.Combine(path, pdfName);
            if (this.DotNet())
            {
                swfExe = Config.PhysicalPath.Instance.Root() + "\Tools\FlexPaper\pdf2swf.exe";
            }
            else
            {
                swfExe = "pdf2swf";
            }
            var swfName = fileName.Replace(fileInfo.Extension, ".swf");
            swfFileName = Z.Core.Tools.IOPath.Combine(path, swfName);
            string cmd = Config.PhysicalPath.Instance.Root() + "\Tools\FlexPaper\OfficeToSWF.exe";
            if (type != "")
            {
                // office 
                if (this.DotNet())
                {
                    //如果是Windows的Office的话,那么用OfficeToSWF.exe这个Exe去处理,转PDF和转SWF
                    string args = type + " " + officeFile + " " + pdfFile + " " + swfExe + " " + swfFileName;
                    var result = Excute(cmd, args);//这里必须要用有窗体的才可以
                    LOG.Warn(args + System.Environment.NewLine + result);//日志结果
                }
                else
                {
                    //Linux下转Office要先用Libroffice转成PDF,再用PDF2SWF转SWF 
                    ///usr/bin/libreoffice --invisible --convert-to pdf:writer_pdf_Export --outdir /use/local/src /use/local/src/123.doc
                    cmd = "/usr/bin/libreoffice4.4";
                    string args = " --invisible --convert-to pdf:writer_pdf_Export --outdir " + path + " " + officeFile;
                    //转Office
                    Helper.Cmd.Excute(cmd, args);
                    System.Threading.Thread.Sleep(5000);
                    //再转 pdf
                    args = " " + pdfFile + " -o " + swfFileName + " -f -T 9 -t -s storeallcharacters";
                    Helper.Cmd.Excute(swfExe, args);
                }
            }
            else
            {
                // pdf
                string args = " " + file + " -o " + swfFileName + " -f -T 9 -t -s storeallcharacters";
                Helper.Cmd.Excute(swfExe, args);
            }
            if (!System.IO.File.Exists(pdfFile))
            {
                pdfName = null;
            }
            if (!System.IO.File.Exists(swfFileName))
            {
                swfName = null;
            }
            string message = "已处理:" + DateTime.Now.ToAutoShortDate();
            if (pdfName == null
                || swfName == null)
            {
                message = "失败:请确认是否安装并且设置组件的【访问权限】和【标示】";
            }
            else
            {
                message = "已处理:" + DateTime.Now.ToAutoShortDate();
            }
            DoWork(e.Item.Type, e.Item.TargetID, pdfName, swfName, message);
        }
        catch (Exception exx)
        {
            DoWork(e.Item.Type, e.Item.TargetID, null, null, "PDF转换出错:" + exx.Message);
        }
    

      

    Blog都是随笔,只当做笔记,不会有详细介绍,测试请慎重。。。
  • 相关阅读:
    Serialization and deserialization are bottlenecks in parallel and distributed computing, especially in machine learning applications with large objects and large quantities of data.
    Introduction to the Standard Directory Layout
    import 原理 及 导入 自定义、第三方 包
    403 'Forbidden'
    https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
    These interactions can be expressed as complicated, large scale graphs. Mining data requires a distributed data processing engine
    mysqldump --flush-logs
    mysql dump 参数
    mysql dump 参数
    如果是在有master上开启了该参数,记得在slave端也要开启这个参数(salve需要stop后再重新start),否则在master上创建函数会导致replaction中断。
  • 原文地址:https://www.cnblogs.com/JerryBaxia/p/4776227.html
Copyright © 2011-2022 走看看