我有一个html文档,在head标签中定义了css。我希望将这个html字符串转换为pdf。
我使用了ABC pdf和SelectPDF dll并生成了pdf。
当我使用ABC pdf时,它在转换为pdf时不应用任何CSS样式。 SelectPDF已经将CSS样式应用于pdf,但它有点凌乱。
有没有人知道如何正确地将HTML转换为pdf?
答案 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;
以下是将上述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转换等)。