Определенные текстовые символы отсутствуют после преобразования PDF в изображениеLinux

Ответить
Anonymous
 Определенные текстовые символы отсутствуют после преобразования PDF в изображение

Сообщение Anonymous »

определенные текстовые символы отсутствуют после преобразования PDF в изображение на веб -приложении Azure Linux (Debian) OS.
Похоже, что проблема вызвана файлами PDF без встроенных шрифтов. /> < /p>
Другие интересующие точки: < /p>
  • Проблема возникает также в Windows azure Windows OS. < /li>
    Проблема не возникает в моей локальной среде Windows. 4.1.11 /usr/share/fonts/trueType и это не имело никакого эффекта, за исключением /usr/share/fonts/truetype/arial.ttf , которые
    не пропустили символы, однако не совпадают с оригинальным шрифтом
Нажмите «Скачать оригинал», чтобы загрузить оригинал PDF, который имеет весь текст. /> < /li>
< /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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»