码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • phpword生成PDF


    接上一篇phpword生成word文档,如有不明白的问题可以先查看上一篇文章

    首先,生成PDF需要先生成word文档,而后通过word文档生成HTML文档,最后才可以通过HTML文档生成PDF文件,详细代码如下。

    执行命令安装phpword:

    composer require phpoffice/phpword

    将word转为HTML然后转为PDF的后端代码如下:

    1. public function wordToPdf()
    2. {
    3. $order_id = request()->get('order_id');
    4. $sale_order = SaleOrderModel::with(['customer'])->where('id',$order_id)->first();
    5. $file_name= $sale_order['contract'];//此字段存储的是生成好的word的文件地址
    6. $file = public_path('storage/'.$file_name);
    7. $phpWord = IOFactory::load($file);
    8. $html = IOFactory::createWriter($phpWord ,'HTML');
    9. // 设置Dompdf
    10. $dompdf = new Dompdf();
    11. // 将Word文档内容转换为HTML
    12. $html->save(storage_path('app/public/contract/'.$order_id.'.html'));
    13. $html = file_get_contents(base_path().'/public/storage/contract/'.$order_id.'.html');
    14. //这几步是因为复杂的HTML样式不被识别,所以将其替换掉
    15. $css = <<<HTML
    16. *{ font-family: simsun, DejaVu Sans, sans-serif;}
    17. HTML;
    18. $font = "font-family: '宋体';";
    19. $style = "* {";
    20. $style_new = "* { word-wrap: break-word;";
    21. $search = '';
    22. $html = str_replace($search,$css.'',$html);
    23. $html = str_replace($font,'',$html);
    24. $html = str_replace($style,$style_new,$html);
    25. // 加载HTML到Dompdf
    26. $dompdf->loadHtml($html);
    27. $dompdf->setPaper('A4', 'portrait');
    28. // file_put_contents($target, $dompdf->output());
    29. // 渲染HTML为PDF
    30. $dompdf->render();
    31. $pdf_name = $sale_order->customer->name;
    32. return $dompdf->stream($pdf_name);
    33. }

    前端的页面样式(建议先查看上一篇文章PHP+laravel 生成word):

    1. {
    2. "type": "link",
    3. 'body':'PDF下载',
    4. "className" : "pdf_span span",
    5. "href": "{{admin_url('sale-order/wordToPdf?order_id='.$order_id)}}",
    6. "style": {
    7. "margin-left": "80px",
    8. "margin-top" : "5px",
    9. "padding" : "3px 12px",
    10. }
    11. },

     其中需要使用字体文件,下载文字包地址

    https://download.csdn.net/download/QiZong__BK/89482065?spm=1001.2014.3001.5503

    这样就完成啦

  • 相关阅读:
    LeetCode 2354. 优质数对的数目 二进制01表示和集合之间的转换
    如何开家有品味的咖啡馆
    【机器学习的数学基础】(一)线性代数(Linear Algebra)(上+)
    Linxu学习——上
    soapui
    近地面无人机植被定量遥感与生理参数反演
    Spring事务与事务传播机制
    盛最多水的容器,三数之和 ,有效的括号
    算法入门(四):二分法的详解与扩展
    System Generator初体验FIR滤波器
  • 原文地址:https://blog.csdn.net/QiZong__BK/article/details/139965378
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号