我正在使用Xamarin.Forms-UWP。 我想将存储在数据库中的字节数组转换为Windows手机的pdf。 我知道如何转换 var base64Binarystr =“ABCDS” byte [] bytes = Convert.FromBase64String(base64Binarystr);将字节数组转换为用于UWP的pdf
任何人都可以帮助如何显示PDF?只是一个指针 - 我有多个PDF文件,所以我不能将所有文件添加到应用程序或存储在磁盘上。
欣赏任何关于此的指针。 谢谢!
我正在使用Xamarin.Forms-UWP。 我想将存储在数据库中的字节数组转换为Windows手机的pdf。 我知道如何转换 var base64Binarystr =“ABCDS” byte [] bytes = Convert.FromBase64String(base64Binarystr);将字节数组转换为用于UWP的pdf
任何人都可以帮助如何显示PDF?只是一个指针 - 我有多个PDF文件,所以我不能将所有文件添加到应用程序或存储在磁盘上。
欣赏任何关于此的指针。 谢谢!
每个收到的文件都可以用相同的名称存储(我使用“my.pdf”),那么存储的文件太多没有风险。如果你需要缓存文件,那么你可以给出不同的名字。虽然我试过ms-appdata,但pdf查看器并不想显示来自Local,Temp或Downloads文件夹的文件,所以我必须将文件从Local文件夹移动到Assets,以便通过ms- APPX-网络。 Downloads文件夹在CreationCollisionOption.ReplaceExisting方面也存在问题,如果文件已经存在而不是替换它,但是Local和Temporary文件夹的行为正确,则它表示无效的参数。
/////////////// store pdf file from internet, move it to Assets folder and display ////////////////////
//bytes received from Internet. Simulated that by reading existing file from Assets folder
var pdfBytes = File.ReadAllBytes(@"Assets\Content\samplepdf.pdf");
try
{
StorageFolder storageFolder = ApplicationData.Current.LocalFolder; //or ApplicationData.Current.TemporaryFolder
StorageFile pdfFile = await storageFolder.CreateFileAsync("my.pdf", CreationCollisionOption.ReplaceExisting);
//write data to created file
await FileIO.WriteBytesAsync(pdfFile, pdfBytes);
//get asets folder
StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder assetsFolder = await appInstalledFolder.GetFolderAsync("Assets");
//move file from local folder to assets
await pdfFile.MoveAsync(assetsFolder, "my.pdf", NameCollisionOption.ReplaceExisting);
}
catch (Exception ex)
{
}
Control.Source = new Uri(string.Format("ms-appx-web:///Assets/pdfjs/web/viewer.html?file={0}", "ms-appx-web:///Assets/my.pdf")); //local pdf
再次感谢您的帮助!它像冠军一样工作! – XamDev
没问题。祝好运与其余 –
这个问题是https://stackoverflow.com/questions/44705923/display-local-pdf-file-in-webview-control-displays-blank-pdf-file/ –
只写字节相关[]临时文件,并使用您昨天询问的相同方法显示它 – Jason
@Jason不幸的是,它不适用于临时文件。它必须被移到资产或观众否认显示它。不知道为什么。没有时间挖掘它的javascript代码 –