iText7 - CSS3 文本溢出 属性 在将 HTML 转换为 PDF 时不呈现

iText7 - CSS3 text-overflow property not rendering when converting HTML to PDF

我正在使用 iText7 作为概念验证项目。

我需要证明 iText7 可以使用 CSS3 和 HTML5,正如他们在其网站上建议的那样。

但是,我发现当我生成 pdf 时,css3 属性丢失了。

下面是生成 pdf 文件的 .Net 代码。

public class HtmlToPdfService : IHtmlToPdfService
    {
        public async Task CreatePdfFromHtmlFileStreamAsync(IFormFile file)
        {
            try
            {
                if (file == null)
                {
                    throw new ArgumentException("file cannot be null or empty.");
                }

                var filename = $"{Path.GetFileNameWithoutExtension(file.FileName)}.pdf";

                var stream = new MemoryStream();

                var html = string.Empty;
                using (var reader = new StreamReader(file.OpenReadStream()))
                {
                    var converterProperties = new ConverterProperties();

                    html = reader.ReadToEnd();

                    using (var pdfWriter = new PdfWriter(stream))
                    {
                        pdfWriter.SetCloseStream(false);
                        HtmlConverter.ConvertToPdf(html, pdfWriter, converterProperties);
                    }
                }

                stream.Position = 0;


                using (var fileStream = new FileStream(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot/pdf", filename), FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None))
                {
                    await stream.CopyToAsync(fileStream);
                }

            }
            catch (Exception x)
            {
                throw x;
            }
        }
    }
}

这里是 HTML 我试过转换成 PDF:-

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
     p {
        width: 200px;
        border: 1px solid;
        padding: 2px 5px;

        /* BOTH of the following are required for text-overflow */
        white-space: nowrap;
        overflow: hidden;
    }

    .overflow-visible {
        white-space: initial;
    }

    .overflow-clip {
        text-overflow: clip;
    }

    .overflow-ellipsis {
        text-overflow: ellipsis;
    }

    .overflow-string {
    /* Not supported in most browsers, 
        see the 'Browser compatibility' section below */
        text-overflow: " [..]"; 
    }
</style>
</head>
    <body>
            <p class="overflow-visible">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
            <p class="overflow-clip">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
            <p class="overflow-ellipsis">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
            <p class="overflow-string">Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p>
    </body>
</html>

CSS -webkit-print-color-adjust: exact; 中有一个 属性 允许 CSS3 属性 打印。试试这个我希望它能帮助你。谢谢

body {
  -webkit-print-color-adjust: exact;
}

使用替代属性而不是像

这样的文本溢出
overflow:hidden;white-space:nowrap;

PDF 应该用于印刷类文档,具有精确的页面布局。这些属性 (text-overflow, text-ellipsis) 与固定布局文档关系不大,它们与具有可变尺寸的媒体(如屏幕)更相关。如果您创建的文档中有些文本被省略,reader 应该如何在纸上阅读它?

没有太大的必要在 PDF 中实现这些与屏幕相关的功能。