SVG-Dateien batchweise in Python konvertieren

Quick Answer: Um SVG-Dateien in Python batchweise zu konvertieren, durchlaufen Sie einen Eingabeordner, laden jede .svg-Datei mit SVGDocument, erstellen Speicheroptionen für das Zielformat und rufen Converter.convert_svg() für jede Ausgabedatei auf.

Workflow für Batch-Konvertierung

Batch-Konvertierung ist nützlich, wenn Ihre Anwendung Thumbnails, Web-Vorschauen, exportierte Berichtsgrafiken oder PDF-Kopien für einen Ordner mit SVG-Dateien benötigt. Der Workflow entspricht der Einzeldatei-Konvertierung, wird aber für jede Quelldatei wiederholt:

  1. Wählen Sie Eingabe- und Ausgabeordner.
  2. Erstellen Sie Speicheroptionen für das Zielformat, etwa ImageSaveOptions oder PdfSaveOptions.
  3. Durchlaufen Sie .svg-Dateien.
  4. Laden Sie jedes SVG mit SVGDocument.
  5. Konvertieren Sie das Dokument mit Converter.convert_svg() und schreiben Sie die Ausgabedatei.

Bevor Sie die Beispiele ausführen, installieren Sie Aspose.SVG for Python via .NET in Ihrer Python-Umgebung.

SVG batchweise in PNG konvertieren

PNG ist eine gute Standardwahl für Web-Vorschauen und transparente Rasterausgabe. Das Beispiel konvertiert jede .svg-Datei in data/svg/ in eine .png-Datei in output/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)

SVG batchweise in JPG konvertieren

Bei der Konvertierung in JPG setzen Sie ImageFormat.JPEG und wählen eine Hintergrundfarbe, da JPG keine Transparenz unterstützt.

 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 batchweise in PDF konvertieren

Verwenden Sie PdfSaveOptions, wenn jede SVG-Datei eine separate PDF-Datei werden soll.

 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)

Wiederverwendbaren Batch-Konverter erstellen

Die vorherigen Beispiele wiederholen dieselbe Ordnerschleife für PNG, JPG und PDF. In Anwendungscode ist es meist sauberer, diese Schleife in eine Hilfsfunktion auszulagern und nur Ausgabeordner, Ausgabeerweiterung und Speicheroptionen zu übergeben.

 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)

Häufige Fehler und Lösungen

ProblemWahrscheinliche UrsacheLösung
Keine Dateien werden konvertiertDas Skript sucht im falschen Eingabeordner oder filtert die falsche ErweiterungGeben Sie input_folder aus und prüfen Sie, ob .svg-Dateien enthalten sind
Ausgabedateien überschreiben sichVerschiedene Eingabedateien erzeugen denselben BasisnamenBewahren Sie Unterordner oder fügen Sie einen Suffix hinzu
Verknüpfte Bilder oder CSS fehlenRelative Ressourcen liegen nicht neben dem Quell-SVGLaden Sie jedes SVG vom ursprünglichen Dateipfad und halten Sie Ressourcen relativ verfügbar
JPG-Ausgabe hat unerwarteten HintergrundJPG unterstützt keine TransparenzSetzen Sie ImageSaveOptions.background_color
Ein fehlerhaftes SVG stoppt den gesamten BatchAusnahmen werden nicht pro Datei behandeltUmschließen Sie jede Konvertierung mit try/except und protokollieren Sie fehlerhafte Dateinamen

FAQ

Wie konvertiere ich SVG-Dateien batchweise in Python?

Durchlaufen Sie einen Eingabeordner, laden Sie jede .svg-Datei mit SVGDocument und rufen Sie Converter.convert_svg() mit den nötigen Speicheroptionen auf.

Kann ich SVG batchweise in JPG konvertieren?

Ja. Verwenden Sie ImageSaveOptions, setzen Sie options.format = ImageFormat.JPEG, legen Sie eine Hintergrundfarbe fest und speichern Sie jede Ausgabedatei mit .jpg.

Kann ich SVG batchweise in PDF konvertieren?

Ja. Verwenden Sie PdfSaveOptions und schreiben Sie jedes konvertierte Dokument in einen .pdf-Ausgabepfad.

Kann ich SVG-Dateien in Unterordnern konvertieren?

Ja. Verwenden Sie rekursive Ordnerdurchläufe in Python und erstellen Sie passende Ausgabeordner vor dem Speichern.

Kann ich aus vielen SVG-Dateien ein PDF erstellen?

Dieser Batch-Workflow erstellt eine Ausgabedatei pro SVG. Wenn Sie ein kombiniertes mehrseitiges PDF benötigen, verwenden Sie die Klasse SvgRenderer mit einem PdfDevice; der Renderer kann mehrere SVG-Dokumente an dasselbe PDF-Gerät senden.

Verwandte Artikel