将字节数组转换为 UWP 的 pdf
Convert Byte Array to pdf for UWP
我正在研究 Xamarin.Forms-UWP。
我想将存储在数据库中的字节数组转换为 Windows phone 的 pdf。
我知道如何转换
var base64Binarystr = "ABCDS"
byte[] bytes = Convert.FromBase64String(base64Binarystr );
谁能帮忙看看如何显示pdf?只是一个指针 - 我有多个 pdf 文件,所以我无法将所有文件添加到应用程序或存储在磁盘上。
感谢您对此提出任何建议。
谢谢!
每个接收到的文件都可以同名存储(我用的是"my.pdf")这样就不会有存储太多文件的风险。如果你需要缓存文件,那么你可以给不同的名字。虽然我尝试了 ms-appdata,但 pdf 查看器不想为我显示本地、临时或下载文件夹中的文件,所以我不得不将文件从本地文件夹移动到资产以显示查看器 "wants" 的方式ms-appx-web。下载文件夹也有 CreationCollisionOption.ReplaceExisting 的问题,如果文件已经存在而不是替换它,它会说参数无效,但本地和临时文件夹行为正常。
/////////////// 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
我正在研究 Xamarin.Forms-UWP。 我想将存储在数据库中的字节数组转换为 Windows phone 的 pdf。 我知道如何转换 var base64Binarystr = "ABCDS" byte[] bytes = Convert.FromBase64String(base64Binarystr );
谁能帮忙看看如何显示pdf?只是一个指针 - 我有多个 pdf 文件,所以我无法将所有文件添加到应用程序或存储在磁盘上。
感谢您对此提出任何建议。 谢谢!
每个接收到的文件都可以同名存储(我用的是"my.pdf")这样就不会有存储太多文件的风险。如果你需要缓存文件,那么你可以给不同的名字。虽然我尝试了 ms-appdata,但 pdf 查看器不想为我显示本地、临时或下载文件夹中的文件,所以我不得不将文件从本地文件夹移动到资产以显示查看器 "wants" 的方式ms-appx-web。下载文件夹也有 CreationCollisionOption.ReplaceExisting 的问题,如果文件已经存在而不是替换它,它会说参数无效,但本地和临时文件夹行为正常。
/////////////// 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