我的工作會遇到需要把 SVG 檔內含的文字轉外框,這可以透過開放原始碼的 Inkscape 處理,而且 Inkscape 還提供 CLI 介面,可以像是透過 Selenium 或是 Playwright 操控瀏覽器那樣自動化。於是我就請 Grok 幫我設計腳本,讓我可以批次處理一堆 SVG 檔轉外框在存檔的功能,以下是透過指令把 SVG 轉外框的批次檔:
@echo off
REM batch_text_to_path.bat
for %%f in (*.svg) do (
echo Processing %%f...
"C:\Program Files\Inkscape\bin\inkscape.exe" --actions="select-all;org.inkscape.text.convert_to_path;export-filename:%%~nf_converted.svg;export-do" "%%f"
)
它會把目前資料夾下的所有 SVG 檔用 Inkscape 一一開啟,開啟後:
- 選取所有物件
- 文字轉外框
- 以原檔名加上 "_converted" 字尾存檔
也有 bash 版:
#!/bin/bash
# batch_text_to_path.sh
for file in *.svg; do
echo "Processing $file..."
inkscape --actions="select-all;org.inkscape.text.convert_to_path;export-filename:${file%.svg}_converted.svg;export-do" "$file"
done
或是 PowerShell 版:
# batch_text_to_path.ps1
$inkscapePath = "C:\Program Files\Inkscape\bin\inkscape.exe" # 根據你的 Inkscape 安裝路徑調整
$svgFiles = Get-ChildItem -Filter *.svg
foreach ($file in $svgFiles) {
Write-Host "Processing $($file.Name)..."
& $inkscapePath --actions="select-all;org.inkscape.text.convert_to_path;export-filename:$($file.BaseName)_converted.svg;export-do" $file.FullName
Write-Host "Saved as $($file.BaseName)_converted.svg"
}
如果想知道有哪些動作可以透過 CLI 完成,可以執行 --action-list
:
c:\Program` Files\Inkscape\bin\inkscape --action-list
Top comments (0)