【问题标题】:ITextSharp code HTML parser not parsing the javascript.ITextSharp 代码 HTML 解析器不解析 javascript。
【发布时间】:2013-07-22 10:23:41
【问题描述】:

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

【问题讨论】:

  • 如果您使用 Html 转 pdf 则
  • 那么,有没有其他方法可以解析该页面呢?请让我知道忽略要为 pdfconversion 中的 htmlstring 传递的 html 字符串中使用的脚本标签
  • 这意味着您只希望在您的 Pdf 中输出 html 标记。我说得对吗?
  • 是的.. 也可以在 C# 中,以便可以从我获得的页面中过滤 html 代码并解析它.. 请告诉我,它会有所帮助.. 提前谢谢.. :)
  • 我已经添加了代码。检查一下。

标签: c#-4.0 itextsharp


【解决方案1】:

使用此函数在 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
        {
        }
 }

【讨论】:

  • 又有一个想法,并在下面发布.. :)
【解决方案2】:

还有一种方法可以解决它,例如,在 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;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-22
    • 2012-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-27
    • 2015-03-03
    • 1970-01-01
    相关资源
    最近更新 更多