php office文件(word/excel/ppt)转pdf文件

把代码放到了github上,点击进入

前阶段有个项目用到了线上预览功能,

关于预览office文件实现核心就是,把office文件(word,excel,ppt)转为pdf文件,

然后再把pdf文件经过pdf2html转为html文件进行预览。

利用openoffice的话,非常简单,不过效果不太好,转成的pdf样式会乱!

这里就不做介绍了。

下面我把office文件转为pdf步骤写一下(代码在最后)

1.php开启dcom扩展

打开php.ini,搜索php_com_dotnet和php_com_dotnet:

extension=php_com_dotnet.dll   //把前面的分号去掉

com.allow_dcom = true  //改为true

重启apache

2.配置office组件服务

.php office文件(word/excel/ppt)转pdf文件_第1张图片php office文件(word/excel/ppt)转pdf文件_第2张图片php office文件(word/excel/ppt)转pdf文件_第3张图片php office文件(word/excel/ppt)转pdf文件_第4张图片php office文件(word/excel/ppt)转pdf文件_第5张图片php office文件(word/excel/ppt)转pdf文件_第6张图片php office文件(word/excel/ppt)转pdf文件_第7张图片php office文件(word/excel/ppt)转pdf文件_第8张图片php office文件(word/excel/ppt)转pdf文件_第9张图片php office文件(word/excel/ppt)转pdf文件_第10张图片

像这样的操作还有两个!!

php office文件(word/excel/ppt)转pdf文件_第11张图片php office文件(word/excel/ppt)转pdf文件_第12张图片


3.php代码:

ppt转pdf代码

public function ppt_to_pdf() {
        $srcfilename = 'E:/aa.ppt';
        $destfilename = 'E:/aa.pdf';
        try {
            if(!file_exists($srcfilename)){
                return;
            }
            $ppt = new \COM("powerpoint.application") or die("Unable to instantiate Powerpoint");
            $presentation = $ppt->Presentations->Open($srcfilename, false, false, false);
            $presentation->SaveAs($destfilename,32,1);
            $presentation->Close();
            $ppt->Quit();
        } catch (\Exception $e) {
            if (method_exists($ppt, "Quit")){
                $ppt->Quit();
            }
            return;
        }
    }


excel转ppt

    public function excel_to_pdf() {
        $srcfilename = 'E:/aa.xls';
        $destfilename = 'E:/aa.pdf';
        try {
            if(!file_exists($srcfilename)){
                return;
            }
            $excel = new \COM("excel.application") or die("Unable to instantiate excel");
            $workbook = $excel->Workbooks->Open($srcfilename, null, false, null, "1", "1", true);
            $workbook->ExportAsFixedFormat(0, $destfilename);
            $workbook->Close();
            $excel->Quit();
        } catch (\Exception $e) {
             echo ("src:$srcfilename catch exception:" . $e->__toString());
            if (method_exists($excel, "Quit")){
                $excel->Quit();
            }
            return;
        }
    }


 
  

word转pdf(其实文本格式的文件都可以用这个,比如:txt)

 
  
    public function doc_to_pdf() {
        $srcfilename = 'E:/aa.doc';
        $destfilename = 'E:/aa.pdf';
        try {
            if(!file_exists($srcfilename)){
                return;
            }

            $word = new \COM("word.application") or die("Can't start Word!");
            $word->Visible=0;
            $word->Documents->Open($srcfilename, false, false, false, "1", "1", true);
           
            $word->ActiveDocument->final = false;
            $word->ActiveDocument->Saved = true;
            $word->ActiveDocument->ExportAsFixedFormat(
                $destfilename,
                17,                         // wdExportFormatPDF
                false,                      // open file after export
                0,                          // wdExportOptimizeForPrint
                3,                          // wdExportFromTo
                1,                          // begin page
                5000,                       // end page
                7,                          // wdExportDocumentWithMarkup
                true,                       // IncludeDocProps
                true,                       // KeepIRM
                1                           // WdExportCreateBookmarks
            );
            $word->ActiveDocument->Close();
            $word->Quit();
        } catch (\Exception $e) {
            if (method_exists($word, "Quit")){
                $word->Quit();
            }
            return;
        }
    }







你可能感兴趣的:(php)