6

我正在尝试将 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。有什么想法吗....

4

2 回答 2

3

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

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

于 2013-08-06T14:15:29.423 回答
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);
于 2017-06-16T00:15:31.547 回答