diff --git a/app/MindWork AI Studio/Tools/Pandoc.cs b/app/MindWork AI Studio/Tools/Pandoc.cs
new file mode 100644
index 00000000..42fce7dd
--- /dev/null
+++ b/app/MindWork AI Studio/Tools/Pandoc.cs
@@ -0,0 +1,64 @@
+using System.Diagnostics;
+using System.Runtime.InteropServices;
+using System.Text.RegularExpressions;
+
+namespace AIStudio.Tools;
+
+public static partial class Pandoc
+{
+ // Minimale erforderliche Version von Pandoc
+ private static readonly Version MINIMUM_REQUIRED_VERSION = new Version(3, 6, 0);
+
+ ///
+ /// Checks if pandoc is available on the system and can be started as a process
+ ///
+ /// True, if pandoc is available and the minimum required version is met, else False.
+ public static async Task IsPandocAvailableAsync()
+ {
+ try
+ {
+ var startInfo = new ProcessStartInfo
+ {
+ FileName = GetPandocExecutableName(),
+ Arguments = "--version",
+ RedirectStandardOutput = true,
+ UseShellExecute = false,
+ CreateNoWindow = true
+ };
+ using var process = Process.Start(startInfo);
+ if (process == null)
+ return false;
+
+ var output = await process.StandardOutput.ReadToEndAsync();
+ await process.WaitForExitAsync();
+ if (process.ExitCode != 0)
+ return false;
+
+ var versionMatch = PandocRegex().Match(output);
+ if (!versionMatch.Success) return false;
+ var versions = versionMatch.Groups[1].Value.Split('.');
+ var major = int.Parse(versions[0]);
+ var minor = int.Parse(versions[1]);
+ var patch = int.Parse(versions[2]);
+ var installedVersion = new Version(major, minor, patch);
+
+ return installedVersion >= MINIMUM_REQUIRED_VERSION;
+
+ }
+ catch (Exception)
+ {
+ return false;
+ }
+ }
+
+ ///
+ /// Gibt den Namen der Pandoc-Executable basierend auf dem Betriebssystem zurück.
+ ///
+ private static string GetPandocExecutableName()
+ {
+ return RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "pandoc.exe" : "pandoc";
+ }
+
+ [GeneratedRegex(@"pandoc(?:\.exe)?\s*([0-9]+\.[0-9]+\.[0-9]+)")]
+ private static partial Regex PandocRegex();
+}
\ No newline at end of file