Ejemplo n.º 1
0
        private async Task <Stream> GetThumbnailPng(byte[] pdfBytes, int size)
        {
            try
            {
                var inputFile  = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());
                var outputFile = Path.Combine(Path.GetTempPath(), Path.GetRandomFileName());

                await File.WriteAllBytesAsync(inputFile, pdfBytes);

                GhostscriptWrapper.GenerateThumbnail(inputFile, outputFile);

                var resultStream = new MemoryStream();
                using (var image = Image.Load(outputFile))
                {
                    image.Mutate(ctx => ctx.Resize(size, size * image.Height / image.Width));
                    image.SaveAsJpeg(resultStream);
                }

                File.Delete(inputFile);
                File.Delete(outputFile);

                resultStream.Seek(0, SeekOrigin.Begin);
                return(resultStream);
            }
            catch (Exception ex)
            {
                this.logger.LogWarning(ex.Message);
                return(Stream.Null);
            }
        }