无法将CSS应用于html字符串

时间:2013-08-06 14:00:02

标签: c# html asp.net css evopdf

我正在尝试将evoPDF集成到我的asp.net应用程序上。我通过ajax从我的html文件中发送部分html。一切都有效,直到这一部分。现在,当我从EvoPdf API调用这些方法时。

 1. GetPdfBytesFromHtmlStream(Stream, Encoding,urlbase)

 2. SavePdfFromHtmlStringToFile(String html,string filename,urlbase)

我发送的html块类似于

 <ol class = "lol">
         <li> HEY </li>
         <li> Now </li>

  </ol>

外部文件中的Css类似于

 .lol {

      background-color: red;

  }

根据文档,第三个参数必须是你提取html块的原始Html的完整url。我上传了我的应用程序,因为尝试localhost / 3232不起作用。但是,我看不到在生成的Html中应用任何CSS。在文档中,他们还建议附加

       <HEAD> <BASE HREF="full url to your html file"> </HEAD>

并使用此方法。

        pdfConverter.GetPdfBytesFromHtmlString(String html);

我在上面尝试过的任何内容都不适用于CSS。任何想法......

2 个答案:

答案 0 :(得分:3)

虽然可以在evoPDF的外部文件中使用html,但我不推荐它。而只是内联文档头部的样式。当我们为Careers 2.0设置PDF生成器时,我记得网址必须是网络服务器后面的实时网址,而不仅仅是相同目录结构中的相对链接。 evo pdf中还有一个超时,如果加载时间太长,可能会导致图像丢失,而内联的所有内容也会更好。

我还建议传递完全有效的html,而不仅仅是生成视图所需的片段。在幕后(至少在我们的evoPDF版本中),它只是提升浏览器实例并截取屏幕截图。根据doctype,它们的呈现方式略有不同。

答案 1 :(得分:0)

我用EvoPdf遇到了这个问题。我的修复是从web.config引用baseURL。我试图使用HttpContext.Current.Request.Url.AbsoluteUri;它在两个环境中工作但在另一台服务器上测试时没有。

  <appSettings>
    <add key="baseURL" value="http://your-domain.com/" />
  </appSettings>

所以你专门设置它,并在更改后正确显示CSS。也适用于https。您可以对其进行硬编码以进行测试,而不是使用ConfigurationManager。

        TextWriter outTextWriter = new StringWriter();

        Server.Execute("Page1.aspx", outTextWriter);
        Server.Execute("Page2.html", outTextWriter);

        string htmlStringToConvert = outTextWriter.ToString();
        outTextWriter.Close();

        // Use the current page URL as base URL
        string baseUrl = ConfigurationManager.AppSettings["baseURL"].ToString(); //HttpContext.Current.Request.Url.AbsoluteUri;

        // Convert the page HTML string to a PDF document in a memory buffer
        byte[] outPdfBuffer = htmlToPdfConverter.ConvertHtml(htmlStringToConvert, baseUrl);