【问题标题】:Cannot apply CSS to the html string无法将 CSS 应用于 html 字符串
【发布时间】:2013-08-07 14:05:21
【问题描述】:

我正在尝试将 evoPDF 集成到我的 asp.net 应用程序中。我正在通过 ajax 从我的 html 文件 onclick 发送部分 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/323​​2 不起作用,我在网络上上传了我的应用程序。但是,我看不到在生成的 Html 中应用了任何 CSS。在文档中,他们还建议附加

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

并且,使用这个方法。

        pdfConverter.GetPdfBytesFromHtmlString(String html);

我在上面尝试的所有内容都没有应用 CSS。任何想法....

【问题讨论】:

标签: c# html asp.net css evopdf


【解决方案1】:

我在使用 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);

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,你对内联 CSS 是正确的。我是一所大学的开发人员。我不是为一个应用程序编写 Evopdf。但是对于在大学里运行的所有应用程序。它应该做两件事。 1 将整个 url html 更改为 Pdf,并将 html 的另一个更改部分更改为 pdf。所以,这就是为什么我不想只支持内联引用,因为我不知道对所有其他应用程序有什么期望。我也尝试过上传到实时 url 并调用 css 。仍然没有 CSS
    • 在没有看到完整示例的情况下,我唯一能想到的建议是基本标记应该指向作为所有相对 URL 的根目录的文件夹。它不应该直接指向实际文件,否则所有相关 url 都应该中断。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2019-02-15
    • 1970-01-01
    • 2012-10-13
    • 2017-07-14
    • 2018-08-10
    • 1970-01-01
    相关资源
    最近更新 更多