Blogger Information
Blog 2
fans 0
comment 0
visits 10640
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php生成PDF文件的方法
_
Original
5865 people have browsed it

本文介绍如何使用phpword生成PDF文件保存至本地的一些基本方法

一、安装

相关包和文档的链接地址放在文章末尾

切换到框架应用目录下,使用composer进行安装:

  1. composer require phpoffice/phpword

使用phpword生成PDF文件还需要引入一个PDF呈现库,这里使用tcpdf

  1. composer require tecnickcom/tcpdf

二、使用方法

composer安装成功后,即可直接引用

  1. use PhpOffice\PhpWord\PhpWord;
  2. use PhpOffice\PhpWord\IOFactory;
  3. /* 使用 */
  4. $phpWord = new PhpWord();
  5. /* 设置全局默认字体 */
  6. $phpWord->setDefaultFontName('仿宋');
  7. $phpWord->setDefaultFontSize(16);
  8. /* 实例化创建新的内容 */
  9. $section = $phpWord->addSection();
  10. /* 自定义字体样式 */
  11. $titleF = array(
  12. 'name' => '方正小标宋简体',
  13. 'color' => '000000',
  14. 'size' => 22,
  15. );
  16. /* 段落样式 */
  17. $titleP = array(
  18. 'alignment' => 'center' //start左对齐,end右对齐
  19. );
  20. /* 添加一段内容 */
  21. $section->addText('把第一段当成文档的标题', $titleF, $titleP);
  22. /* 其他段落样式 */
  23. $contentF = array(
  24. 'name' => '仿宋_GB2312', 'size' => 16, 'color' => '000000'
  25. );
  26. $contentP = array(
  27. 'alignment' => 'left',
  28. );
  29. /* 添加文档内容,使用单独格式;*/
  30. $section->addText(
  31. '这是内容的第一个段落,可以很长很很很长很长,反正就是一个段落可以很长很长。。反正就是一个段落随便打点字',
  32. $contentF,
  33. $contentP
  34. );
  35. $section->addText(
  36. '第二个段落,也是一样使用一样的格式,一次类推说明一下PHPWord是一个用纯PHP编写的库,它提供了一组用于写入和读取不同文档文件格式的类',
  37. $contentF,
  38. $contentP
  39. );
  40. $tcpdfPath = base_path('vendor/tecnickcom/tcpdf');
  41. \PhpOffice\PhpWord\Settings::setPdfRendererPath($tcpdfPath);
  42. \PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
  43. /* 保存为PDF 此处为windows本地测试环境,所以直接写死路径,仅作保存查看 */
  44. $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord, 'PDF');
  45. $objWriter->save('C:\Users\helloWorld.pdf');
  46. die('已按路径保存到本地,线上环境时可另外做下载');

注意:setPdfRendererPath的参数是呈现库的位置,需使用tcpdf包的绝对路径。phpword中仅支持DomPDF,TCPDF,MPDF这三种呈现库类库;所以我们这里setPdfRendererName需要设置的值为TCPDF。呈现库类库中默认不支持有中文字体,生成中文字体的pdf文件时,会出现一堆问号乱码的现象

在设置的目录下找到文件,查看生成的文件

这里就是为什么我们要选择使用tcpdf类库了,tcpdf中支持自定义安装ttf字体文件,注意!其他后缀类型的字体文件是不支持的,需要使用命令行安装所以要把PHP设置为环境变量方便操作;安装字体方法:

切换到 …\tecnickcom\tcpdf\tools ,复制要安装的字体文件到此目录下,在此位置打开命令行:

多个字体文件由,隔开,其他参数说明

  1. > php tcpdf_addfont.php -i .\fangsong.ttf,.\xiaobiaosong.ttf

执行安装成功,可以看到在../fonts文件夹中,已经生成了字体的相关文件


字体文件名称不支持显示中文,大家安装的字体文件名称需要改成英文。

其他使用参数说明请看

  1. |>php tcpdf_addfont.php -help

两种字体安装完毕

接着我们把代码中设置的字体名称,改成对应的字体文件名称

  1. $titleF = array(
  2. //'name' => '方正小标宋简体', //设置字体名称
  3. 'name' => 'xiaobiaosong', //改成
  4. 'color' => '000000', //字体颜色
  5. 'size' => 22, //字体大小;单位为(磅)
  6. );
  7. ------------------------------------
  8. /* 其他段落样式 */
  9. $contentF = array(
  10. 'name' => '仿宋_GB2312', 'size' => 16, 'color' => '000000'
  11. );
  12. 改成
  13. $contentF = array(
  14. 'name' => 'fangsong', 'size' => 16, 'color' => '000000'
  15. );

最后执行代码,完成生成PDF文件:

三、总结

生成PDF文件时,字体名称仅支持设置为../fonts目录下的字体,默认是没有中文字体的,使用到其他字体时,需要通过tcpdf_addfont.php进行安装,并设置字体名称安装后的字体文件名称

在phpword中,度量单位通常为twip,磅,英寸。并不能直接设置为字符,毫米等word中其他常用的度量单位;如需要设置量度单位为字符时,需要进行单位转换;


phpword更多使用相关要求查看官方软件包
phpword更多使用说明,属性配置请查看官方说明文档
tcpdf更多使用方法,请查看官方软件包

以上为php生成PDF文件的基本使用方法,更多相关属性设置,请参阅官方说明文档!

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post