using VideoStudy.Shared; using Windows.Storage; using Windows.Storage.Pickers; using WinRT.Interop; namespace VideoStudy.Native.Services; public class WindowsPdfSaver : IPdfSaver { public async Task SavePdfAsync(byte[] pdfData, string suggestedFileName) { var savePicker = new FileSavePicker { SuggestedStartLocation = PickerLocationId.Downloads, SuggestedFileName = suggestedFileName }; savePicker.FileTypeChoices.Add("PDF", [".pdf"]); // Get the window handle for the picker var window = Application.Current?.Windows.FirstOrDefault(); var mauiWindow = window?.Handler?.PlatformView; if (mauiWindow is Microsoft.UI.Xaml.Window winuiWindow) { var hwnd = WindowNative.GetWindowHandle(winuiWindow); InitializeWithWindow.Initialize(savePicker, hwnd); } var file = await savePicker.PickSaveFileAsync(); if (file == null) return null; await FileIO.WriteBytesAsync(file, pdfData); // Open the PDF after saving await Windows.System.Launcher.LaunchFileAsync(file); return file.Path; } }