Как преобразовать файл SVG в формат WMF?

Я хотел бы преобразовать векторную графику .svg в .wmf. Я заглянул в эту библиотеку http://wmf.codeplex.com/, но безуспешно.

Я нашел эту библиотеку http://svg2swf.sourceforge.net/, но не знаю, как ею пользоваться это в проекте С#.

Изменить: у меня также не работает это использование inkscape (файл wmf не может быть открыт).

public static string Result = @"Polygon-6666.wmf";
public static string Source = @"Polygon-6.svg";

public void CreatePng(string filename)
{
    var inkscapeArgs = string.Format(@"-f ""{0}"" -e ""{1}""", Source, Result);

    var inkscape = Process.Start(new ProcessStartInfo("inkscape.exe", inkscapeArgs));
}

person Piotr M    schedule 31.07.2015    source источник
comment
Что вы подразумеваете под безуспешно? С какими проблемами вы столкнулись?   -  person Matias Cicero    schedule 31.07.2015
comment
Эта библиотека, которую я связал, предназначена для манипуляций с wmf, а не для преобразования. Я могу ошибаться, потому что документация довольно скудная, поэтому я включил ее просто для сохранения.   -  person Piotr M    schedule 31.07.2015


Ответы (1)


Используя версию 0.91 Inkscape, у вас есть специальные параметры в командной строке для этого:

private void Demo()
{
    var inkscapePath = @"C:\Program Files\Inkscape\inkscape.exe";
    var inputPath = @"D:\Downloads\Ghostscript_Tiger.svg";
    var outputPath = @"D:\Downloads\Ghostscript_Tiger.wmf";
    Svg2Wmf(inkscapePath, inputPath, outputPath);
}

private void Svg2Wmf(string inkscapePath, string inputPath, string outputPath)
{
    if (inkscapePath == null) throw new ArgumentNullException("inkscapePath");
    if (inputPath == null) throw new ArgumentNullException("inputPath");
    if (outputPath == null) throw new ArgumentNullException("outputPath");
    var arguments = string.Format("--export-wmf=\"{0}\" \"{1}\"", outputPath.Trim('"'), inputPath.Trim('"'));
    Process.Start(inkscapePath, arguments);
}

Входной файл: https://upload.wikimedia.org/wikipedia/commons/f/fd/Ghostscript_Tiger.svg

Документация: inkscape --help

person aybe    schedule 31.07.2015
comment
Попробую это в понедельник, обязательно вернусь сюда с отзывами. - person Piotr M; 31.07.2015
comment
По сути, вы открывали файл с помощью -f и так далее, синтаксис, который я показал, специально предназначен для пакетной обработки: D - person aybe; 03.08.2015
comment
Старый добрый Inkscape. - person S Meaden; 01.11.2018