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}");
    }
    ```
相关推荐
吴声子夜歌3 分钟前
ES6——Symbol详解
开发语言·javascript·es6
星辰徐哥4 分钟前
C语言运算符的优先级与结合性详解
c语言·开发语言
HZ·湘怡4 分钟前
顺序表 2 续集 c 实现增删查改
c语言·开发语言·顺序表
han_hanker5 分钟前
js 加减乘除精度问题2
开发语言·javascript·ecmascript
红目香薰5 分钟前
Ascend C 算子:Sigmoid 函数原理深入解析与工程化构建及验证
c语言·开发语言·华为·华为云·昇腾·cann·modelarts
OTWOL6 分钟前
C语言操作符终极揭秘:表达式求值秘籍
c语言·开发语言·c++
无巧不成书02186 分钟前
Java 21 LTS 高级特性零基础通关:静态导入、项目目录规范、泛型全实战
java·开发语言·标准目录结构·泛型原理·类型安全实现
张np12 分钟前
java框架和http调用接口的区别
java·开发语言·http
weixin_4166600715 分钟前
从标记语言到 Word 文档:AI 生成的 Mermaid 与 LaTeX 自动化转换的技术方案解析
word·latex·数学公式·deepseek
李日灐16 分钟前
【优选算法3】二分查找经典算法面试题
开发语言·c++·后端·算法·面试·二分查找·双指针