站長資訊網
        最全最豐富的資訊網站

        php excel怎么轉換成pdf

        php excel轉換成pdf的方法:首先在App下建一個文件夾Libs;然后把類庫放進去,并寫好命名空間;接著修改composer.json;最后在項目根目錄下執行composer dump-autoload即可。

        php excel怎么轉換成pdf

        本文操作環境:windows7系統、PHP7.1版,DELL G3電腦

        php excel怎么轉換成pdf?

        php excel轉pdf

        接下來說說excel轉pdf這個坑,這個是真坑啊,好多說什么用dompdf、mpdf。最后我都把phpexcel換成PhpSpreadsheet這個了,總算是轉換成功了,但是問題來了,中文亂碼,樣式大改變,果斷先放棄,看看別的辦法,實在不行再回來研究。試試之前看的com加openoffice吧,這個可以實現,最開始覺得麻煩沒愛用,先上代碼。

        <?php namespace AppLibs;   class Office2pdf { private $osm; public function __construct() { $this->osm = new COM("com.sun.star.ServiceManager")or die ("Please be sure that OpenOffice.org is installed.n");  } public function MakePropertyValue($name,$value) { $oStruct = $this->osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue"); $oStruct->Name = $name; $oStruct->Value = $value; return $oStruct; } public function transform($input_url, $output_url) { $args = array($this->MakePropertyValue("Hidden",true));   $oDesktop = $this->osm->createInstance("com.sun.star.frame.Desktop");   $oWriterDoc = $oDesktop->loadComponentFromURL($input_url,"_blank", 0, $args); $export_args = array($this->MakePropertyValue("FilterName","writer_pdf_Export"));   $oWriterDoc->storeToURL($output_url,$export_args); $oWriterDoc->close(true); return $this->getPdfPages($output_url); } public function run($input,$output) { $input = "file:///" . str_replace("\","/",$input); $output = "file:///" . str_replace("\","/",$output); return $this->transform($input, $output); } /** * 獲取PDF文件頁數的函數獲取 * 文件應當對當前用戶可讀(linux下) * @param  [string] $path [文件路徑] * @return int */ public function getPdfPages($path) { if(!file_exists($path)) return 0; if(!is_readable($path)) return 0; // 打開文件 $fp=@fopen($path,"r"); if (!$fp)  { return 0; } else  { $max=0; while(!feof($fp))  { $line = fgets($fp,255); if (preg_match('//Count [0-9]+/', $line, $matches)) { preg_match('/[0-9]+/',$matches[0], $matches2); if ($max<$matches2[0]) $max=$matches2[0]; } } fclose($fp); // 返回頁數 return $max; } }   }

        這個方法是轉發的,在這里謝過大神,想必都看到了,有命名空間,那就簡單說一下laravel引用自己的類庫方法吧,度娘都可以找到,在App下建一個文件夾Libs,然后把類庫放進去,寫好命名空間,然后在composer.json中……上代碼

        "autoload": {         "files": [             "app/Libs/Office2pdf.php"         ]     } /*這段是加入的,如果有files直接把你的類文件路徑放進去就行 "files": [             "app/Libs/Office2pdf.php"         ] */

        然后在項目根目錄下執行composer dump-autoload,然后在控制器中引用,new就行了

        use appLibsOffice2pdf; $r = new Office2pdf;  //實例化后就可以用了

        邏輯好像出現了一點問題,沒有告訴你們安裝openoffice,去下載一個安裝上,然后需要設置一下,東西都寫一起了,有點亂啊,接下來上配置,百度都有教程,我也記錄下來吧,方便以后自己用

        OpenOffice 安裝完成之后,按 win+R 快捷鍵進入運行菜單,輸入 Dcomcnfg 打開組件服務。

        [組件服務] >> [計算機] >> [我的電腦] >> [DCOM配置] >> [OpenOffice Service Manager]

        右鍵打開屬性面板,選擇安全選項卡,分別在 啟動和激活權限 和 訪問權限 上勾選自定義,添加 Everyone 的權限。權限全開

        再選擇標識選項卡,勾選 交互式用戶,保存設置后退出。

        安裝完 OpenOffice 后,需要啟動一次確認軟件可以正常運行,然后再打開命令行運行以下命令:

        切換到安裝目錄: cd C:Program FilesOpenOffice 4program

        后臺運行該軟件: soffice -headless-accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

        PS:該命令只需要執行一次,就可以使軟件一直在后臺運行,即使重啟服務器也不受影響。

        接下來配置開啟php擴展

        如果是 PHP5.4 以前的版本,需要在 php.ini 里把 com.allow_dcom = true 打開(即去掉前面的分號)。

        如果是 PHP5.4 之后的版本,則要在 php.ini 里增加一行擴展 extension = php_com_dotnet.dll 。

        重啟 Apache 或 IIS 服務器,打印 phpinfo() 信息,檢查 com_dotnet 擴展是開啟。

        檢查 php 的 ext 目錄中 是否存在 com_dotnet.dll 文件,如果沒有請自行下載對應版本的 dll。

        然后用上面的類方法就可以實現excel轉pdf了,這里還有一些需要注意的就是打印區域、打印大小、是否打印到一頁,這個問題要在excel模板中定義好,轉換的時候會讀取excel中的源數據,這個問題也難了我好久,好像就沒有不難的,如果你們厲害可以研究下有沒有接口可以在openoffice中設置,如果有請把鏈接給我,嘿嘿。

        推薦學習:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 一色屋精品视频在线观看| 人人妻人人澡人人爽人人精品97 | 第一福利永久视频精品| 久久五月精品中文字幕| 最新亚洲精品国自产在线观看| 精品人妻系列无码天堂| 最新在线精品国自av| 久久夜色撩人精品国产| 国产成人精品久久亚洲高清不卡| 精品爆乳一区二区三区无码av| 亚欧乱色国产精品免费视频| 国内精品久久久久久久久电影网| 日韩精品www| 91麻豆精品视频| 精品亚洲A∨无码一区二区三区| 亚洲电影日韩精品| 欧美精品三区| 国产乱人伦精品一区二区在线观看 | 国产成人精品福利网站在线观看| 国产女人精品视频国产灰线| 亚洲AV无码成人精品区在线观看 | 国产女主播精品大秀系列| 人人妻人人澡人人爽人人精品 | 久久这里只有精品首页| 国产成人亚洲精品青草天美| 嫩草伊人久久精品少妇AV| 亚洲精品无码av人在线观看| 中文国产成人精品久久亚洲精品AⅤ无码精品| 麻豆国产高清精品国在线| 国内精品免费久久影院| 精品国产香蕉伊思人在线在线亚洲一区二区| 国产精品JIZZ在线观看老狼| 国产精品成人99久久久久91gav| 国产精品无打码在线播放| 国产精品一区在线观看你懂的| 国产精品 一区 在线| 国产精品极品美女自在线观看免费| 国产精品一香蕉国产线看观看 | 亚洲国产精品无码久久SM| 亚洲精品V欧洲精品V日韩精品 | 国产精品九九久久免费视频 |