无法将CSS应用于html字符串

6

我正在尝试将evoPDF集成到我的asp.net应用程序中。当我通过ajax点击发送来自我的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没有成功,我已经将我的应用程序上传到了web上。但是,我无法看到任何CSS应用在生成的Html中。文档也建议添加


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

同时,使用这种方法。

        pdfConverter.GetPdfBytesFromHtmlString(String html);

我尝试的所有方法都没有应用CSS。有什么想法吗?


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - aggy
2个回答

3
虽然使用evoPDF可以将html放在外部文件中,但我不建议这样做。相反,应在文档头中内联样式。当我们为Careers 2.0设置PDF生成器时,我记得URL必须是活动的URL,位于Web服务器后面,而不仅仅是相对链接在同一目录结构中。此外,在evo pdf中有一个超时,如果加载时间过长可能会导致图像丢失,内联所有内容也更好地解决了这个问题。
我还建议传递完全有效的html,而不仅仅是需要生成视图的片段。在幕后(至少在我们版本的evoPDF中),它只是升级了一个浏览器实例并截取了屏幕截图。根据文档类型,它们呈现略有不同。

是的,你说得对关于内联css。我是一名学院的开发人员。我不是为一个应用程序编写Evopdf。而是针对在学院运行的所有应用程序。它应该做两件事。1.将整个url html更改为Pdf和另一个部分的html更改为pdf。所以,这就是为什么我不只想支持内联引用,因为我不知道其他所有应用程序会有什么期望。我还尝试了上传到实时url并调用css。仍然没有CSS。 - Rabin
我能想到的唯一建议是,base标签应该指向相对URL的根目录。它不应该直接指向实际文件,否则所有相对URL都会失效。但如果没有完整的示例,我无法提供更多建议。 - Nick Larsen

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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接