<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Merge Page Number Overwriting for every page]]></title><description><![CDATA[<p>Hi. We are using JSReport Single Exe file for PDF Generation. While we are trying to add a Page Number through &quot;Merge&quot;, it's not working as expected.<br />
Page Numbers are overlapping over one another (Like 3 over 2 over 1).</p>
<p><img src="/uploads/files/1682579871251-upload-7e9e9732-7036-4997-ad35-1bbc8d6b8981-resized.png" alt="0_1682579870118_upload-7e9e9732-7036-4997-ad35-1bbc8d6b8981" class="img-responsive img-markdown" /></p>
<p>The inputs are,</p>
<p>COMMAND:</p>
<pre><code class="language-js">jsreport render --request index.json --template.engine=ejs  --template.recipe=chrome-pdf  --template.content=./input/template/template.html --data=./input/data/data.json  --out=./output/output.pdf
</code></pre>
<p>index.json</p>
<pre><code class="language-js">{
  &quot;template&quot;: {
    &quot;engine&quot;: &quot;ejs&quot;,
    &quot;recipe&quot;: &quot;chrome-pdf&quot;,
    &quot;pdfOperations&quot;: [{
      &quot;type&quot;: &quot;merge&quot;,
      &quot;template&quot;: {
        &quot;engine&quot;: &quot;ejs&quot;,
        &quot;recipe&quot;: &quot;chrome-pdf&quot;,
        &quot;content&quot;: &quot;&lt;% function getPageNumber (pageIndex) { if (pageIndex == null) {return '';} const pageNumber = pageIndex + 1;return pageNumber;} %&gt;&lt;html&gt; &lt;head&gt; &lt;style&gt; * { box-sizing: border-box; } html, body { margin: 0px; padding: 0px; } .main { display: flex; flex-direction: column; justify-content: space-between; width: 100%; height: 100%; } .footer { position: absolute; bottom: 0; width: 100%; padding-bottom: 20px; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;% $pdf.pages.forEach(function(pdfPage,index) {  %&gt; &lt;% if(index != undefined){ %&gt; &lt;div style='page-break-before: always;'&gt;&lt;/div&gt; &lt;% } %&gt; &lt;main class='main'&gt; &lt;footer class='footer'&gt; &lt;span style='float: left'&gt; Footer &lt;/span&gt; &lt;span style='float: right'&gt;Page &lt;%= getPageNumber(index) %&gt;&lt;/span&gt; &lt;/footer&gt; &lt;/main&gt; &lt;% }) %&gt;  &lt;/body&gt; &lt;/html&gt;&quot;
      }
    }]
  }
}
</code></pre>
<p>templaet.html</p>
<pre><code class="language-js">&lt;h1&gt;&lt;%= content1 %&gt;&lt;/h1&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content2 %&gt;&lt;/h1&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content3 %&gt;&lt;/h1&gt;
</code></pre>
<p>Thanks in advance.</p>
]]></description><link>https://forum.jsreport.net/topic/2781/merge-page-number-overwriting-for-every-page</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 14:51:19 GMT</lastBuildDate><atom:link href="https://forum.jsreport.net/topic/2781.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 27 Apr 2023 07:21:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Merge Page Number Overwriting for every page on Invalid Date]]></title><description><![CDATA[<p>Hi. We are using JSReport Single Exe file for PDF Generation. While we are trying to add a Page Number through &quot;Merge&quot;, it's not working as expected.<br />
Page Numbers are overlapping over one another (Like 3 over 2 over 1).</p>
<p><img src="/uploads/files/1682579871251-upload-7e9e9732-7036-4997-ad35-1bbc8d6b8981-resized.png" alt="0_1682579870118_upload-7e9e9732-7036-4997-ad35-1bbc8d6b8981" class="img-responsive img-markdown" /></p>
<p>The inputs are,</p>
<p>COMMAND:</p>
<pre><code class="language-js">jsreport render --request index.json --template.engine=ejs  --template.recipe=chrome-pdf  --template.content=./input/template/template.html --data=./input/data/data.json  --out=./output/output.pdf
</code></pre>
<p>index.json</p>
<pre><code class="language-js">{
  &quot;template&quot;: {
    &quot;engine&quot;: &quot;ejs&quot;,
    &quot;recipe&quot;: &quot;chrome-pdf&quot;,
    &quot;pdfOperations&quot;: [{
      &quot;type&quot;: &quot;merge&quot;,
      &quot;template&quot;: {
        &quot;engine&quot;: &quot;ejs&quot;,
        &quot;recipe&quot;: &quot;chrome-pdf&quot;,
        &quot;content&quot;: &quot;&lt;% function getPageNumber (pageIndex) { if (pageIndex == null) {return '';} const pageNumber = pageIndex + 1;return pageNumber;} %&gt;&lt;html&gt; &lt;head&gt; &lt;style&gt; * { box-sizing: border-box; } html, body { margin: 0px; padding: 0px; } .main { display: flex; flex-direction: column; justify-content: space-between; width: 100%; height: 100%; } .footer { position: absolute; bottom: 0; width: 100%; padding-bottom: 20px; } &lt;/style&gt; &lt;/head&gt; &lt;body&gt; &lt;% $pdf.pages.forEach(function(pdfPage,index) {  %&gt; &lt;% if(index != undefined){ %&gt; &lt;div style='page-break-before: always;'&gt;&lt;/div&gt; &lt;% } %&gt; &lt;main class='main'&gt; &lt;footer class='footer'&gt; &lt;span style='float: left'&gt; Footer &lt;/span&gt; &lt;span style='float: right'&gt;Page &lt;%= getPageNumber(index) %&gt;&lt;/span&gt; &lt;/footer&gt; &lt;/main&gt; &lt;% }) %&gt;  &lt;/body&gt; &lt;/html&gt;&quot;
      }
    }]
  }
}
</code></pre>
<p>templaet.html</p>
<pre><code class="language-js">&lt;h1&gt;&lt;%= content1 %&gt;&lt;/h1&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content2 %&gt;&lt;/h1&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content3 %&gt;&lt;/h1&gt;
</code></pre>
<p>Thanks in advance.</p>
]]></description><link>https://forum.jsreport.net/post/12043</link><guid isPermaLink="true">https://forum.jsreport.net/post/12043</guid><dc:creator><![CDATA[aravinthvr]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Merge Page Number Overwriting for every page on Invalid Date]]></title><description><![CDATA[<p>It's because you set <code>position:absolute</code> in your footer, so it's absolute in the whole document, not in a specific page.<br />
The content of merged template should look like this</p>
<pre><code>&lt;% function getPageNumber (pageIndex) { if (pageIndex == null) {return '';} const pageNumber = pageIndex + 1;return pageNumber;} %&gt;
    &lt;html&gt;

    &lt;head&gt;
        &lt;style&gt;
            * {
                box-sizing: border-box;
            }

            html,
            body {
                margin: 0px;
                padding: 0px;
            }

            .main {
                display: flex;
                flex-direction: column;
                justify-content: space-between;
                width: 100%;
                height: 100%;
            }

            .header {
              width: 100%;
              padding-top: 20px;             
            }

            .footer {                            
                width: 100%;
                padding-bottom: 20px;
            }
        &lt;/style&gt;
    &lt;/head&gt;

    &lt;body&gt;
        &lt;% $pdf.pages.forEach(function(pdfPage,index) {  %&gt;
            &lt;% if(index != undefined){ %&gt;
                &lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
                &lt;% } %&gt;
                    &lt;main class='main'&gt;
                        &lt;header class='header'&gt;&lt;/header&gt;
                        &lt;footer class='footer'&gt;
                            &lt;span style='float: left'&gt; Footer &lt;/span&gt;
                            &lt;span style='float: right'&gt;Page
                                &lt;%= getPageNumber(index) %&gt;
                            &lt;/span&gt;
                        &lt;/footer&gt;
                    &lt;/main&gt;
                    &lt;% }) %&gt;
    &lt;/body&gt;

    &lt;/html&gt;
</code></pre>
<p>Additionally you should set <code>&quot;mergeWholeDocument&quot;: true</code> in the pdf operation</p>
<pre><code class="language-js"> &quot;pdfOperations&quot;: [{
      &quot;type&quot;: &quot;merge&quot;,
      &quot;mergeWholeDocument&quot;: true,
      &quot;template&quot;: {
        &quot;engine&quot;: &quot;ejs&quot;,
        &quot;recipe&quot;: &quot;chrome-pdf&quot;,           
    }]
</code></pre>
]]></description><link>https://forum.jsreport.net/post/12045</link><guid isPermaLink="true">https://forum.jsreport.net/post/12045</guid><dc:creator><![CDATA[jan_blaha]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Merge Page Number Overwriting for every page on Invalid Date]]></title><description><![CDATA[<p>Great, Thanks. It worked as expected and saved my day.</p>
<p>One more doubt. Is there a way to send data dynamically to the content inside pdfOperations same like main template?</p>
<p>I got to know <strong>pdfAddPageItem</strong> (<a href="https://playground.jsreport.net/w/admin/ihh7laK2" rel="nofollow">https://playground.jsreport.net/w/admin/ihh7laK2</a>) from this forum. But, It was not saving that.</p>
<p>template.content</p>
<pre><code class="language-js">&lt;h1&gt;&lt;%= content1 %&gt;&lt;/h1&gt;
&lt;% pdfAddPageItem(content1) %&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content2 %&gt;&lt;/h1&gt;
&lt;% pdfAddPageItem(content2) %&gt;
&lt;div style='page-break-before: always;'&gt;&lt;/div&gt;
&lt;h1&gt;&lt;%= content3 %&gt;&lt;/h1&gt;
&lt;% pdfAddPageItem(content3) %&gt;
</code></pre>
<p>The content of merged template will be like this</p>
<pre><code class="language-js">&lt;% $pdf.pages.forEach(function(pdfPage,index) { console.log(pdfPage); } %&gt;
</code></pre>
<p>There is no items inside even after saving<br />
<img src="/uploads/files/1682682088144-upload-76651a26-d9bd-4445-97ed-f15028f526d6-resized.png" alt="0_1682682086497_upload-76651a26-d9bd-4445-97ed-f15028f526d6" class="img-responsive img-markdown" /></p>
]]></description><link>https://forum.jsreport.net/post/12053</link><guid isPermaLink="true">https://forum.jsreport.net/post/12053</guid><dc:creator><![CDATA[aravinthvr]]></dc:creator><pubDate>Invalid Date</pubDate></item><item><title><![CDATA[Reply to Merge Page Number Overwriting for every page on Invalid Date]]></title><description><![CDATA[<p><a href="https://stackoverflow.com/questions/16183748/how-to-escape-html-in-node-js-ejs-view" rel="nofollow">https://stackoverflow.com/questions/16183748/how-to-escape-html-in-node-js-ejs-view</a><br />
ejs is probably escaping it, try using this</p>
<p><code>&lt;%- pdfAddPageItem(content1) -%&gt;</code></p>
]]></description><link>https://forum.jsreport.net/post/12054</link><guid isPermaLink="true">https://forum.jsreport.net/post/12054</guid><dc:creator><![CDATA[jan_blaha]]></dc:creator><pubDate>Invalid Date</pubDate></item></channel></rss>