Я использую iText 7 для преобразования HTML-документа в PDF. Это работает очень хорошо, но изображения, размер которых превышает размер страницы PDF, выходят за пределы страницы, и эту часть невозможно увидеть при открытии документа PDF. Я использовал автоматическое масштабирование, и это решает проблему, но при автоматическом масштабировании изображение теряет некоторую информацию. Я хотел бы создать страницу для изображения размером с изображение. Поэтому всякий раз, когда изображение обрабатывается, оно помещается на отдельную страницу, размер которой равен размеру изображения.
Вот код, который я использую для создания PDF-файла из html:
Код: Выделить всё
using (MemoryStream pdfBodyStream = new MemoryStream())
using (PdfWriter writer = new PdfWriter(pdfBodyStream))
using (PdfDocument pdfDocumentBody = new PdfDocument(writer))
{
pdfDocumentBody.AddNewPage();
var properties = new ConverterProperties();
properties.SetTagWorkerFactory(new CustomTagWorkerFactory(Dal, email.getItemAttachments.ToList()));
HtmlConverter.ConvertToPdf(email.Body, pdfDocumentBody, properties);
pdfDocumentBody.Close();
return pdfBodyStream.ToArray();
}
public override ITagWorker GetCustomTagWorker(IElementNode tag, ProcessorContext context)
{
if ("img".Equals(tag.Name(), StringComparison.OrdinalIgnoreCase))
{
return new CustomImgWorker(tag, context, Dal, Attachments);
}
return null;
}
В классе CustomImgWorker я использую переопределенный метод ProcessEnd для получения изображений для HTML из другого места и создания изображения с помощью ImageDataFactory из iText. Затем переопределенный метод GetElementResult возвращает этот объект изображения. Теперь я не уверен, как мне добиться того, чего я хочу, поскольку я не нашел ничего, где я мог бы контролировать добавление страниц в документ с помощью метода HtmlConverter.ConvertToPdf.
Знает ли кто-нибудь, как я буду создавать новую страницу для каждого из тегов img в html, которые имеют такой же размер, как и само изображение?
Подробнее здесь:
https://stackoverflow.com/questions/798 ... e-larger-t