前提:安装phpword、tcpdf
须知:我并不是直接生成pdf的,布局什么太难受了,而且高度还有要求。这里是word转pdf,html转pdf,phpword可以直接生成word和html的,看了开发文档没有pdf,只有一行注释“/* Note: we skip PDF, because "HTML-to-PDF" approach is used to create PDF documents. */”,phpword开放文档
word转pdf
//不配置TCPDF路径报错
$PdfPath = App::getRootPath().'/vendor/tecnickcom/tcpdf';
\PhpOffice\PhpWord\Settings::setPdfRendererPath($PdfPath);
\PhpOffice\PhpWord\Settings::setPdfRendererName('TCPDF');
//这里是你的word文件
$phpWord = \PhpOffice\PhpWord\IOFactory::load(App::getRootPath()."/public/西气东输2021-05-17.docx");
$xmlWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpWord , 'PDF');
$xmlWriter->save('result.pdf');
html转pdf
$orientation='P';
$unit='mm';
$format='A4';
$unicode=true;
$encoding='UTF-8';
$diskcache=false;
$pdfa=false;
$pdf = new \TCPDF($orientation, $unit, $format, $unicode, $encoding, $diskcache, $pdfa);
//中文乱码必须设置
$pdf->SetFont('stsongstdlight');
$pdf->AddPage();
$html = file_get_contents(App::getRootPath().'public/'.'西气东输2021-05-17.html');
$pdf->writeHTMLCell(0, 0, 0, 0, $html, 0, 0, false, false, '', false);
$fn = 'demo.pdf';
$pdfcontent = $pdf->Output('demo.pdf', 'S');
$fh = fopen($fn, "w");
fwrite($fh, $pdfcontent);
fclose($fh);
中文乱码
//方法一:如html转pdf
$pdf->SetFont('stsongstdlight');
//方法二:如word转pdf,需要到 tcpdf/config/tcpdf_config.php 中配置
define ('PDF_FONT_NAME_MAIN', 'stsongstdlight');
define ('PDF_FONT_NAME_DATA', 'stsongstdlight');
添加字体(stsongstdlight字体太黑了,这里下载了微软雅黑)
1.到网上下载对应的字体, 我下载的微软雅黑
2.把字体下载到tcptf\tools文件夹下面,有个tcpdf_addfont.php, 是web转换工具
3.在这个目录下, 左手按着shift, 右手点击右键选择 在此处打开 命令窗口
4.php ./tcpdf_addfont.php -b -t TrueTypeUnicode -f 97 -i msyh.ttf
5.这时就成功的把ttf字体转换到fonts文件夹下, 成为tcpdf可支持的字体了,同理, 也可以嵌入其它字体了
6.$pdf->SetFont('msyh', '', 10, '', true); //你就可以>中文乱码
网友评论