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

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

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


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

    xml 模版( docx 可以导出 xml ) + 模版引擎
    vipbic
        27
    vipbic  
       
    你是不是在做招标工具,我也遇到这个问题, 你是咋搞定的
    lvwzhen
        28
    lvwzhen  
    OP
       Feb 22, 2022
    @vipbic 保存为 xml 文件,替换 xml 文件的关键内容,再重新保存为 doc 格式。
    iamniconico
        29
    iamniconico  
       Apr 14, 2023
    当成 mhtml 打包进 docx
    About     Help     Advertise     Blog     API     FAQ     Solana     1321 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 62ms UTC 17:16 PVG 01:16 LAX 10:16 JFK 13:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86