Можно ли заархивировать несколько документов selectpdf и вернуть их клиенту с помощью HttpResponseMessage в виде zip-файла? - PullRequest
0 голосов
/ 05 февраля 2020

Сегодня у меня есть рабочая реализация создания одного PdfDocument (пакет nuget Select.Pdf) и возврата его клиенту в виде вложения без сохранения его на диск с помощью MemoryStream. Однако я хотел бы создать несколько PdfDocument и заархивировать их в виде zip-файла, а затем вернуть их клиенту, также не сохраняя ничего на диск.

Это рабочая реализация, которую я имею сегодня, возвращая один PDF-файл.

        PdfDocument doc1 = new PdfDocument();

        using (MemoryStream memoryStream = new MemoryStream())
        {
            doc1.Save(memoryStream);

            string base64String = System.Convert.ToBase64String(memoryStream.GetBuffer());
            var returnValue = new HttpResponseMessage(HttpStatusCode.OK)
            {
                Content = new StringContent(base64String)
            };
            returnValue.Content.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment")
            {
                FileName = "generatedfile.pdf"
            };
            returnValue.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
            returnValue.Headers.Add("Access-Control-Expose-Headers", "Content-Disposition");

            var response = ResponseMessage(returnValue);
            doc1.Close();
            return response;
        }
...