Last active
May 18, 2022 18:04
-
-
Save SigurdJanson/ddccf14d41ecbd490fd9070dd1ec13d6 to your computer and use it in GitHub Desktop.
Inkscape Batch Conversion
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
:: Convert vector file formats in the current folder and their subfolders | |
:: Adaptation of Johannes Demls great batch script to convert vector graphic files with InkScape in batch mode | |
:: Original taken from https://gist.github.com/JohannesDeml/779b29128cdd7f216ab5000466404f11 | |
:: Please refer to the original site for instructions | |
:: This script can be found at: https://gist.github.com/SigurdJanson/ddccf14d41ecbd490fd9070dd1ec13d6 | |
@Echo off | |
setlocal ENABLEDELAYEDEXPANSION | |
:: Possible paths to check for the installation | |
set inkscapePath1="C:\Program Files\Inkscape\bin\inkscape.exe" | |
set inkscapePath2="C:\Program Files\Inkscape\inkscape.exe" | |
set inkscapePath3="C:\Program Files (x86)\Inkscape\bin\inkscape.exe" | |
set inkscapePath4="C:\Program Files (x86)\Inkscape\inkscape.exe" | |
if exist %inkscapePath1% ( | |
set inkscapePath=%inkscapePath1% | |
) else ( | |
if exist %inkscapePath2% ( | |
set inkscapePath=%inkscapePath2% | |
) else ( | |
if exist %inkscapePath3% ( | |
set inkscapePath=%inkscapePath3% | |
) else ( | |
if exist %inkscapePath4% ( | |
set inkscapePath=%inkscapePath4% | |
) else ( | |
echo Can't find Inkscape installation, aborting. | |
GOTO end | |
) | |
) | |
) | |
) | |
set validInput1=svg | |
set validInput2=pdf | |
set validInput3=eps | |
set validInput4=emf | |
set validInput5=wmf | |
set validOutput1=eps | |
set validOutput2=pdf | |
set validOutput3=png | |
set validOutput4=svg | |
set validOutput5=xaml | |
FOR /F "tokens=* USEBACKQ" %%g IN (`%inkscapePath% --version`) do (SET "inkscapeVersion=%%g") | |
set /a inkscapeMajorVersion=%inkscapeVersion:~9,1% | |
echo. | |
echo This script allows you to convert all files in this folder from one file type to another | |
echo Running with %inkscapeVersion% | |
echo (type q to quit at any question) | |
echo. | |
set valid=0 | |
echo Allowed file types for source: %validInput1%, %validInput2%, %validInput3%, %validInput4%, %validInput5% | |
:whileInNotCorrect | |
set /p sourceType=What file type do you want to use as a source? | |
if "%sourceType%" EQU "%validInput1%" set valid=1 | |
if "%sourceType%" EQU "%validInput2%" set valid=1 | |
if "%sourceType%" EQU "%validInput3%" set valid=1 | |
if "%sourceType%" EQU "%validInput4%" set valid=1 | |
if "%sourceType%" EQU "%validInput5%" set valid=1 | |
if "%sourceType%" EQU "q" exit /b | |
if %valid% EQU 0 ( | |
echo Invalid input! Please use one of the following: %validInput1%, %validInput2%, %validInput3%, %validInput4%, %validInput5% | |
goto :whileInNotCorrect | |
) | |
echo. | |
set valid=0 | |
echo Allowed file types for output: %validOutput1%, %validOutput2%, %validOutput3%, %validOutput4%, %validOutput5% | |
:whileOutNotCorrect | |
set /p outputType=What file type do you want to convert to? | |
if "%outputType%" EQU "%validOutput1%" set valid=1 | |
if "%outputType%" EQU "%validOutput2%" set valid=1 | |
if "%outputType%" EQU "%validOutput3%" set valid=1 | |
if "%outputType%" EQU "%validOutput4%" set valid=1 | |
if "%outputType%" EQU "%validOutput5%" set valid=1 | |
if "%outputType%" EQU "q" exit /b | |
if %valid% EQU 0 ( | |
echo Invalid input! Please use one of the following: %validOutput1%, %validOutput2%, %validOutput3%, %validOutput4%, %validOutput5% | |
goto :whileOutNotCorrect | |
) | |
if "%outputType%" EQU "%sourceType%" ( | |
echo Input and Output are the same, no point in doing anything. Exiting... | |
exit /b | |
) | |
echo. | |
:: Older inkscape versions need to generate a pdf before generating svgs | |
if %inkscapeMajorVersion% EQU 0 ( | |
set toDelOrNot=n | |
if "%sourceType%" NEQ "pdf" ( | |
if "%outputType%" EQU "%validOutput4%" ( | |
set valid=0 | |
:whilePdfDelNotCorrect | |
set /p toDelOrNot=EPS to SVG also generates pdfs, delete these after conversion? (y/n^) | |
if "%toDelOrNot%" EQU "y" set valid=1 | |
if "%toDelOrNot%" EQU "n" set valid=1 | |
if "%toDelOrNot%" EQU "q" exit /b | |
if %valid% EQU 0 ( | |
echo Invalid input! Please type either y or n. | |
goto :whilePdfDelNotCorrect | |
) | |
) | |
) | |
) | |
:: Set DPI for exported file | |
:whileNotValidDpiNumber | |
set /p dpi=With what dpi should it be exported (e.g. 300)? | |
if "%dpi%" EQU "q" exit /b | |
IF %dpi% NEQ +%dpi% ( | |
echo Invalid input! Please input an actual number. | |
goto :whilenotValidDpiNumber | |
) | |
echo. | |
:: count how many files we need to convert before converting! | |
set /a total=0 | |
for /R %%i in (*.%sourceType%) do ( | |
set /a total=total+1 | |
) | |
echo Conversion started. Will do %total% file(s). | |
echo. | |
set /a count=0 | |
:: Running through all files found with the defined ending | |
if %inkscapeMajorVersion% NEQ 0 ( | |
:: Inkscape 1.0 and newer | |
for /R %%i in (*.%sourceType%) do ( | |
set /a count=count+1 | |
:: Create out folder if it does not exist | |
if not exist %%~di%%~piout mkdir %%~di%%~piout | |
echo %%i -^> %%~di%%~piout\%%~ni.%outputType% ^[!count!/%total%^] | |
%inkscapePath% --batch-process --export-filename="%%~di%%~piout\%%~ni.%outputType%" --export-dpi=%dpi% "%%i" | |
) | |
) else ( | |
:: Inkscape 0.9.x and older | |
for /R %%i in (*.%sourceType%) do ( | |
set /a count=count+1 | |
echo %%i -^> %%~di%%~piout\%%~ni.%outputType% ^[!count!/%total%^] | |
if "%outputType%" NEQ "%validOutput4%" ( | |
%inkscapePath% --without-gui --file="%%i" --export-%outputType%="%%~di%%~piout\%%~ni.%outputType%" --export-dpi=%dpi% | |
) else ( | |
if "%sourceType%" NEQ "pdf" ( | |
%inkscapePath% --without-gui --file="%%i" --export-pdf="%%~di%%~piout\%%~ni.pdf" --export-dpi=%dpi% | |
) | |
%inkscapePath% --without-gui -z -f "out\%%~ni.pdf" -l "%%~di%%~piout\%%~ni.%validOutput4%" | |
if "%toDelOrNot%" EQU "y" ( | |
del "%%~ni.pdf" /f /q | |
) | |
) | |
) | |
) | |
echo. | |
echo %count% file(s) converted from %sourceType% to %outputType%! (Saved in out folder) | |
echo. | |
:end | |
pause |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?xml version="1.0" encoding="UTF-8"?> | |
<!--This file is NOT compatible with Silverlight--> | |
<Viewbox xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" Stretch="Uniform"> | |
<Canvas Name="svg5" Width="12.7" Height="12.7"> | |
<Canvas.RenderTransform> | |
<TranslateTransform X="0" Y="0"/> | |
</Canvas.RenderTransform> | |
<Canvas.Resources/> | |
<!--Unknown tag: sodipodi:namedview--> | |
<Canvas Name="layer1"> | |
<Ellipse xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Canvas.Left="0.8" Canvas.Top="0.8" Width="11.1" Height="11.1" Name="path846" Fill="#FF000000" StrokeThickness="0.529167" StrokeStartLineCap="Square" StrokeEndLineCap="Square"/> | |
</Canvas> | |
</Canvas> | |
</Viewbox> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment