2016-08-24 4 views
0

Я пытаюсь создать pdf-файл моего представления в моем проекте MVC и сохранить его в хранилище Blade Azure, не имея копии файла на моем сервере.Создайте pdf-файл с помощью rotativa и сохраните до Azure blob

Я использую Rotativa для создания своего PDF-файла, и это отлично работает.

Этот файл служит для сохранения файла в Azure Storage.

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

     // Retrieve a reference to a container. 
     CloudBlobContainer container = blobClient.GetContainerReference("contracts"); 

     // Retrieve reference to a blob named "myblob". 
     CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob"); 

     // Create or overwrite the "myblob" blob with contents from a local file. 
     using (var fileStream = System.IO.File.OpenRead(@"c:\test blob.txt")) 
     { 
      blockBlob.UploadFromStream(fileStream); 
     } 

Но я не знаю, как свести две функции вместе, чтобы создать PDF-файл из представления, а затем сохранить в blob.

Я надеюсь, что моя проблема понятна. Спасибо в ожидании.

ответ

0

У меня есть сборка. Он имеет только три функции построения. Все функции создадут файл pdf.

enter image description here

кажется, что нам нужно сохранить PDF в виде файла шаблона, а затем загрузить в Azure Blob.

+0

Спасибо за вашу помощь. Полагаю, у меня есть несколько вариантов? Я мог бы создать файл на своем сервере, загрузить его в blob и удалить его снова. Или, может быть, я мог бы попытаться найти альтернативный pdfwriter. Каков рекомендуемый подход? Я новичок в этой области и никогда не сохранял файлы сервера, поэтому я не хочу идти по неправильному пути. Еще раз спасибо. – Ste

0

Я достиг этого с помощью частичного просмотра MVC5 в методе контроллера, я сократил его для ясности и не показал свой объект службы Azure, который возвращает объект blob, поскольку это стандартный материал MS. Работает как удовольствие!

  1. Вернуться в pdf от Rotativa;
  2. Используйте «BuildPdf» для преобразования в массив байтов;
  3. Поместите его в поток памяти;
  4. Загрузить в Azure Blob с помощью UploadFromStream на объекте Blob

    var file = new Rotativa.PartialViewAsPdf("viewname", model) { FileName = "test" + ".pdf" }; byte[] applicationPDFData = file.BuildPdf(this.ControllerContext); Stream stream = new MemoryStream(applicationPDFData); blob.UploadFromStream(stream);