我正在尝试将大量Visio文件从.vsd
转换为.html
,但每个文件都有很多页面,因此我需要将所有页面转换为单个{{1}文件。
使用下面的Python代码,我可以转换为PDF,但我真正需要的是HTML。我注意到我可以使用.html
,但如何使用它?有什么想法吗?
win32com.client.Dispatch("SaveAsWeb.VisSaveAsWeb")
答案 0 :(得分:1)
Visio无法做到这一点。您不能“将所有页面转换为单个HTML文件”。你将拥有一个“根”文件和一个“支持”文件的文件夹。
VisSaveAsWeb
已有详细记录,无需猜测:
https://msdn.microsoft.com/en-us/vba/visio-vba/articles/vissaveasweb-object-visio-save-as-web
- 更新
使用python,处理SaveAsWeb并不是那么简单。它似乎默认为自定义界面(非分派)。我不认为使用win32com库可以解决这个问题,但comtypes似乎有效(comtypes库正在构建基于类型库的客户端,即它也支持“自定义”接口):
import sys
import comtypes
from comtypes import client
from os.path import abspath
f = abspath(sys.argv[1])
visio = comtypes.client.CreateObject("Visio.InvisibleApp")
doc = visio.Documents.Open(f)
comtypes.client.GetModule("{}\\SAVASWEB.DLL".format(visio.Path))
saveAsWeb = visio.SaveAsWebObject.QueryInterface(comtypes.gen.VisSAW.IVisSaveAsWeb)
webPageSettings = saveAsWeb.WebPageSettings.QueryInterface(comtypes.gen.VisSAW.IVisWebPageSettings)
webPageSettings.TargetPath = "{}.html".format(f)
webPageSettings.QuietMode = True
saveAsWeb.AttachToVisioDoc(doc)
saveAsWeb.CreatePages()
visio.Quit()
exit(0)
除此之外,您可以尝试“命令行”界面: http://visualsignals.typepad.co.uk/vislog/2010/03/automating-visios-save-as-web-output.html
import sys
import win32com.client
from os.path import abspath
f = abspath(sys.argv[1])
visio = win32com.client.Dispatch("Visio.InvisibleApp")
doc = visio.Documents.Open(f)
visio.Addons("SaveAsWeb").Run("/quiet=True /target={}.htm".format(f))
visio.Quit()
exit(0)
除此之外,你可以尝试我的visio svg-export:)