From aaf78abf3c6c1b264432570f2c784dd723cc59df Mon Sep 17 00:00:00 2001 From: ema Date: Fri, 16 Jan 2026 11:40:56 +0800 Subject: [PATCH] Fix markdown not supporting absolute resource paths Enhanced the logic for resolving image and file paths in MarkdownPanel to better handle both absolute and relative paths, ensuring compatibility with Windows path formats and improving file existence checks. --- .../MarkdownPanel.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs index 7580aed..3c0e7a3 100644 --- a/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs +++ b/QuickLook.Plugin/QuickLook.Plugin.MarkdownViewer/MarkdownPanel.cs @@ -124,7 +124,19 @@ public class MarkdownPanel : WebpagePanel } else { - var localPath = _fallbackPath + Uri.UnescapeDataString(requestedUri.AbsolutePath).Replace('/', '\\'); + // URL path is encoded, e.g. "%20" for spaces. + var unescapedAbsolutePath = Uri.UnescapeDataString(requestedUri.AbsolutePath); + + // Convert URL path to Windows path format (e.g. "/C:/Users/..." -> "C:\Users\...") + var potentialAbsolutePath = unescapedAbsolutePath.TrimStart('/').Replace('/', '\\'); + + string localPath; + // Check if it is an absolute path (e.g. ![Alt](C:\Path\To\Image.png)) + if (Path.IsPathRooted(potentialAbsolutePath) && File.Exists(potentialAbsolutePath)) + localPath = potentialAbsolutePath; + else + // Treat as relative path (e.g. ![Alt](Image.png)) + localPath = _fallbackPath + unescapedAbsolutePath.Replace('/', '\\'); if (File.Exists(localPath)) {