javascript - HtmlOptions.OnLoadScript 无法使用 ABCPdf 创建 PDF

标签 javascript c# asp.net pdf abcpdf

我有一个用 bootstrap 创建的 html 页面,我想用它创建一个 PDF,为此我正在使用 ABCPdf。 我正在尝试执行一个 javascript 脚本以将一些样式应用到我的 html,但它不起作用。有人知道会发生什么吗?

     Doc theDoc = new Doc();
     theDoc.Rect.Inset(5, 20);
     theDoc.HtmlOptions.Timeout = 3000000; 
     theDoc.HtmlOptions.UseScript = true;
     theDoc.HtmlOptions.PageCacheEnabled = false;
     theDoc.HtmlOptions.DoMarkup = true;
     theDoc.HtmlOptions.HostWebBrowser = false;
     theDoc.HtmlOptions.Media = MediaType.Screen;
     theDoc.HtmlOptions.BrowserWidth = 1500;
     theDoc.HtmlOptions.AddLinks = true;
     string script = @"var elemento = document.getElementById('description');"
                      +"for (i = 0; i < elemento.childNodes.length; i++) {"
                      +    "if (elemento.childNodes[i].className == 'row') {"
                      +       " if (elemento.childNodes[i].offsetHeight > 200) {"                                    
                                     +            "elemento.childNodes[i].className += ' saltoPagina';  }  }  }";

    theDoc.HtmlOptions.OnLoadScript = script;
    int theID;
    theID = theDoc.AddImageUrl(url, true, 0, true);

提前致谢。 :)

最佳答案

解决:如果你使用的是 ABCPdf,没有下一行就不能执行 javaScript(jQuery 从不工作):

 theDoc.HtmlOptions.Engine = EngineType.Gecko;

然后执行你的代码:

theDoc.HtmlOptions.GeckoSubset.OnLoadScript =
                @"(function() {
                        window.ABCpdf_go = false;

                        var elemento = document.getElementById('description');
                        var elementos =  elemento.childNodes;
                        var contador = 0;
                        for (i = 0; i < elementos.length; i++) {  
                            if(elementos[i].className == 'info'){ 
                                contador = contador + elementos[i].offsetHeight;
                                if(contador > 1600) {
                                    contador = elementos[i].offsetHeight;
                                    var childElements = elementos[i].childNodes; 
                                    for(j = 0; j < childElements.length; j++) { 
                                        if (childElements[j].className == 'infoDescrip'  && i != 1){
                                            childElements[j].className += ' saltoPagina';
                                        }        
                                    }
                                }           
                             }   
                        }


                        window.ABCpdf_go = true;
                })();";                 

但是如果您使用 EngineType.Gecko, Bootstrap 库将不起作用。

关于javascript - HtmlOptions.OnLoadScript 无法使用 ABCPdf 创建 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693251/

相关文章:

javascript - 在自己内部嵌套回调

javascript - Angular :未知 'null !' 语法

c# - ASP.NET 与 SharePoint - 哪个更适合 Web 开发人员?

javascript - 如何只为 div 标签内的表格维护滚动

asp.net - 使用 Twitter BootStrap Css Toolkit 时没有侧边栏的全宽内容

c# - session 为空,但仍在内部不为空

javascript - float 条形图中的不同颜色条,这可能吗?

javascript - AJAX获取: anonymous function not being called upon success

c# - 消失的系统托盘图标

c# - 来自 C# 的 Google Drive API 错误请求,但来自 Postman 的请求很好