itext7 + pdf Html: как установить портретную ориентацию и разместить контент в ConvertToPdf - PullRequest
0 голосов
/ 21 июня 2020

Я сделал простое преобразование html в pdf, получив альбомную ориентацию. В примечаниях к выпуску pdf Html я вижу, что ориентация по умолчанию должна быть портретной, но у меня альбомная.

Я не могу найти параметр / параметр / настройку для выполнения это.

Вероятно, это скрытый от моих глаз объект ConverterProperties: - (

Есть предложения?

Вот мой очень простой код

public byte[] HtmlToPdf(string html)
{
    using (Stream htmlSource = new MemoryStream(Encoding.UTF8.GetBytes(html)))
    using (MemoryStream pdfDest = new MemoryStream())
    {
        ConverterProperties converterProperties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);

        return pdfDest.ToArray();
    }
}

ИЗМЕНИТЬ после ответов (я получил правильную ориентацию!):

Теперь мне нужно найти способ уменьшить масштаб содержимого, чтобы он соответствовал содержимому и имел правильные поля без обрезки изображения.

public static byte[] HtmlToPdf(string html)
{
    using (Stream htmlSource = new MemoryStream(Encoding.UTF8.GetBytes(html)))
    using (MemoryStream pdfDest = new MemoryStream())
    {
        PdfDocument pdfDocument = new PdfDocument(new PdfWriter(pdfDest));
        pdfDocument.SetDefaultPageSize(PageSize.A4.Rotate());
        ConverterProperties converterProperties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(htmlSource, pdfDocument, converterProperties);

        return pdfDest.ToArray();
    }
}

HTML результат:

enter image description here

PDF result:

введите описание изображения здесь

1 Ответ

0 голосов
/ 27 июня 2020

Решил сменить библиотеку с itext7 на DinkToPdf. Я нашел его очень простым в использовании и достаточным для моих нужд.

Контроллер MVC после изменения библиотеки на DinkToPdf

public byte[] PdfCreatorController(IConverter converter)
    string html = await reader.ReadToEndAsync();

    var globalSettings = new GlobalSettings
    {
        ColorMode = ColorMode.Color,
        Orientation = Orientation.Portrait,
        PaperSize = PaperKind.A4,
        Margins = new MarginSettings { Top = 10 },
        DocumentTitle = "Report",    
        Out = string.Empty,
    };

    var objectSettings = new ObjectSettings
    {
        PagesCount = true,
        HtmlContent = html,
        WebSettings = { DefaultEncoding = "utf-8", UserStyleSheet = Path.Combine(Directory.GetCurrentDirectory(), "assets", "styles.css") },
    };

    var pdf = new HtmlToPdfDocument()
    {
        GlobalSettings = globalSettings,
        Objects = { objectSettings }
    };

    return = _converter.Convert(pdf);
}

Результат PDF

введите описание изображения здесь

...