使用CMake脚本通过pandoc对docx文件转换为html遇到的问题

(这篇不涉及pandoc用法,默认你会,不会就去比站大学找个视频看两眼)

  • 当时是为了批量转换程序帮助文档的格式,将docx转为html,开始是通过bat脚本调用pandocps1脚本文件进行转换,代码如下:
    .bat文件:
    在这里插入图片描述
    .ps1文件:
    在这里插入图片描述
    因为docx文件中有表格,为了转换后表格显示正常,添加了styles.css的层叠样式,如下:
    .css文件:
    在这里插入图片描述
    以上文件内容都可让AI生成(本人不懂前端,所以css这些都是AI的)。
    =================那么问题来了:
  • 后面要求用CMake进行实现,让AI给出了代码,下面只给出出问题的代码:
execute_process(
    COMMAND ${PANDOC_EXECUTABLE}
    "${CMAKE_CURRENT_SOURCE_DIR}/${DOCX_FILE}"
    -o "${HTML_FILE}"
    --embed-resources
    --standalone
    --css="${STYLESHEET}"
    RESULT_VARIABLE RESULT
)

此时styles.css被CMake定义为${STYLESHEET},以为会跟之前脚本一样正常调用执行,结果运行正常,但是生成的html文件中表格不见了。中间调整了很多遍行不通,后面实在没办法了,想着不要脚本了,试试将样式直接写进去,如下:

###先说明这部分代码运行结果有问题
execute_process(
    COMMAND ${PANDOC_EXECUTABLE} 
        "${CMAKE_CURRENT_SOURCE_DIR}/${DOCX_FILE}" 
        -o "${HTML_FILE}" 
        --from=docx
        --to=html5
        --embed-resources 
        --standalone 
        --metadata pagetitle="Generated Document"
        --metadata css="<style>
table {
    border-collapse: collapse;
    width: 100%;
}
th, td {
    border: 1px solid #ddd;
    padding: 8px;
}
th {
    background-color: #f2f2f2;
    text-align: left;
}
</style>"
    RESULT_VARIABLE RESULT
)

还是没有表格,失败!说这个就是希望懂这个或者有这个想法的大佬帮忙看看为啥会失败,下面看不失败的:

#这个成功了
    execute_process(
    COMMAND ${PANDOC_EXECUTABLE} 
        "${CMAKE_CURRENT_SOURCE_DIR}/${DOCX_FILE}" 
        -o "${HTML_FILE}" 
        --embed-resources 
        --standalone 
        --template "${CMAKE_CURRENT_SOURCE_DIR}/custom_template.html"
    RESULT_VARIABLE RESULT
)

其中custom_template.html为当前脚本同路径下的一个html模版文件,如下:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>$pagetitle$</title>
    <style>
    table {
        border-collapse: collapse;
        width: 100%;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
    }
    th {
        background-color: #f2f2f2;
        text-align: left;
    }
    </style>
</head>
<body>
$body$
</body>
</html>

=====================我还是想摆脱额外的文件调用,方便代码移植,即有了下面的临时文件的方法,即用的时候生成模版文件,用完就删,如下:

# 定义模板内容
set(CUSTOM_TEMPLATE_CONTENT "<!DOCTYPE html>
<html>
<head>
    <meta charset=\"utf-8\">
    <title>$pagetitle$</title>
    <style>
    table {
        border-collapse: collapse;
        width: 100%;
    }
    th, td {
        border: 1px solid #ddd;
        padding: 8px;
    }
    th {
        background-color: #f2f2f2;
        text-align: left;
    }
    </style>
</head>
<body>
$body$
</body>
</html>")

# 将模板内容写入临时文件
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/temp_template.html" "${CUSTOM_TEMPLATE_CONTENT}")

# 执行 Pandoc 命令
execute_process(
    COMMAND ${PANDOC_EXECUTABLE} 
        "${CMAKE_CURRENT_SOURCE_DIR}/${DOCX_FILE}" 
        -o "${HTML_FILE}" 
        --from=docx
        --to=html5
        --embed-resources 
        --standalone 
        --template "${CMAKE_CURRENT_BINARY_DIR}/temp_template.html"
    RESULT_VARIABLE RESULT
)

# 删除临时模板文件(可选)
file(REMOVE "${CMAKE_CURRENT_BINARY_DIR}/temp_template.html")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值