Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.
Quick Answer: 要在 Python 中批量转换 SVG 文件,请遍历输入文件夹,用
SVGDocument 加载每个 .svg 文件,为目标格式创建保存选项,并为每个输出文件调用
Converter.convert_svg()。
当应用需要为一组 SVG 文件生成缩略图、Web 预览、导出的报表图形或 PDF 副本时,批量转换很有用。工作流与单文件转换相同,只是对每个源文件重复执行:
.svg 文件。运行示例前,请在 Python 环境中 安装 Aspose.SVG for Python via .NET。
PNG 是 Web 预览和透明栅格输出的良好默认选择。下面的示例将 data/svg/ 中的每个 .svg 文件转换为 output/png/ 中的 .png 文件。
1import os
2from aspose.svg import SVGDocument
3from aspose.svg.converters import Converter
4from aspose.svg.saving import ImageSaveOptions
5
6# Batch convert SVG files to PNG
7input_folder = "data/svg/"
8output_folder = "output/png/"
9os.makedirs(output_folder, exist_ok=True)
10
11options = ImageSaveOptions()
12
13for file_name in os.listdir(input_folder):
14 if not file_name.lower().endswith(".svg"):
15 continue
16
17 input_path = os.path.join(input_folder, file_name)
18 output_name = os.path.splitext(file_name)[0] + ".png"
19 output_path = os.path.join(output_folder, output_name)
20
21 with SVGDocument(input_path) as document:
22 Converter.convert_svg(document, options, output_path)转换为 JPG 时,请设置 ImageFormat.JPEG 并选择背景颜色,因为 JPG 不支持透明度。
1import os
2from aspose.svg import SVGDocument
3from aspose.svg.converters import Converter
4from aspose.svg.rendering.image import ImageFormat
5from aspose.svg.saving import ImageSaveOptions
6from aspose.pydrawing import Color
7
8# Batch convert SVG files to JPG with a solid background
9input_folder = "data/svg/"
10output_folder = "output/jpg/"
11os.makedirs(output_folder, exist_ok=True)
12
13options = ImageSaveOptions()
14options.format = ImageFormat.JPEG
15options.background_color = Color.from_argb(255, 255, 255)
16
17for file_name in os.listdir(input_folder):
18 if not file_name.lower().endswith(".svg"):
19 continue
20
21 input_path = os.path.join(input_folder, file_name)
22 output_name = os.path.splitext(file_name)[0] + ".jpg"
23 output_path = os.path.join(output_folder, output_name)
24
25 with SVGDocument(input_path) as document:
26 Converter.convert_svg(document, options, output_path)当每个 SVG 文件都应生成一个单独的 PDF 文件时,使用 PdfSaveOptions。
1import os
2from aspose.svg import SVGDocument
3from aspose.svg.converters import Converter
4from aspose.svg.saving import PdfSaveOptions
5
6# Batch convert SVG files to separate PDF files
7input_folder = "data/svg/"
8output_folder = "output/pdf/"
9os.makedirs(output_folder, exist_ok=True)
10
11options = PdfSaveOptions()
12
13for file_name in os.listdir(input_folder):
14 if not file_name.lower().endswith(".svg"):
15 continue
16
17 input_path = os.path.join(input_folder, file_name)
18 output_name = os.path.splitext(file_name)[0] + ".pdf"
19 output_path = os.path.join(output_folder, output_name)
20
21 with SVGDocument(input_path) as document:
22 Converter.convert_svg(document, options, output_path)前面的示例为 PNG、JPG 和 PDF 重复了同一个文件夹循环。在应用代码中,通常更清晰的做法是把循环保存在一个辅助函数中,只传入会变化的部分:输出文件夹、输出扩展名和保存选项。
当项目支持多种导出格式,并且不想维护三段独立循环时,可以使用这种模式。下面的辅助函数仍然为每个 SVG 创建一个输出文件;它只是去掉重复代码。
1import os
2from aspose.svg import SVGDocument
3from aspose.svg.converters import Converter
4from aspose.svg.rendering.image import ImageFormat
5from aspose.svg.saving import ImageSaveOptions, PdfSaveOptions
6from aspose.pydrawing import Color
7
8def batch_convert_svg(input_folder, output_folder, output_extension, options):
9 os.makedirs(output_folder, exist_ok=True)
10
11 for file_name in os.listdir(input_folder):
12 if not file_name.lower().endswith(".svg"):
13 continue
14
15 input_path = os.path.join(input_folder, file_name)
16 output_name = os.path.splitext(file_name)[0] + output_extension
17 output_path = os.path.join(output_folder, output_name)
18
19 with SVGDocument(input_path) as document:
20 Converter.convert_svg(document, options, output_path)
21
22input_folder = "data/svg/"
23
24# Reuse the same helper for PNG output
25png_options = ImageSaveOptions()
26batch_convert_svg(input_folder, "output/png/", ".png", png_options)
27
28# Reuse the same helper for JPG output
29jpg_options = ImageSaveOptions()
30jpg_options.format = ImageFormat.JPEG
31jpg_options.background_color = Color.from_argb(255, 255, 255)
32batch_convert_svg(input_folder, "output/jpg/", ".jpg", jpg_options)
33
34# Reuse the same helper for PDF output
35pdf_options = PdfSaveOptions()
36batch_convert_svg(input_folder, "output/pdf/", ".pdf", pdf_options)| 问题 | 可能原因 | 修复方法 |
|---|---|---|
| 没有文件被转换 | 脚本查找了错误的输入文件夹,或过滤了错误的扩展名 | 打印 input_folder,并检查其中是否包含 .svg 文件 |
| 输出文件互相覆盖 | 不同输入文件生成了相同的基础输出名 | 保留子文件夹,或为生成的输出名添加后缀 |
| 链接图像或 CSS 缺失 | 相对资源不在源 SVG 旁边 | 从原始文件路径加载每个 SVG,并将资源保留在预期的相对位置 |
| JPG 输出背景不符合预期 | JPG 不支持透明度 | 设置 ImageSaveOptions.background_color |
| 一个有问题的 SVG 中断整个批次 | 未按文件处理异常 | 将每次转换包在 try/except 中,并记录失败文件名 |
遍历输入文件夹,用 SVGDocument 加载每个 .svg 文件,并使用所需保存选项调用 Converter.convert_svg()。
可以。使用 ImageSaveOptions,设置 options.format = ImageFormat.JPEG,设置背景颜色,并用 .jpg 扩展名保存每个输出文件。
可以。使用 PdfSaveOptions,并将每个转换后的文档写入 .pdf 输出路径。
可以。在 Python 代码中使用递归文件夹遍历,并在保存转换文件前创建匹配的输出文件夹。
此批量工作流为每个 SVG 创建一个输出文件。如果需要一个合并的多页 PDF,请使用 SvgRenderer 类和 PdfDevice 输出设备;该渲染器可以将多个 SVG 文档发送到同一个 PDF 设备。
Analyzing your prompt, please hold on...
An error occurred while retrieving the results. Please refresh the page and try again.