Похоже, что проблема вызвана файлами PDF без встроенных шрифтов. /> < /p>
Другие интересующие точки: < /p>
- Проблема возникает также в Windows azure Windows OS. < /li>
Проблема не возникает в моей локальной среде Windows. 4.1.11 /usr/share/fonts/trueType и это не имело никакого эффекта, за исключением /usr/share/fonts/truetype/arial.ttf , которые
не пропустили символы, однако не совпадают с оригинальным шрифтом
< /ol>
код: < /p>
using Microsoft.AspNetCore.Mvc;
using PDFtoImage;
using SkiaSharp;
using Syncfusion.Drawing;
using Syncfusion.Licensing;
using Syncfusion.PdfToImageConverter;
using System.Net.Mime;
namespace AngularApp1.Server.Controllers
{
[ApiController]
[Route("[controller]")]
public class PdfController : ControllerBase
{
// PDFtoImage
[HttpPost("pdfToImages")]
public PdfToImagesResult PdfToImages([FromForm] IFormFile file)
{
ArgumentNullException.ThrowIfNull(file);
var images = new List();
string? errorMessage = null;
try
{
var format = SKEncodedImageFormat.Webp;
using (Stream stream = file.OpenReadStream())
{
foreach (SKBitmap bitmap in Conversion.ToImages(stream, true, null, new RenderOptions { Dpi = 220 }))
{
images.Add(new PdfImage() {
Bytes = SKImage.FromBitmap(bitmap).Encode(format, 90).ToArray(),
W = bitmap.Width,
H = bitmap.Height,
MimeType = $"image/{format.ToString().ToLower()}"
});
}
}
}
catch (Exception error)
{
errorMessage = error.ToString();
}
return new PdfToImagesResult() {
Images = images,
ErrorMessage = errorMessage,
};
}
// Syncfusion.PdfToImageConverter.Net
[HttpPost("pdfToImagesSF")]
public PdfToImagesResult PdfToImagesSF([FromForm] IFormFile file)
{
ArgumentNullException.ThrowIfNull(file);
var images = new List();
string? errorMessage = null;
Stream stream = Stream.Null;
try
{
SyncfusionLicenseProvider.RegisterLicense("your licence");
stream = file.OpenReadStream();
var imageConverter = new PdfToImageConverter(stream);
imageConverter.ScaleFactor = 1.5f;
SizeF imageSize = new SizeF(1819f, 2573f);
foreach (Stream imageStream in imageConverter.Convert(0, imageConverter.PageCount - 1, imageSize, true, true, true))
{
imageStream.Position = 0;
images.Add(new PdfImage() {
Bytes = BinaryData.FromStream(imageStream).ToArray(),
W = (int)imageSize.Width,
H = (int)imageSize.Height,
MimeType = MediaTypeNames.Image.Jpeg
});
}
}
catch (Exception error)
{
errorMessage = error.ToString();
}
finally
{
stream.Close();
}
return new PdfToImagesResult() {
Images = images,
ErrorMessage = errorMessage,
};
}
public class PdfToImagesResult
{
public List? Images { get; set; }
public string? ErrorMessage { get; set; }
}
public class PdfImage
{
public byte[]? Bytes { get; set; }
public int? W { get; set; }
public int? H { get; set; }
public string? MimeType { get; set; }
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... f-to-image
Мобильная версия