将带有内联CSS的HTML字符串转换为PDF

时间:2018-06-06 03:18:54

标签: c# asp.net-mvc html-to-pdf

我有一个html文档,在head标签中定义了css。我希望将这个html字符串转换为pdf。

我使用了ABC pdf和SelectPDF dll并生成了pdf。

当我使用ABC pdf时,它在转换为pdf时不应用任何CSS样式。 SelectPDF已经将CSS样式应用于pdf,但它有点凌乱。

有没有人知道如何正确地将HTML转换为pdf?

1 个答案:

答案 0 :(得分:2)

我找到了将内联样式的HTML字符串转换为PDF的解决方案。我已经使用了ABCpdf版本11.该解决方案由ABCpdf的技术团队提供。我已经尝试了许多库和在线解决方案(我可以将我的HTML字符串传递给服务并获得pdf),但没有一个给我一个好的输出,包括上面评论的解决方案。 所以这是HTML到pdf转换的解决方案。



<html>
<meta charset="utf-8" />
<head><head>
<body style="height: 100%;background-color: #D7CCC8;font-size: 12px;position: relative;height: 100%;margin: 0;">
<div style='position: relative;min-height: 100%;padding: 1em 1em 2em;margin-bottom: -11em;'>

put the content that you want to be in the pdf(with inline styling the html elements). This is an example of the html string that needs to be converted into a pdf.


</div>
</body>
</html>
&#13;
&#13;
&#13;

以下是将上述HTML字符串转换为pdf的C#代码。

            //generate pdf
            using (Doc pdfDocument = new Doc())
            {
                // Set HTML options
                pdfDocument.HtmlOptions.Engine      = EngineType.Gecko;
                pdfDocument.HtmlOptions.Media       = MediaType.Screen;
                // Convert first HTML page, result: html string
                int         pageID                  = pdfDocument.AddImageHtml(result);

                // Convert other HTML pages
                while (true)
                {
                    if (!pdfDocument.Chainable(pageID))
                    {
                        break;
                    }

                    pdfDocument.Page                = pdfDocument.AddPage();
                    pageID                          = pdfDocument.AddImageToChain(pageID);
                }

                //save
                for (int i = 0; i < pdfDocument.PageCount; i++)
                {
                    pdfDocument.PageNumber          = i;
                    pdfDocument.Flatten();
                }

                //save the pdf, pdfFullPath: path to save the pdf
                pdfDocument.Save(pdfFullPath);
            }

上面的代码会将html字符串转换为pdf。 注意:在我的HTML中,我没有任何图像,所有的样式都是内联提到的,就像在示例中一样。

希望上面的解决方案可以帮助我,就像它为我做的那样。欢迎任何人建议对此代码进行任何改进(例如:插入图像,复杂的html到pdf转换等)。