有没有批量将 DOCX 保留图表和图片转换为 HTML 的方法?

2022-03-04 14:53:25 +08:00
 colatea

单位有近万个 docx 文档需要批量转换为 html,并需要保留图表(可转换为图片)

目前做过的尝试

1.WPS 可以完美转换,但不能批量,尚未找到能调用的接口

2.pydocx,无法保留图表

3,pandoc,无法保留图表及图片

4,mammoth,没装,看文档是无法保留图表的

5,LibreOffice,我已经急病乱投医了,这个转完的文件像一坨屎一样糊在我的桌面上,而且打开以后更是屎....

目前的想法有两条路

1,第三方代码解决,貌似够呛了

2,控制 WPS 或 WORD 等编辑工具进行批量另存

请大神指点一二

2725 次点击
所在节点    Python
12 条回复
lneoi
2022-03-04 14:56:39 +08:00
围观 之前找的也是没办法保留表格
RickyC
2022-03-04 14:57:47 +08:00
猜想用 宏或者 COM 接口 操作 WPS 或 Word 的接口,用 Save as 保存为网页
xylophone21
2022-03-04 15:00:06 +08:00
@RickyC 如果文件个数很多,一个一个的打开,点宏也还是蛮大的工作量的
RickyC
2022-03-04 15:00:17 +08:00
https://docs.microsoft.com/zh-tw/office/vba/api/word.saveas2

参考以上,但未测试是否可保留图表
RickyC
2022-03-04 15:00:59 +08:00
@xylophone21 当然不是手动打开;用宏可以批量,用别的语言操作 com 也可以批量。
cwcc
2022-03-04 15:01:57 +08:00
同求,不过我的看法是现在 Word 格式虽然是开放的但还是很复杂,复杂就有点私有那味了,也就是不能完全通过自己的代码来操控 DOCX 文件内的每一个细节。

我之前是尝试使用各种语言的各种库生成 DOCX ,但反过来就很难。(因为有时候你永远也不能确定这份 Word 文档的一段简单的文字格式有多复杂)
MuSeCanYang
2022-03-04 15:16:43 +08:00
Aspose. Words
murmur
2022-03-04 15:24:34 +08:00
libreoffice 转 pdf 可以啊,为什么非得 html ,要求 html 本身就是过分,文档预览都用的 canvas 渲染
colatea
2022-03-04 15:31:08 +08:00
找到办法了
https://blog.csdn.net/lzl001/article/details/8435048

pip install pypiwin32

app = Dispatch('Word.Application')
doc = app.Documents.open('D:\\doc\\test.docx')
doc.SaveAs('D:\\html\\test.html', 8)
doc.Close()
app.Quit()
colatea
2022-03-04 15:33:10 +08:00
@murmur 我要把 docx 打散,把里面的内容提取出来入数据库的
yangyaofei
2022-03-04 16:26:48 +08:00
可以用 libreoffice + Jodconvert 转换格式 如果是 linux 的话, win 下用 win32 确实最好了

但是,你要提取内容为啥不直接用类似 POI 的库去读,或者更暴力点,解压开了之后里面就是一堆 xml 和图片,随便搞
shayuvpn0001
2022-03-05 12:01:24 +08:00
这个需求其实最好是用微软亲儿子来实现,简单的 VBA ,复杂的上 VSTO 。你上面的语句也是背后启动了 Word ,调用 word 的另存为功能实现的。

如果一切顺利,这个确实是可以跑到天荒地老。一旦碰到文档有问题,比如编码不对,死机没及时保存等,python 可能跑到这里就自动终止了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/837971

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX