目录导航
-
撤销(Ctrl+Z)
-
重做(Ctrl+Y)
-
清空
-
H
标题(Ctrl+1~6)
- 一级标题
- 二级标题
- 三级标题
- 四级标题
- 五级标题
- 六级标题
-
粗体(Ctrl+B)
-
斜体(Ctrl+I)
-
删除线
-
插入引用(Ctrl+Q)
-
无序列表(Ctrl+U)
-
有序列表(Ctrl+O)
-
表格
-
插入分割线
-
插入链接(Ctrl+L)
-
插入图片
- 添加图片链接
-
插入代码块
-
保存(Ctrl+S)
-
开启预览
-
开启目录导航
-
关闭同步滚动
-
全屏(按ESC还原)
#### 安装PhpOffice\PhpWord插件 ``` composer require phpoffice/phpword ``` #### 服务器安装 word转pdf 工具 ``` sudo apt-get install unoconv /usr/share/fonts 新建一个目录 win 把字体文件放进去 sudo apt-get -y install fontconfig xfonts-utils unoconv -f pdf aa.docx ``` #### php代码 (shell_exec() 中的命令千万不能含有中文字符) ``` use PhpOffice\PhpWord\TemplateProcessor; public function downloadAgreement() { $name = "factory_authorization_20200115"; //指定模板文件 $templateProcessor = new TemplateProcessor(J7SYS_WEB_DIR."/res/agreement/{$name}.docx"); //通过setValue 方法给模板赋值 $templateProcessor->setValue('factory_name', $this->_factory['title']); $templateProcessor->setValue('year', date("Y")); $templateProcessor->setValue('month', date("m")); $templateProcessor->setValue('day', date("d")); $dir = iconv("UTF-8", "GBK", J7SYS_WEB_DIR."/res/agreement/tmp/");//保存路径 if (!file_exists($dir)) { mkdir($dir, 0777, true); // 如果保存目录不存在就创建新目录 } $name .= '_' . $this->_factory['fid']; $filename = $dir . $name . '.docx'; $templateProcessor->saveAs($filename); //另存为新word文档,根据模板和变量生成了新的文档 //word转pdf //sudo apt-get install unoconv ///usr/share/fonts 新建一个目录 win 把字体文件放进去 //sudo apt-get -y install fontconfig xfonts-utils //unoconv -f pdf aa.docx $cmd = "/usr/bin/unoconv -f pdf ". $filename; flog($cmd, 'unoconv_tmp'); shell_exec($cmd); $file_dir = $dir . $name . '.pdf'; // 下载文档 //检查文件是否存在 if (!file_exists($file_dir)) { header('HTTP/1.1 404 NOT FOUND'); } else { $file = fopen($file_dir, "rb");//以只读和二进制模式打开文件 Header("Content-type: application/octet-stream"); //告诉浏览器这是一个文件流格式的文件 Header("Accept-Ranges: bytes"); //请求范围的度量单位 Header("Accept-Length: " . filesize($file_dir)); //Content-Length是指定包含于请求或响应中数据的字节长度 //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。 Header("Content-Disposition: attachment; filename={$name}.pdf"); echo fread($file, filesize($file_dir)); //读取文件内容并直接输出到浏览器 fclose($file); exit(); } } ```
安装PhpOffice\PhpWord插件
composer require phpoffice/phpword
服务器安装 word转pdf 工具
sudo apt-get install unoconv
/usr/share/fonts 新建一个目录 win 把字体文件放进去
sudo apt-get -y install fontconfig xfonts-utils
unoconv -f pdf aa.docx
php代码 (shell_exec() 中的命令千万不能含有中文字符)
use PhpOffice\PhpWord\TemplateProcessor;
public function downloadAgreement()
{
$name = "factory_authorization_20200115";
//指定模板文件
$templateProcessor = new TemplateProcessor(J7SYS_WEB_DIR."/res/agreement/{$name}.docx");
//通过setValue 方法给模板赋值
$templateProcessor->setValue('factory_name', $this->_factory['title']);
$templateProcessor->setValue('year', date("Y"));
$templateProcessor->setValue('month', date("m"));
$templateProcessor->setValue('day', date("d"));
$dir = iconv("UTF-8", "GBK", J7SYS_WEB_DIR."/res/agreement/tmp/");//保存路径
if (!file_exists($dir)) {
mkdir($dir, 0777, true); // 如果保存目录不存在就创建新目录
}
$name .= '_' . $this->_factory['fid'];
$filename = $dir . $name . '.docx';
$templateProcessor->saveAs($filename); //另存为新word文档,根据模板和变量生成了新的文档
//word转pdf
//sudo apt-get install unoconv
///usr/share/fonts 新建一个目录 win 把字体文件放进去
//sudo apt-get -y install fontconfig xfonts-utils
//unoconv -f pdf aa.docx
$cmd = "/usr/bin/unoconv -f pdf ". $filename;
flog($cmd, 'unoconv_tmp');
shell_exec($cmd);
$file_dir = $dir . $name . '.pdf';
// 下载文档
//检查文件是否存在
if (!file_exists($file_dir)) {
header('HTTP/1.1 404 NOT FOUND');
} else {
$file = fopen($file_dir, "rb");//以只读和二进制模式打开文件
Header("Content-type: application/octet-stream"); //告诉浏览器这是一个文件流格式的文件
Header("Accept-Ranges: bytes"); //请求范围的度量单位
Header("Accept-Length: " . filesize($file_dir)); //Content-Length是指定包含于请求或响应中数据的字节长度
//用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。
Header("Content-Disposition: attachment; filename={$name}.pdf");
echo fread($file, filesize($file_dir)); //读取文件内容并直接输出到浏览器
fclose($file);
exit();
}
}
评论
请
登录后发表观点