V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
lvwzhen
V2EX  ›  问与答

大家有没有比较好的 HTML 导出 Word 的方案?

  •  2
     
  •   lvwzhen · 2017-01-09 11:09:02 +08:00 · 7784 次点击
    这是一个创建于 2867 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需要使用PHP将 HTML 模版到处 Word 文件,需要保留中文字体、文档格式,谢谢了。
    29 条回复    2023-04-14 16:48:57 +08:00
    scnace
        1
    scnace  
       2017-01-09 11:16:59 +08:00 via Android   ❤️ 1
    我们上次试了好几个 会有乱码 OR 格式错误 所以我们自己根据 WordXML 撸了一个 就是撸了个类似 SDK 的东西 把各种样式封装下就可以了 …
    springmarker
        2
    springmarker  
       2017-01-09 11:20:10 +08:00 via Android   ❤️ 1
    先做好 word 的模板,然后导出 html 格式,然后 replace 需要填写的内容
    Tink
        3
    Tink  
       2017-01-09 11:27:34 +08:00   ❤️ 1
    我当时用过 phpoffice , 还挺好用的
    murmur
        4
    murmur  
       2017-01-09 11:34:23 +08:00
    没有也不可能有,随便打开一个页面,按下 ctrl-p ,看显示的什么乱七八糟的东西,就这个页面就可以
    如果连页面本身都没有单独设置打印格式,那自己转换不是更难?强行把宽屏页面缩到一张 a4 纸,笨想也不可能
    lvwzhen
        5
    lvwzhen  
    OP
       2017-01-09 11:35:53 +08:00
    @scnace Word 的格式太难搞了,我先是 HTML 导出 PDF ,再从 PDF 转 Word 。 PDF 的格式好掌握,到了 Word 完全是乱的。
    lvwzhen
        6
    lvwzhen  
    OP
       2017-01-09 11:37:01 +08:00
    @murmur HTMl 模版是单独写的,不是其他网站,现在就是 HTML 转 Word 的格式问题很难解决。
    lvwzhen
        7
    lvwzhen  
    OP
       2017-01-09 11:38:02 +08:00
    @springmarker 最后的 replace 步骤需要怎么实施呢,还请赐教,谢谢 😊
    lvwzhen
        8
    lvwzhen  
    OP
       2017-01-09 11:39:13 +08:00
    @Tink 现在也在用 PHPWord ,还有许多格式问题没解决,还问下大家有没有比较成熟的方案,谢谢。
    springmarker
        9
    springmarker  
       2017-01-09 11:47:21 +08:00 via Android
    @lvwzhen php 没有替换字符串的方法吗
    springmarker
        10
    springmarker  
       2017-01-09 11:51:32 +08:00 via Android   ❤️ 1
    哦,对了, office 是识别 html 的格式的,你直接把 html 格式后缀改成 docx 就可以,这个方法并不完美,其实导出为 xml 格式再 replace 也可以
    springmarker
        11
    springmarker  
       2017-01-09 12:01:02 +08:00 via Android
    不知道你的业务是需要不固定样式的页面导出 word 还是固定的模板导出 word ,我的方法只适用于后者
    lvwzhen
        12
    lvwzhen  
    OP
       2017-01-09 12:02:42 +08:00
    @springmarker 还真的可以,就是格式需要稍微微调一下,我之前还没想到。现在试下 html 和 xml 这两个方案看那个最合适了,谢谢大家了 @scnace @Tink
    lygmqkl
        13
    lygmqkl  
       2017-01-09 13:45:37 +08:00
    @springmarker 直接 a.html 改 a.docx ,稍微编辑下保存,直接报错,请问知道什么原因吗


    该网页将用以组织支持文件的文件夹已经保留为在当前位置上使用
    springmarker
        14
    springmarker  
       2017-01-09 14:06:08 +08:00 via Android
    @lygmqkl 随便一个 html 改后缀肯定不行啊,先在 word 里面排好模板,需要填入的地方做标记,然后用 office 导出 html 或者 xml ,推荐 xml ,然后替换标记,其实这不是个好办法,相当于曲线救国,很容易出错,而且有图片什么的很麻烦,当时我也是很苦恼啊,七撞八撞搞得勉强能看,但是并不完美,第三方都找不到, wps 也不是也不能完美支持 office 吗,这样的需求我觉得还是很恶心的,尽量用 pdf 吧
    murmur
        15
    murmur  
       2017-01-09 14:12:58 +08:00   ❤️ 1
    xml->doc 这个思路是对的,但是 xml 的模板必须用 word 生成, word 是可以直接保存为 xml 的,然后这个 word xml 再另存为标准 doc 就 ok ,这个是格式损失最少的
    何况、、、这个 xml 编辑起来也不那么容易,不过能转换就很好了
    lvwzhen
        16
    lvwzhen  
    OP
       2017-01-09 14:48:48 +08:00
    @lygmqkl .html 改为 .doc,再另存为.docx 是可以正常编辑保存的。但是太麻烦了,我现在是使用 XML to doc ,基本是无损转换,内容编辑 XML 就可以。
    lygmqkl
        17
    lygmqkl  
       2017-01-09 15:11:54 +08:00
    @springmarker pdf 库有比 mpdf 更好的吗?
    aitaii
        18
    aitaii  
       2017-01-09 16:04:45 +08:00   ❤️ 1
    做过 java 的,做一个 word demo 样式基本不会变,保存为 xml 文件,替换 xml 文件的关键内容,保存为 doc 格式的, docx 格式略微多了一些。
    aitaii
        19
    aitaii  
       2017-01-09 16:05:24 +08:00
    图片按照格式转为 base64 的就可以了。
    lvwzhen
        20
    lvwzhen  
    OP
       2017-01-09 16:28:24 +08:00
    @aitaii 现在就是用这个方法做的,效果还挺好的。
    aitaii
        21
    aitaii  
       2017-01-09 16:40:48 +08:00
    @lvwzhen 多个文档合并感觉有些蛋疼。不过没这需求最好了。
    svenFeng
        22
    svenFeng  
       2017-01-09 22:43:59 +08:00 via Android   ❤️ 1
    既然没有人说哈斯凯尔写的 pandoc ?
    mingyun
        23
    mingyun  
       2017-01-09 22:46:09 +08:00
    @lygmqkl tcpdf
    lvwzhen
        24
    lvwzhen  
    OP
       2017-01-10 10:58:21 +08:00
    @svenFeng pandoc 早就试过了,样式丢失很严重,没有使用。
    constantine008
        25
    constantine008  
       2019-11-27 14:42:23 +08:00
    9102 年了,不知道现在有没有更好的方法
    redbelt
        26
    redbelt  
       2020-07-03 14:33:52 +08:00
    我提供一个能保证格式良好的思路:

    xml 模版( docx 可以导出 xml ) + 模版引擎
    vipbic
        27
    vipbic  
       2022-02-22 14:03:54 +08:00
    你是不是在做招标工具,我也遇到这个问题, 你是咋搞定的
    lvwzhen
        28
    lvwzhen  
    OP
       2022-02-22 14:18:46 +08:00
    @vipbic 保存为 xml 文件,替换 xml 文件的关键内容,再重新保存为 doc 格式。
    iamniconico
        29
    iamniconico  
       2023-04-14 16:48:57 +08:00
    当成 mhtml 打包进 docx
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2862 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:37 · PVG 10:37 · LAX 18:37 · JFK 21:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.