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}");
    }
    ```
相关推荐
淡海水8 分钟前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
北i1 小时前
Dubbo 默认超时重试:把下游打雪崩的隐形放大器
开发语言·qt·dubbo
10mAh1 小时前
【Java】ArrayList 遍历删除为什么报错?三种写法与漏删复现
java·开发语言·windows
wewowilling2 小时前
AI大模型开发--01Python基础(无废话)
开发语言·python·函数
WeiXin_DZbishe2 小时前
基于微信小程序的本地闲置物品交易平台-计算机毕设 附源码【课程设计】26825
vue.js·spring boot·python·微信小程序·架构·php·课程设计
小羊没烦恼!2 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
棉猴2 小时前
玩游戏学Python5-函数
开发语言·python·函数·玩游戏·游戏编程
谢亮_vipxieliang2 小时前
JavaScript this 指向完全指南:调用位置决定一切
开发语言·javascript·ecmascript
denlaku2 小时前
JDK 13 新特性详解
java·开发语言
唐青枫3 小时前
Yii2 Controller 详解:路由、Action、过滤器与 CRUD 实战
php