javascript - 使用 javascript 进行打印时限制每页的行数

标签 javascript php html

我有一个表,其中显示来自 php mysql 的所有数据,如下图 enter image description here 图像。之后,我添加了打印按钮并将其所有数据放入 div,当我单击打印按钮时,样式不显示所有数据都以 pdf 格式提供,但我想限制每个页面只能有 5 行。我该怎么做,请帮助任何人,不胜感激。提前致谢。

HTML

<div style="width:25%;float:left;padding-top:50px;">
   <input style="width:25%;height:4%;color:blue;background-color:white;" type="submit" name="Print" value="Print" onclick="PrintDiv()"/>
</div>
<div id="divToPrint" style="display:none;">
   <div style="width:900px;height:500px;background-color:white;padding-
      top:50px;">
      <p style="text-align:center;font-weight:bold;font-
         size:15px;">VendorDetails</p>
      <div class="scrollingTable result" style="width:100%;">
         <table id="myTable" class="table table-striped table-bordered table-fixed" cellspacing="0" style="width:100%;padding-top:20px;">
            <thead>
               <tr>
                  <th>Name</th>
                  <th>Address</th>
                  <th>Telephone</th>
                  <th>Email</th>
               </tr>
            </thead>
            <td>xl health systems pvt ltd</td>
            <td>madapur hitech city hyderabad,Tripura-654121
            </td>
            <td>9874213021,9701255365</td>
            <td>mnvbgr@gmail.com</td>
            </tr>
            <tr>
               <td>TTK solutionsss</td>
               <td>white field Bangalore,Karnataka-560078
               </td>
               <td>9874512352,9854231852</td>
               <td>ttk@gmail.com</td>
            </tr>
            <tr>
               <td>harman</td>
               <td>itpl bangalore,Karnataka-560012
               </td>
               <td>8794566666,9874522333</td>
               <td>mvvgfg@gmail.com</td>
            </tr>
            <tr>
               <td>abc systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>primus systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
               <td>new vision systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>focus systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
               <td>philips systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>education systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
               <td>new systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>sony systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
               <td> vision systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>xiomi systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
               <td>prime systems</td>
               <td>chennai,Karnataka-564201</td>
               <td>9874123012,9870142321</td>
               <td>abcsystems@gmail.com</td>
            </tr>
            <tr>
               <td>redmi systems</td>
               <td>delhi gurgon,Tripura-450210</td>
               <td>8978123012,9989870121</td>
               <td>primus@gmail.com</td>
            </tr>
            <tr>
            </tbody>
         </table>
      </div>
   </div>
</div>

用于打印数据的 javascript 代码

  function PrintDiv(){
       var divToPrint = document.getElementById('divToPrint');
       var popupWin = window.open('','_blank','width=900,height=500');
       popupWin.document.open();
       popupWin.document.write('<html><head><link href="Assests/css/bootstrap.min.css" rel="stylesheet"/></head><body onload="window.print()">' + divToPrint.innerHTML + '</html>');
       popupWin.document.close();
  }

最佳答案

您可以在 php 代码生成期间设置每五个 tr 元素的样式。也许添加一些边距以强制下一个 tr 元素转到下一页?

您还可以使用 nth-child ( link ) 在 css 中执行此操作。示例here .

或者,如果您想基于此隐藏的 div (或我推荐的原始数据表)在 PrintDiv() 函数中动态生成 html,请尝试获取表行集合( link )并根据需要使用它:

document.getElementById("myTableId").rows;

编辑:由于我的 CSS 解决方案并不完美(请阅读 this 帖子评论),您可以尝试为 php 代码中的每 5 行生成一个单独的表,然后添加它们,例如margin-bottom 参数

关于javascript - 使用 javascript 进行打印时限制每页的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48337933/

相关文章:

javascript - 如何删除按钮之间的边距?

php - 去除黑边 4 :3 on youtube thumbnails

php - 如何在核心 PHP 中使用 Laravel Eloquent 模型?

javascript - 如何在javascript中获取实际时间?

html - 如何设置 Angular Material 中列的大小?

javascript - 在将新图像加载到网站时显示正在加载...动画

javascript - 函数调用中的语法错误

javascript - JWT sha256 哈希与 Internet 草稿示例不匹配

php - 正则表达式不适用于 mysql_fetch_array

javascript - 从网格 Issu 中的 xml 文件加载动态数据