在 Python 中转换 SVG 文件

Quick Answer: Aspose.SVG for Python via .NET 可将 SVG 转换为 PDF、PNG、JPG、BMP、TIFF、GIF 和 XPS。直接文件转换可使用 Converter.convert_svg();需要渲染设备工作流时,可加载 SVGDocument 并调用 render_to(device)

Python 中的 SVG 转换

SVG 适合可缩放图形,但很多工作流需要固定输出格式。PDF 适合打印和文档交换,PNG 或 JPG 适合网页预览和栅格资源,TIFF 或 BMP 适合图像处理流程,GIF 适合轻量栅格输出,XPS 适合需要固定版式文档的场景。

本页概述 SVG 转换 API。有关特定格式的选项和示例,请使用下面的详细文章。

支持的输出格式

输出格式典型用途详细文章
PDF打印、归档、文档交换将 SVG 转换为 PDF
PNGWeb 图像、透明栅格输出、预览将 SVG 转换为 PNG
JPG不需要透明度的栅格预览将 SVG 转换为 JPG
BMP简单位图输出将 SVG 转换为图像
TIFF发布和图像处理工作流将 SVG 转换为图像
GIF轻量栅格输出将 SVG 转换为图像
XPS固定版式文档输出请参见下面的 XPS 示例

使用 Converter.convert_svg() 转换 SVG

Converter 类是转换 SVG 文件的最直接方式。为目标格式创建保存选项,用 SVGDocument 加载 SVG 文档,然后调用 Converter.convert_svg()

1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import ImageSaveOptions
4
5# Convert SVG to PNG using the high-level converter API
6options = ImageSaveOptions()
7
8with SVGDocument("image.svg") as document:
9    Converter.convert_svg(document, options, "image.png")

在 Python 中将 SVG 转换为 XPS

XPS 是较小众的固定版式输出格式。当 Windows 文档、打印或归档工作流明确要求 XPS 时使用它。对于大多数文档交换场景,PDF 通常是更好的默认选择。

1from aspose.svg import SVGDocument
2from aspose.svg.converters import Converter
3from aspose.svg.saving import XpsSaveOptions
4
5# Convert SVG to XPS when the target workflow requires XPS output
6options = XpsSaveOptions()
7
8with SVGDocument("document.svg") as document:
9    Converter.convert_svg(document, options, "document.xps")

使用 render_to() 转换 SVG

render_to() 方法将 SVG 内容发送到渲染设备。当应用需要显式控制目标设备时,例如 PdfDeviceXpsDeviceImageDevice,可使用此工作流。

 1import os
 2from aspose.svg import SVGDocument
 3from aspose.svg.rendering.pdf import PdfDevice, PdfRenderingOptions
 4
 5# Render SVG to PDF using a rendering device
 6input_folder = "data/"
 7output_folder = "output/"
 8input_path = os.path.join(input_folder, "document.svg")
 9output_path = os.path.join(output_folder, "document.pdf")
10os.makedirs(output_folder, exist_ok=True)
11
12options = PdfRenderingOptions()
13options.jpeg_quality = 80
14
15with SVGDocument(input_path) as document:
16    with PdfDevice(options, output_path) as device:
17        document.render_to(device)

转换选项

大多数 SVG 转换任务会使用保存选项或渲染选项来控制输出质量、页面设置、背景颜色和资源处理。

选项组用于示例
ImageSaveOptionsPNG、JPG、BMP、TIFF、GIF 输出图像格式、背景颜色、页面设置、分辨率
PdfSaveOptions通过 Converter.convert_svg() 输出 PDF页面设置、JPEG 质量、元数据、加密、背景颜色
XpsSaveOptions通过 Converter.convert_svg() 输出 XPS页面设置、背景颜色、分辨率
PdfRenderingOptions通过 PdfDevice 输出 PDF页面设置、JPEG 质量、分辨率、背景颜色
RenderingOptions基于设备的渲染工作流格式专用选项继承的通用渲染设置

批量转换

批量转换使用与单文件转换相同的 API。遍历 SVG 文件夹,为每个文件创建输出路径,并对每个文档调用 Converter.convert_svg()。PNG、JPG 和 PDF 示例见 在 Python 中批量转换 SVG 文件

在线 SVG 转换器

使用免费的在线 SVG Converter 在 Python 实现前测试 SVG 转换。上传 SVG 文件,选择输出格式,然后比较生成的文件。

                
            

PDF、PNG、JPG、BMP、TIFF、GIF 和 XPS 在线 SVG 转换器

常见错误和修复

问题可能原因修复方法
没有生成输出文件输出文件夹不存在,或文件保存到了其他工作目录使用 os.makedirs() 创建文件夹,并使用显式路径
转换后的图像背景不正确SVG 包含透明区域,但未配置背景在保存或渲染选项中设置背景颜色
PDF 或图像尺寸不符合预期页面设置与 SVG viewport 或内容边界不匹配在相关选项对象中配置页面大小、边距或尺寸模式
外部图像或字体缺失转换期间无法解析相对资源将资源放在 SVG 旁边,或使用正确的绝对路径和基路径
输出文件过大SVG 复杂或栅格设置过高降低分辨率、JPEG 质量、图像尺寸,或在转换前简化 SVG

FAQ

如何在 Python 中转换 SVG 文件?
使用 SVGDocument 加载文件,为目标格式创建保存选项,然后调用 Converter.convert_svg()

支持哪些 SVG 输出格式?
Aspose.SVG for Python via .NET 支持转换为 PDF、XPS、PNG、JPG、BMP、TIFF 和 GIF。

应该使用 Converter.convert_svg() 还是 render_to()?
普通文件转换使用 Converter.convert_svg()。需要 PdfDeviceXpsDeviceImageDevice 等渲染设备工作流时使用 render_to()

可以从 URL 转换 SVG 吗?
可以。在网络访问可用时用 SVGDocument 加载 SVG URL,然后使用与本地文件相同的 API 转换。

可以在 Python 中将 SVG 转换为 XPS 吗?
可以。创建 XpsSaveOptions,并将其与已加载的 SVGDocument 一起传给 Converter.convert_svg()。仅在目标工作流需要 XPS 时使用该格式。

可以批量转换多个 SVG 文件吗?
可以。遍历输入文件夹,加载每个 .svg 文件,并为每个输出文件调用 Converter.convert_svg()

可以在转换期间更改输出尺寸吗?
可以。通过目标格式的保存选项或渲染选项配置页面设置、尺寸、边距和分辨率。

相关文章