【问题标题】:Convert Byte Array to pdf for UWP将字节数组转换为 UWP 的 pdf
【发布时间】:2017-11-27 13:36:50
【问题描述】:

我正在研究 Xamarin.Forms-UWP。 我想将存储在数据库中的字节数组转换为 Windows 手机的 pdf。 我知道如何转换 var base64Binarystr = "ABCDS" byte[] bytes = Convert.FromBase64String(base64Binarystr);

任何人都可以帮助如何显示 pdf 吗?只是一个指针 - 我有多个 pdf 文件,因此我无法将所有文件添加到应用程序或存储在磁盘上。

感谢任何关于此的指针。 谢谢!

【问题讨论】:

  • 只需将 byte[] 写入临时文件并使用您昨天询问的相同方法显示它
  • @Jason 不幸的是,它不适用于临时文件。它必须移动到资产或查看器拒绝显示它。不知道为什么。没有时间深入研究它的 javascript 代码
  • 感谢 Jason,您的意见有效!

标签: xamarin.forms xamarin.uwp


【解决方案1】:

每个接收到的文件都可以用相同的名称存储(我使用“my.pdf”),这样就不会有存储太多文件的风险。如果您需要缓存文件,则可以提供不同的名称。尽管我尝试了 ms-appdata,但 pdf 查看器不想为我显示本地、临时或下载文件夹中的文件,所以我不得不将文件从本地文件夹移动到资产以显示查看器通过 ms-“想要”它的方式应用程序网络。下载文件夹也有 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

【讨论】:

  • 再次感谢您提供帮助!它就像一个冠军!
  • 没问题。祝你好运
猜你喜欢
  • 2016-07-06
  • 2015-09-16
  • 1970-01-01
  • 2012-11-09
  • 1970-01-01
  • 2011-01-28
  • 1970-01-01
  • 2016-04-14
  • 1970-01-01
相关资源
最近更新 更多