CopyToAsyn c () не заполняет поток памяти - PullRequest
0 голосов
/ 18 марта 2020

Я использую приложение xamarin.forms и мне нужно сохранить файл (это файл PDF этой ситуации). Это мой сценарий: я использую медиа-плагин для сохранения изображений с камеры, и из этих изображений с помощью объекта PdfDocument я создаю файл PDF:

  PdfDocument document = new PdfDocument();


            for (int i = 0; i < Images.Count(); i++)
            {
                PdfPage page = document.Pages.Add();

                PdfGraphics graphics = page.Graphics;

                  Stream imageStream = Images.ElementAt(i);
                PdfBitmap image = new PdfBitmap(imageStream);

                page.Graphics.DrawImage(image, new PointF(40, 100));

            } 
  MemoryStream stream = new MemoryStream();
              document.Save(stream);
            document.Close(true);


  String localPath =
                      Task.Run(() => DependencyService.Get<ISave>().SaveFile(stream, "test.pdf")).Result;

И все работает нормально, он генерирует мне PDF-документ со страницами поток заполнен байтами, и проблема в этом SaveFile:

[assembly: Dependency(typeof(Save))]
namespace PdfSave.Droid.Shared
{
    public class Save: ISave
    {
        private readonly string _rootDir = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "TestFolder");
        public async Task<string> SaveFile(Stream pdfStream, string fileName)
        {
            if (!Directory.Exists(_rootDir))
                Directory.CreateDirectory(_rootDir);          
            var filePath = Path.Combine(_rootDir, fileName);
            using (var memoryStream = new MemoryStream())
            {
                await pdfStream.CopyToAsync(memoryStream);
                File.WriteAllBytes(filePath, memoryStream.ToArray());
            }

            return filePath;
        }
}

проблема в этой строке


await pdfStream.CopyToAsync(memoryStream);

поток памяти пуст! , Кто-нибудь знает, в чем может быть проблема?

...