I’m making a UWP app with Visual Studio 2022. A user can convert .xml and .xsl into a .pdf by drag-and-dropping them into an app.
The problem is that Aspose can’t read xml neither xsl. They try to access its path obtained from drag-and-drop.
MainPage.xaml.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
namespace XML2PDF
{
/// <summary>
/// made from a blank page
/// </summary>
public sealed partial class MainPage : Page
{
string xmlPath;
string xslPath;
public MainPage()
{
this.InitializeComponent();
xmlPath = "";
xslPath = "";
}
private void BackgroundGrid_DragEnter(object sender, DragEventArgs e)
{
e.AcceptedOperation = Windows.ApplicationModel.DataTransfer.DataPackageOperation.Move;
}
private async void BackgroundGrid_Drop(object sender, DragEventArgs e)
{
if (e.DataView.Contains(Windows.ApplicationModel.DataTransfer.StandardDataFormats.StorageItems))
{
var items = await e.DataView.GetStorageItemsAsync();
var filePaths = items.Select(x => x.Path).ToList();
foreach (var p in filePaths)
{
if (p.EndsWith(".xml"))
{
xmlPath = p;
continue;
}
if (p.EndsWith(".xsl"))
{
xslPath = p;
continue;
}
}
}
// TODO: check if xmlPath and xslPath aren't empty
this.ConvertXML2PDF(xmlPath, xslPath);
}
private async void ConvertXML2PDF(string xmlPath, string xslPath)
{
Aspose.Pdf.Document pdf = new Aspose.Pdf.Document();
string pdfPath = xmlPath.Replace(".xml", "pdf");
try
{
pdf.BindXml(xmlPath, xslPath);
// System.UnauthorizedAccessException: 'Access to the path 'C:\Users\path\to\filename.xsl' is denied.'
}
catch (System.Exception e)
{
throw e;
}
}
}
}
MainPage.xaml
<Page
x:Class="XML2PDF.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XML2PDF"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid x:Name="BackgroundGrid" Background="Transparent" AllowDrop="True" DragEnter="BackgroundGrid_DragEnter" Drop="BackgroundGrid_Drop" />
</Page>
Package.appmanifest
<?xml version="1.0" encoding="utf-8"?>
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest"
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
IgnorableNamespaces="uap mp">
...
<Capabilities>
<Capability Name="internetClient" />
</Capabilities>
</Package>