【问题标题】:How to convert byte array to pdf in xamarin android using c#?如何使用c#在xamarin android中将字节数组转换为pdf?
【发布时间】:2016-10-20 19:25:39
【问题描述】:

我正在尝试使用 c# 在 xamarin android 应用程序中将字节转换为 pdf。 其中字节来自webservice。我使用简单的webservice(asmx) 来获取数据。

 appLoginService = new EgrasAndroid.AppLoginService();
 byte[] grnbytedata= appLoginService.GetGRNPdf(UserId.ToString(), GRN.ToString());
 string directory = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryDownloads);
 string file = Path.Combine(directory, "temp.pdf");
 System.IO.File.WriteAllBytes(file, grnbytedata);

我已经搜索了很多解决方案,但它们大多适用于 Web 应用程序或 Java 应用程序。

它没有显示任何错误。我在模拟器上运行它,但下载文件夹中显示了文件。当它使用路径“/storage/sdcard/Download”下载文件时。

有200mb的空白空间,我在模拟器里拿了sdcard。

【问题讨论】:

  • WriteAllBytes 有什么问题?有什么错误吗?您是否尝试调试它? grnbytedata 是否包含任何值?有点不清楚你在问什么。请添加更多详细信息
  • grnbytedata 返回数据良好.. WriteAllbytes 没有错误,但下载后没有显示文件.. 我无法在模拟器上的任何地方看到该文件..
  • 您可能没有写入数据的权限 - 检查它们是否开启!
  • @DanyDaKur 是的,我已经在 android manifest 中检查了 Read 和 WRITE_EXTERNAL_STORAGE

标签: c# xamarin xamarin.android


【解决方案1】:

问题是: 模拟器本身没有 pdf 阅读器。所以它无法读取pdf文件。 在模拟器中,您必须下载 PDF 阅读器。否则它在真实设备中工作正常。

如果设备或模拟器中没有外部存储,那么我们可以使用内部存储:

  var directory = global::Android.OS.Environment.ExternalStorageDirectory.AbsolutePath;
  directory= Path.Combine(directory ,Android.OS.Environment.DirectoryDownloads);
  string file = Path.Combine(directory.ToString(), "temp.pdf");
  System.IO.File.WriteAllBytes(file, grnbytedata);

【讨论】:

    【解决方案2】:

    检查您的路径。从 Marshmallow 访问文件的方式发生了变化。下面的代码应该可以解决问题

          if (Int32.Parse(Android.OS.Build.VERSION.Release.Substring(0, 1)) > 5)
                {
                    documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
                }
                else
                { 
                    documentsPath = Path.Combine(Android.OS.Environment.ExternalStorageDirectory.AbsolutePath, Android.OS.Environment.DirectoryDownloads); 
                }
    

    【讨论】:

    • 谢谢,但你说的是java代码。 c# 中没有像 Environment.GetFolderPath 这样的东西。路径没问题,但问题是模拟器中没有 pdf 阅读器。
    猜你喜欢
    • 2016-04-14
    • 2018-09-18
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-16
    • 1970-01-01
    相关资源
    最近更新 更多