vsdx 是微软提供的 visio 画图软件生成的文件扩展格式,本篇介绍在没有安装 visio 软件的情况下利用 Python 把别人发来的 vsdx 文件转化为图像。

安装依赖包

假设 Python 已经安装配置好,那么还需要安装微软提供的 visio api: aspose-diagram,该包依赖 jpype1:

1
pip install aspose-diagram jpype1

微软提供了各种 APIs 来转换 vsdx,我这里演示使用 Python via Java,因此需要在机器上安装 java jdk

1
2
3
wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz
tar -xzvf jdk-17_linux-x64_bin.tar.gz
sudo mv jdk-17.0.8 /usr/local/java

使用

1
2
3
4
5
6
7
8
9
10
11
12
# 转成 jpeg
import os

os.environ["JAVA_HOME"] = "/usr/local/java"
import asposediagram
import jpype

jpype.startJVM()
from asposediagram.api import *

diagram = Diagram("hello.vsdx")
diagram.save("output.jpeg", SaveFileFormat.JPEG)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 转成 png
import os

os.environ["JAVA_HOME"] = "/usr/local/java"

import asposediagram
from asposediagram.api import *

# 如果已经启动 jvm,那么可不用再次启动
# import jpype
# jpype.startJVM()

diagram = Diagram("hello.vsdx")
diagram.save("output.png", SaveFileFormat.PNG);

推荐转成 pdf,更清晰

1
2
3
4
5
6
7
8
9
10
11
12
13
# 转成 pdf
import os

os.environ["JAVA_HOME"] = "/usr/local/java"

import asposediagram
from asposediagram.api import *

# 如果已经启动 jvm,那么可不用再次启动
# import jpype
# jpype.startJVM()
diagram = Diagram("hello.vsdx")
diagram.save("output.pdf", SaveFileFormat.PDF);

更多格式请参考官网格式