PHP使用pandoc把markdown文件转为word

文章目录

服务器操作系统是Linux,centos

首先安装pandoc

shell 复制代码
yum install -y pandoc

安装完成后输入如下代码,检查安装是否成功

shell 复制代码
pandoc --version

PHP处理

我把markdown内容存到了数据库里,所以要从数据库读取内容。对内容需要做一些处理。

  • 图片的路径要转为绝对路径,不然pandoc导出的word没有图片。
  • 把处理后的内容生成md文件
  • 调用pandoc把md文件转为word
php 复制代码
public function download(){
        $id=input('id/d',0);
        $info=Db::name('article')->find($id);
          //测试使用pandoc转word
        // 使用正则替换:捕获完整路径,将图片路径改为绝对路径
        $newContent = preg_replace_callback(
            '/\((\/uploads\/\d{8}\/([a-zA-Z0-9_\-]+(?:\.[a-zA-Z0-9]+)?(?:\?.*)?))\)/',
            function ($matches) {
                // $matches[2] 是文件名(不含路径)
				//ROOT_PATH是根目录路径常量
                return '(' . ROOT_PATH.$matches[1] . ')';
            },
            $info['content']
        );
        $f='/ziptemp/'.$info['title'].'.md';
        $mdFile=ROOT_PATH.$f;
        //生成md文件
        file_put_contents($mdFile,$newContent);
        $wf='/ziptemp/'.$info['title'].'.docx';
        $outputFile=ROOT_PATH.$wf;
        //转成的word路径
        exec("pandoc {$mdFile} -o {$outputFile}");
    }
    ```
相关推荐
dialect_7 小时前
KMP算法
开发语言·c++·算法
总要学点什么8 小时前
第89篇:三维特效-螺旋圆效果——让螺旋臂卷起一圈圈外扩的涟漪
开发语言·javascript·ecmascript·webgl·cesium·空间分析·1024程序员节
开开心心_Every9 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c9 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
吴卫斌9 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
超级架构师10 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮11 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
Escalating_xu11 小时前
【Linux 网络编程】DNS 与 ICMP:从域名解析到 ping、traceroute,把“网络通不通”问清楚
linux·网络·php
LMT流氓兔12 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真12 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法