如何将样式应用于td中的元素-使用ItexSharp将HTML转换为PDF

问题描述

当前,我正在生成pdf并通过邮件发送,问题是css样式未应用于td标记内部的元素,任何线索。

在示例中,我在td标签内使用了h1标签,h1的样式不是CSS。

enter image description here

  var doc = new Document(PageSize.LETTER,50,80,60);
  MemoryStream memoryStream = new MemoryStream();
  PdfWriter writer = PdfWriter.GetInstance(doc,memoryStream);

   string rutaimagen = Server.MapPath("/images/logoMOPT.png");
            

   string image = $@"<img src=""{rutaimagen}""/>";
   string name = @"<h1 style=""border: 1px solid #ff5733;"">Eddie</h1>";
            
   doc.open();
   
   var html = $@" <table style='height: 171px; margin - left: auto; margin - right: auto;' border='1' width='676'>
                  <tbody><tr><td style='width: 225px;'>{image}</td>
                  <td style='width: 225px; text-align:center;'>2</td> 
                  <td style='width: 225px;'><h1 style='border: 1px solid #ff5733;'>Test</h1></td></tr><tr>
                  < td style='width: 225px;'>4</td> <td style='width: 225px;'>5</td> <td style='width: 225px;'>6</td></tr>
                  </tbody>
                  </table>";
           
          
            var sr = new StringReader(html);
            XMLWorkerHelper.GetInstance().ParseXHtml(writer,doc,sr);
            writer.CloseStream = false;
            doc.Close();
            memoryStream.Position = 0;
  

解决方法

<h1>可以应用style标记内的整个文本颜色,如下所示。但是无法应用文本边框。

<h1 style="color: #ff5733;">Eddie</h1>

要将边框应用于文本或字体,必须使用css属性,如下所示:

<h1 style="text-shadow: -1px 0 black,0 1px black,1px 0 black,0 -1px black; font-family: sans; color: white;
">Text With Border</h1>

第二种方式

可以通过为css添加h1类来安排:

h1 {
    text-shadow: -1px 0 black,0 -1px black;    
    font-family: sans; color: white;
}

然后无需在HTML中应用内联样式

<h1>Text With Border</h1>

这是实际示例:

https://jsfiddle.net/qtjrhg72/1/