您的位置:

Visio导出矢量图探究

一、导出矢量图格式

Visio作为微软的专业流程图软件,其支持广泛的矢量图导出格式,主要包括以下几种:

1、EMF/EMZ:Windows增强型元文件格式,可以向下兼容WMF格式;

2、SVG:可缩放矢量图形格式,支持XML描述,可用于图像压缩;

3、PDF:便携式文档格式,矢量图质量高,不易变形,适用于打印和交换文件;

4、DXF/DWG:AutoCAD绘图格式,一种较为通用的矢量图格式,可用于与其它CAD软件协作;

5、XPS:XML Paper Specification,Microsoft公司发布的一种新型页面描述格式,在打印、浏览、存储方面与PDF类似。其中,EMF/EMZ与Windows系统兼容性最佳,SVG和PDF文件在浏览器中显示效果较好,DXF/DWG可被通用CAD软件所使用,XPS是与Windows兼容性最好的格式。

二、导出设置优化

Visio矢量图导出兼容性较好,生成的文件质量较高,但在导出设置时,一些小的优化能有效提高导出效果:

1、字体嵌入:在字体相对较特殊、不易识别的情况下,导出后显示效果差。此时可以选择Embed字体选项,将字体嵌入图像文件中,以保证字体的显示效果;

Public Sub ExportSVG_Try()
    Dim SVGExportOptionSet As IVisSVGExportOptionSet
    Set SVGExportOptionSet = New VisSVGExportOptionSet
    SVGExportOptionSet.FontsToEmbed = VisSVGEmbedFonts_AsNeeded
    ActiveDocument.ExportAsFixedFormat _
    OutputFileName:="./test.svg", _
    FixedFormat:="visFixedFormatSVG", _
    SVGExportOptionSet:=SVGExportOptionSet
End Sub

2、分层导出:Visio中,导出矢量图时可以选择是否按照图层来导出文件。此时,导出的文件中每个图层都对应一个单独的图像文件,方便后期的分层处理;

Public Sub ExportAsSVG_PerLayer()
    Dim pageObj As Visio.Page
    Dim layerObj As Visio.Layer
    Dim layersObj As Visio.Layers

    Set pageObj = Application.ActivePage
    Set layersObj = pageObj.Layers

    For Each layerObj In layersObj
        If layerObj.Cells("Visible").Result("") = "visLODVisible" Then
            layerObj.visible = False

            ActiveDocument.ExportAsFixedFormat _
            OutputFileName:="./test_" & layerObj.Name & ".svg", _
            FixedFormat:="visFixedFormatSVG", _
            UseSelection:=True, _
            SelectionOnly:=False, _
            PagePerSheet:=False
            layerObj.visible = True
        End If
    Next layerObj
End Sub

3、导出尺寸:导出矢量图时可以选择不同的图像大小,选择合适的尺寸能有效控制文件大小,同时也能保证导出效果。

Public Sub ExportAsSVG_WithSize()
    ActiveWindow.ViewFit = visFitPage

    ActiveDocument.ExportAsFixedFormat _
    OutputFileName:="./test.svg", _
    FixedFormat:="visFixedFormatSVG", _
    UseSelection:=True, _
    SelectionOnly:=False, _
    PagePerSheet:=False, _
    ToScale:=False, _
    DisplayColor:=visDisplayColor, _
    IncludeBackground:=True, _
    DocumentView:=visDocViewPrint, _
    BitmapMissingFonts:=True, _
    MapMetafile:=True, _
    OverwriteExisting:=True, _
    FixedFormatQuality:=visFixedFormatLow, _
    FromPage:=1, _
    ToPage:=1, _
    PrintRange:=vbNullString, _
    PrintZoomColumn:=0, _
    PrintZoomRow:=0, _
    ConsiderPartialPrint:=False, _
    ForceForeground:=True, _
    PageWidth:=11, _
    PageHeight:=8.5
End Sub

三、导出效果分析

Visio导出矢量图的效果受多种因素影响,以下主要从图形复杂度、导出格式、导出设置、文本排版等方面进行分析。

1、图形复杂度

Visio中,图形的复杂度越高,导出至矢量图中时,可能出现遗漏、形变等问题。如下图所示,复杂的流程图中,导出的SVG文件中,一些线条发生了形变,严重影响了图像的可读性:

因此,在实际应用中,需要注意,尽量保持图形简单化,降低复杂度。

2、导出格式

Visio支持多种矢量图格式的导出,不同的格式对于不同的应用场景都有自己的优缺点。如下图所示,同样的流程图导出至不同格式下,显示效果有所不同:

通过对比,可以发现,在日常应用中,应根据实际需求,选择合适的图像导出格式。

3、导出设置

Visio导出矢量图时,不同的设置也会影响导出效果。如下图所示,同一流程图,根据导出时的设置不同,导出效果会有所区别:

因此,在实际应用中,需根据具体情况,选择恰当的设置,以保证导出效果。

4、文本排版

Visio库中自带了多种文本格式,如字体、字号、颜色等,而在导出至矢量图中时,这些文本信息的处理是需要特别注意的。如下图所示,在导出的SVG文件中,原有的文本样式没有得到很好的保留:

因此,为保证文本信息及样式的准确导出,需要注意使用通用字体,以保证矢量图中所有的字体都能准确显示。

四、总结

综上所述,Visio作为流程图制作的一款专业软件,其矢量图导出兼容性较高,文件质量较好。在导出矢量图时,可以根据需求选择不同的导出格式,在导出设置上进行优化,调整文本排版等,从而更好地实现对矢量图的导出。