首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在wkhtmltopdf中使用"--replace“

如何在wkhtmltopdf中使用"--replace“
EN

Stack Overflow用户
提问于 2014-11-18 09:54:49
回答 3查看 2.6K关注 0票数 7

我看到了所有的内容,没有看到关于内容的方式使用‘--替换’。wkhtmltopdf中"--replace“的用法。请举个例子,谢谢。:)

EN

回答 3

Stack Overflow用户

发布于 2016-07-28 08:02:55

假设您有一个脚注my_footer.html,它包含以下内容:

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <script>
      function substitutePdfVariables() {

          function getParameterByName(name) {
              var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search);
              return match && decodeURIComponent(match[1].replace(/\+/g, ' '));
          }

          function substitute(name) {
              var value = getParameterByName(name);
              var elements = document.getElementsByClassName(name);

              for (var i = 0; elements && i < elements.length; i++) {
                  elements[i].textContent = value;
              }
          }

          ['username'/*, 'topage', 'page',.. etc and any variable you would want to replace */]
              .forEach(function(param) {
                  substitute(param);
              });
      }
  </script>
  </head>
  <body onload="substitutePdfVariables()">
    <span class="username"></span>
  </body>
</html>

您可以将"username“替换为某个值:

代码语言:javascript
运行
复制
wkhtmltopdf my_super_html.html --footer-html my_footer.html --replace "username" "Veaer"

请注意,我使用javascript将命名变量替换为我的值。

票数 3
EN

Stack Overflow用户

发布于 2021-01-22 22:48:39

来自@dpineda和@viniciux的混合解决方案。此解决方案不会破坏样式表

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
        <script charset="utf-8"> 
            // For WKHTMLTOPDF Substitutions
            window.onload = function()
            {
                function substitute(key, value)
                {
                    var elements = document.getElementsByClassName(key);
                    for (var i = 0; elements && i < elements.length; i++)
                    {
                        elements[i].textContent = value;
                    }
                }

                var url = window.location.href.replace(/#$/, ""); // Remove last # if exist
                // default params
                //['page', 'section','sitepage','title','subsection','frompage','subsubsection','isodate','topage','doctitle','sitepages','webpage','time','date'];
                var params = (url.split("?")[1] || "").split("&");
                for (var i = 0; i < params.length; i++)
                {
                    var param = params[i].split("=");
                    var key = param[0];
                    var value = param[1] || '';
                    var regex = new RegExp('{' + key + '}', 'g');
                    substitute(key, value);
                }
            }
        </script>
  </head>
  <body onload="substitutePdfVariables()">
    <span class="username"></span>
  </body>
</html>
票数 1
EN

Stack Overflow用户

发布于 2020-05-29 07:01:08

我对@viniciux做了一些调整,它实际上是有效的,所以这是对footer.html的改进

代码语言:javascript
运行
复制
<!DOCTYPE html>
<html>
  <head>
  <meta charset="utf-8">
  <script charset="utf-8"> 
    function replaceParams() {
      var url = window.location.href        
        .replace(/#$/, ""); // Remove last # if exist
      // default params
      //['page', 'section','sitepage','title','subsection','frompage','subsubsection','isodate','topage','doctitle','sitepages','webpage','time','date'];
      var params = (url.split("?")[1] || "").split("&");
      for (var i = 0; i < params.length; i++) {
          var param = params[i].split("=");
          var key = param[0];
          var value = param[1] || '';
          var regex = new RegExp('{' + key + '}', 'g');
          document.body.innerText = document.body.innerText.replace(regex, value);
      }      
    }
  </script>
  </head>
  <body onload="replaceParams()">
    name: {username}
    age: {age}
    url: {url}
    page {page}
  </body>
</html>

然后您可以添加多个参数来动态替换

代码语言:javascript
运行
复制
wkhtmltopdf page.html --footer-html footer.html --replace "username" "Veaer" --replace "age" "20" --replace "url" "google.com"

请注意,页面将是当前的pdf页面,默认情况下会包含在参数列表中

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26985285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档