1

github でこの役立つレポを見つけました。これは、Inkscape を使用して svg を pdf または png として出力し、チャートから mvc コントローラーにデータを送信する kendoui の例です。

Github リポジトリ

App_Data フォルダー内に一時的な svg ファイルと png が作成されますが、そこに残っているファイルに満足している場合は問題ありません。

主な利点は、このコードで発生します

 private string DoExport(string svgFile, ExportFormat format)
    {
        var extension = format == ExportFormat.PNG ? "png" : "pdf";
        var outFile = TempFileName() + "." + extension;

        // Full list of export options is available at
        // http://tavmjong.free.fr/INKSCAPE/MANUAL/html/CommandLine-Export.html
        var inkscape = new Process();
        inkscape.StartInfo.FileName = INKSCAPE_PATH;
        inkscape.StartInfo.Arguments =
            String.Format("--file \"{0}\" --export-{1} \"{2}\" --export-width {3} --export-height {4}",
                          svgFile, extension, outFile, WIDTH, HEIGHT);
        inkscape.StartInfo.UseShellExecute = true;
        inkscape.Start();

        inkscape.WaitForExit();

        return outFile;
    }

実行後 、フォルダーinkscape.Start();内に png ファイルが作成され、(app_data イメージへのパス) がメソッドから返されます。app_dataoutFile

ファイルを作成する代わりに、メモリ内ですべてを実行し、actionresult で画像を返すことは可能ですか?

[HttpPost]
    public ActionResult _Export(string svg, ExportFormat format)
    {
        var svgText = HttpUtility.UrlDecode(svg);
        var svgFile = TempFileName() + ".svg";
        System.IO.File.WriteAllText(svgFile, svgText);

        var outFile = DoExport(svgFile, format);
        var attachment = "export" + Path.GetExtension(outFile);

        return File(outFile, MimeTypes[format], attachment);
    }

これを行う方法と、それが可能かどうかはわかりません。

4

0 に答える 0