【问题标题】:itext7 + pdfHtml: how set portrait orientation and fit content on ConvertToPdfitext7 + pdfHtml:如何在 ConvertToPdf 上设置纵向和适合内容
【发布时间】:2020-10-11 10:14:57
【问题描述】:

我做了一个简单的 html 到 pdf 的转换,获得了横向。 在pdfHtml release notes 中,我看到默认方向应该是纵向,但我得到的是横向。

我找不到执行此操作的选项/参数/设置。

可能它在我眼中隐藏的 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 结果:

PDF 结果:

【问题讨论】:

  • 快速评论,默认方向只有在您使用分类帐页面大小时才会更改
  • 这能回答你的问题吗? How to set orientation to Landscape in iText 7
  • @AndréLemos,这两个答案都很有用,我是这个话题的新手。所以我用当前结果编辑了文本。有没有办法进行缩放以适应内容并在右侧保留边距而不剪切内容?我是否必须处理 HTML 或 itext7 转换配置?
  • 好吧,有多种方法可以绕过它。看这里stackoverflow.com/questions/3341485/…stackoverflow.com/questions/47869248/…
  • @AndréLemos 感谢您提供非常好的相关文章。我做了一些测试,但在我的上下文中很难找到正确的方法。 html 是由外部应用程序生成的,所以我应该对其进行转换。这些文章很好理解它很难,此外 itext7 在渲染中产生了一些意想不到的白线。我找到了一个很好的解决方案,基于 wkhtmltopdf 将库从 itext7 更改为 dinkToPdf,我附上的结果可能对其他开发人员有用......也许

标签: itext itext7 pdfhtml


【解决方案1】:

我解决了将库从 itext7 更改为 DinkToPdf 的问题。我发现它使用起来非常简单,足以满足我的需求。


将库更改为 DinkToPdf 后的 MVC 控制器

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 结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-31
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2017-04-05
    • 1970-01-01
    相关资源
    最近更新 更多