PHP 将HTML转成PDF文件,HTML 转word,Word 转Html
html转 PDF 用MPDF ,Word转Html 纯PHP的方法暂未找到Word直接转PDF的方法 可以使用 LibreOffice 6.1 (Liunx,win) 皆可使用
文件又大转换又要快就用 https://gitee.com/bandung/Execl_WordTOPDF.git 吧
Html转成PDF
MPDF 6.0 下载地址
https://files.cnblogs.com/files/wlphp/mpdf.rar (复制到浏览器下载)
MPDF6.0 没有用命名空间,7.0 开始使用
require APP_PATH.'Lib/ORG/mpdf/mpdf/mpdf.php';
try{
$mpdf=new \mPDF('zh-cn','A4', 0, '宋体', 0, 0);
$html=file_get_contents("index.html");
$html = str_replace('margin-left:100px;', '', $html);// es
//7.0 写法
// $mpdf = new \mPDF(['utf-8', 'A4', 16, '', 10, 10, 15, 1]);
$mpdf->SetDisplayMode('fullpage');
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML($html);
$mpdf->Output(); //直接输出到页面
$fileName=APP_PATH.'File/'.uniqid().'.pdf'; //保存到文件
$mpdf->Output($fileName);
}catch (Exception $e){
return false;
}
样式保存的还是可以的,但是要注意css 里面如果body 有左边距,右边距的都得删掉,不然样式就乱了,速度非常尴尬!!
Html转word
生成的文件得是docx,不然PHPWod读取会失败
/**
* @param $form
* @param $to
* html转word文档
*/
public function htmlToWord($form,$to){
$path=APP_PATH."/File/old.html";
$isHave=file_exists($path);
if(empty($isHave)){
$this->error("文件不存在!");
}
$zhi=file_get_contents($path);
//把左边距替换掉
$str1 = str_replace('margin-left:100px;', '', $zhi);// es
echo $str1;
$this->make($zhi);
}
private function make($html){
$wordname=uniqid().'.docx';
ob_start();
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:w="urn:schemas-microsoft-com:office:word"
xmlns="http://www.w3.org/TR/REC-html40">';
@header('Content-type:application/word');
header('Content-Disposition: attachment; filename='.$wordname.'');
@readfile($wordname);
ob_flush();//每次执行前刷新缓存
flush();
}
Word转Html
//如果用的框架支持命名空间
直接去github上 按照Composer 使用 https://github.com/PHPOffice/PHPWord
如果用的不支持命名空间 如TP3.1 还想用最新的PHPWord
下载Composer的命名
http://ys-c.ys168.com/601902945/TjRTkMn7W334U6IGMP65/vendor.rar.
require进来,其实用了这个的话laravel支持的composer安装的库基本也支持了
/**
* @param $from
* @return bool|string
* word转成Html文件
*/
public function wordToHtml($from)
{
try{
$phpWord = \PhpOffice\PhpWord\IOFactory::load($from);
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, "HTML");
$fileName=uniqid().".html";
$xmlWriter->save(APP_PATH.'File/'.$fileName);
return $fileName;
}catch (Exception $e){
return false;
}
}
LibreOffice 转换用法
自行百度安装 200多MB
//速度很快执行完基本就转换完成了,然后
exec("soffice --headless --convert-to html fuck2.doc php.html");
soffice --headless --convert-to html("想要转换成的文件类型") fuck2.doc("源文件") php.html("转换成的文件")
这个支持的类型就多了,可以直接把word转成pdf,但是样式很成问题。。。
!!!