1

我正在将 Itextsharp v5.4.2 与 mvc4 Web 应用程序一起使用,当尝试添加页面上返回的视图时,加载的 javascript 很少,它无法解析 itextsharp 的 html 解析器中的 html 字符串。

请帮助我知道是否有任何替代方法可以使用 itextsharp 解析要转换为 pdf 的网页。如果我使用错误的方法,请纠正我。

<script type="type/javascript">

$(document).ready(function(){});

</script> 

<html><table>adsfasdf..</table> some table elements.........</html>

C#代码:

PdfWriter writer= PdfWriter.GetInstance(doc, new FileStream(pdfpath + "/abcdtest.pdf", FileMode.Create));

            doc.Open();
var parsedHtmlElement = HTMLWorker.ParseToList(new StringReader(decodedHtmlElement), null);
4

2 回答 2

3

使用此函数在 HTMLCode 中传递您的 Html 字符串,并在 filePath 中保存路径。

 public void converttopdf(string HTMLCode, string filePath)
 {
        Document document = new Document();

        try
        {

            HTMLCode = Regex.Replace(HTMLCode, @"(<script[^*]*</script>)", "", RegexOptions.IgnoreCase);

            PdfWriter.GetInstance(document, new FileStream(filePath, FileMode.Create));
            document.Open();

            List<IElement> htmlarraylist = HTMLWorker.ParseToList(new StringReader(HTMLCode), null);
            for (int k = 0; k < htmlarraylist.Count; k++)
            {
                document.Add((IElement)htmlarraylist[k]);
            }

            document.Close();
        }
        catch
        {
        }
 }
于 2013-07-22T10:54:14.617 回答
1

另一种方法也可以解决它,例如,在 javascript 代码中,我们可以单独使用 html,而不是传递给 C# 并替换脚本标签。

像这样,

function IgnoreScripts(htmlString)
{
 var div = document.createElement('div');
        div.innerHTML = htmlString;
        var scripts = div.getElementsByTagName('script');
        var i = scripts.length;
        while (i--) {
            scripts[i].parentNode.removeChild(scripts[i]);
        }
        return div.innerHTML;
}
于 2013-07-23T07:19:06.913 回答