php excel转换成pdf的方法:首先在App下建一个文件夹Libs;然后把类库放进去,并写好命名空间;接着修改composer.json;最后在项目根目录下执行composer dump-autoload即可。
本文操作环境:windows7系统、PHP7.1版,DELL G3电脑
php excel怎么转换成pdf?
php excel转pdf
接下来说说excel转pdf这个坑,这个是真坑啊,好多说什么用dompdf、mpdf。最后我都把phpexcel换成PhpSpreadsheet这个了,总算是转换成功了,但是问题来了,中文乱码,样式大改变,果断先放弃,看看别的办法,实在不行再回来研究。试试之前看的com加openoffice吧,这个可以实现,最开始觉得麻烦没爱用,先上代码。
<?php namespace App\Libs; 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); $oWr<strong style="color:transparent">来源gaodai#ma#com搞@@代~&码网</strong>iterDoc->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 app\Libs\Office2pdf; $r = new Office2pdf; //实例化后就可以用了
逻辑好像出现了一点问题,没有告诉你们安装openoffice,去下载一个安装上,然后需要设置一下,东西都写一起了,有点乱啊,接下来上配置,百度都有教程,我也记录下来吧,方便以后自己用
OpenOffice 安装完成之后,按 win+R 快捷键进入运行菜单,输入 Dcomcnfg 打开组件服务。