• php 将office文件(word/excel/ppt)转化为pdf(windows和linux只要安装对应组件应该就行)


    一、配置环境

    (1)配置php.ini

    添加:extension=php_com_dotnet.dll

    com.allow_dcom = true  // 去掉号,改为true

    重启环境

    (2) 安装:WPS 专业版,或者 microsoft  office 2010

    (microsoft office 2007 需要安装加载项:Microsoft Save as PDF) 

    (3)配置office组件服务

            按 win+R 快捷键进入运行菜单,输入 Dcomcnfg 

            找到:     [组件服务] —— [计算机]—— [我的电脑] —— [DCOM配置] ——【wps……】或[Microsoft Wrord 97-2003文档]

            如果没找到【wps……】或(Microsoft Wrord 97-2003文档):

            按 win+R 快捷键进入运行菜单

            输入:mmc -32

            [文件]——[添加或删除管理单元]——[组件服务](从可用管理单元,添加到所选管理单元,点击:确定)

            添加完以后,在控制台根节点下,找到【wps……】或[Microsoft Wrord 97-2003文档],右键设置属性,设置“标识”为:交互式用户(还有安全里面的设置 可以看其他文章的设置)

    注:我开始 选择交互式用户  : 会出现 我登录远程服务器一切正常,如果退出远程服务器实例化组件就报错,最后选择了 下列用户,填写了管理员用户和密码才正常可用.

    二、编写程序

    <?php
    
    word2pdf();
     function word2pdf()
    {
        $filenamedoc = dirname(__FILE__)."/index.docx";
        $filenamepdf = dirname(__FILE__)."/index.pdf";
    
        $dd = $word = new COM("KWPS.Application") or die ("Could not initialise Object.");
        // 或者 $dd = $word = new COM("Word.Application") or die ("Could not initialise Object.");
        // set it to 1 to see the MS Word window (the actual opening of the document)
        $word->Visible = 0;
        // recommend to set to 0, disables alerts like "Do you want MS Word to be the default .. etc"
        $word->DisplayAlerts = 0;
        // open the word 2007-2013 document
    
        $word->Documents->Open($filenamedoc);
        // save it as word 2003
        // convert word 2007-2013 to PDF
    
        //判断要生成的文件名是否存在
        if(file_exists($filenamepdf)) {
            //存在就删除
            unlink ($filenamepdf);
        }
        $word->ActiveDocument->ExportAsFixedFormat($filenamepdf, 17, false, 0, 0, 0, 0, 7, true, true, 2, true, true, false);
        // quit the Word process
        $word->Quit(false);
        // clean up
        unset($word);
        if(!function_exists('read_pdf')) {
            header('Content-type: application/pdf');
            header('filename='.$filenamepdf);
            readfile($filenamepdf);
            read_pdf('Python_study.pdf');
        }
        echo 'ok';
    }
    
    ?>
    if(!function_exists('read_pdf')) {
      function read_pdf($file) {
        if(strtolower(substr(strrchr($file,'.'),1)) != 'pdf') {
          echo '文件格式不对.';
          return;
        }
        if(!file_exists($file)) {
          echo '文件不存在';
          return;
        }
        header('Content-type: application/pdf');
        header('filename='.$file);
        readfile($file);
      }
    }

    转: https://my.oschina.net/u/3567851/blog/2909656

    https://blog.csdn.net/sangjinchao/article/details/78053545

    https://blog.csdn.net/ken2999/article/details/82353747  (组件的权限)

    https://www.cnblogs.com/zhuchenglin/p/7586170.html

    https://stackoverflow.com/questions/5538584/convert-word-doc-docx-and-excel-xls-xlsx-to-pdf-with-php

    https://blog.csdn.net/baidu_27474941/article/details/83268468

  • 相关阅读:
    【转】编写高质量代码改善C#程序的157个建议——建议20:使用泛型集合代替非泛型集合
    【转】编写高质量代码改善C#程序的157个建议——建议19:使用更有效的对象和集合初始化
    【转】编写高质量代码改善C#程序的157个建议——建议18:foreach不能代替for
    【转】编写高质量代码改善C#程序的157个建议——建议17:多数情况下使用foreach进行循环遍历
    java maven项目找不到jconsole-1.8.0.jar和tools-1.8.0.jar包
    Springboot集成dubbo时候出现异常
    Python小练习(持续更新....)
    2.PyCharm安装和使用之HelloWorld
    1.Python学习---helloworld
    关于编码问题
  • 原文地址:https://www.cnblogs.com/fps2tao/p/11490140.html
Copyright © 2020-2023  润新知