Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using iText.StyledXmlParser.Resolver.Resource;
- using Microsoft.Extensions.Logging;
- using System;
- using System.IO;
- using System.Resources;
- namespace Cytena.EVA.Report
- {
- public class CustomResourceRetriever : IResourceRetriever
- {
- private readonly string _baseUri;
- private readonly ILogger<PdfGenerator> _logger;
- public CustomResourceRetriever(ILogger<PdfGenerator> logger, string baseUri)
- {
- _logger = logger;
- _baseUri = baseUri;
- }
- public byte[] GetByteArrayByUrl(Uri url)
- {
- using Stream stream = GetInputStreamByUrl(url);
- if (stream == null)
- {
- return Array.Empty<byte>();
- }
- byte[] result = InputStreamToArray(stream);
- return result;
- }
- // TODO CodReview with Andrey
- public Stream GetInputStreamByUrl(Uri url)
- {
- string localPath = url.LocalPath;
- if (File.Exists(localPath))
- {
- var fi = new FileInfo(url.LocalPath);
- _logger.LogInformation($"Retrieved: {url.LocalPath} {fi.Length}");
- }
- else
- {
- _logger.LogWarning($"Not found: {localPath}");
- var filename = Path.GetFileName(url.LocalPath);
- if (filename.EndsWith("css"))
- localPath = Path.Combine(_baseUri, filename);
- else
- localPath = Path.Combine(_baseUri, "Images", filename);
- _logger.LogWarning($"New filename: {localPath}");
- }
- return new FileStream(localPath, FileMode.Open, FileAccess.Read);
- }
- private static byte[] InputStreamToArray(Stream stream)
- {
- byte[] b = new byte[8192];
- MemoryStream output = new();
- while (true)
- {
- var read = stream.Read(b, 0, b.Length);
- if (read < 1)
- {
- break;
- }
- output.Write(b, 0, read);
- }
- output.Dispose();
- return output.ToArray();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement