将 Visio 文档另存为 HTML
Save Visio Document as HTML
我正在尝试将大量 Visio 文件从 .vsd
转换为 .html
,但每个文件都有很多页面,因此我需要将所有页面转换为单个 .html
文件.
使用下面的 Python 代码,我可以转换为 PDF,但我真正需要的是 HTML。我注意到我可以使用 win32com.client.Dispatch("SaveAsWeb.VisSaveAsWeb")
,但是如何使用它呢?有什么想法吗?
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)
doc.ExportAsFixedFormat(1, '{}.pdf'.format(f), 0, 0)
visio.Quit()
exit(0)
Visio 无法做到这一点。你不能 "convert all pages into a single HTML file"。您将拥有一个 "root" 文件和一个包含 "supporting" 个文件的文件夹。
VisSaveAsWeb
有很好的记录,无需猜测:
https://msdn.microsoft.com/en-us/vba/visio-vba/articles/vissaveasweb-object-visio-save-as-web
--更新
有了 python,事实证明处理 SaveAsWeb 并不是那么简单。它似乎默认为 自定义接口 (非调度)。我不认为使用 win32com 库可以处理这个问题,但是 comtypes 似乎可以工作(comtypes 库正在基于类型库构建客户端,即它还支持 "custom" 接口):
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)
除此之外,您可以尝试"command line"界面:
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 :)
我正在尝试将大量 Visio 文件从 .vsd
转换为 .html
,但每个文件都有很多页面,因此我需要将所有页面转换为单个 .html
文件.
使用下面的 Python 代码,我可以转换为 PDF,但我真正需要的是 HTML。我注意到我可以使用 win32com.client.Dispatch("SaveAsWeb.VisSaveAsWeb")
,但是如何使用它呢?有什么想法吗?
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)
doc.ExportAsFixedFormat(1, '{}.pdf'.format(f), 0, 0)
visio.Quit()
exit(0)
Visio 无法做到这一点。你不能 "convert all pages into a single HTML file"。您将拥有一个 "root" 文件和一个包含 "supporting" 个文件的文件夹。
VisSaveAsWeb
有很好的记录,无需猜测:
https://msdn.microsoft.com/en-us/vba/visio-vba/articles/vissaveasweb-object-visio-save-as-web
--更新
有了 python,事实证明处理 SaveAsWeb 并不是那么简单。它似乎默认为 自定义接口 (非调度)。我不认为使用 win32com 库可以处理这个问题,但是 comtypes 似乎可以工作(comtypes 库正在基于类型库构建客户端,即它还支持 "custom" 接口):
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)
除此之外,您可以尝试"command line"界面: 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 :)