IE打印自动分页

本文介绍了一种在网页中实现打印功能的方法,并利用IE浏览器的ActiveX控件来扩展网页的功能,如打开、保存文件等。通过在HTML中加入特定的样式和JavaScript代码,实现了对打印样式的控制及页面元素的隐藏。

1)在body中加入这个object
<OBJECT id=WebBrowser classid=CLSID:8856F961-340A-11D0-A96B-00C04FD705A2 height=0 width=0 VIEWASTEXT>
</OBJECT>
2)在head头部加入

Java代码 复制代码
  1. <!--media=print 这个属性可以在打印时有效-->    
  2. <style media=print>    
  3. .Noprint{display:none;}    
  4. .PageNext{page-break-after: always;}    
  5. </style>   
<!--media=print 这个属性可以在打印时有效--> 
<style media=print> 
.Noprint{display:none;} 
.PageNext{page-break-after: always;} 
</style> 



说明:
Noprint样式可以使页面上的打印按钮等不出现在打印页面上,这一点非常重要,因为它可以用最少的代码完成最需要的功能

PageNext样式可以设置分页,在需要分页的地方<div class="PageNext"></div>就OK了
3)

Java代码 复制代码
  1. <input   onclick=document.all.WebBrowser.ExecWB(1,1)   type=button   value=打开   name=Button1>      
  2.  <input   onclick=document.all.WebBrowser.ExecWB(4,1)   type=button   value=另存为   name=Button2>      
  3.  <input   onclick=document.all.WebBrowser.ExecWB(10,1)   type=button   value=属性   name=Button3>      
  4.  <input   onclick=document.all.WebBrowser.ExecWB(6,1)   type=button   value=打印   name=Button>      
  5.  <input   onclick=document.all.WebBrowser.ExecWB(7,1)   type=button   value=打印预览name=Button>      
  6.  <input   onclick=document.all.WebBrowser.ExecWB(8,1)   type=button   value=页面设置   name=Button4>      
  7.  <br/>      
  8.  <input   onclick=window.location.reload()   type=button   value=刷新   name=refresh>      
  9.  <input   onclick="window.external.ImportExportFavorites(true,'');"   type=button   value=导入收藏夹   name=Button5>      
  10.  <input   onclick="window.external.ImportExportFavorites(false,'');"   type=button   value=导出收藏夹   name=Button32>      
  11.  <input   onclick="window.external.AddFavorite(location.href,   document.title)"   type=button   value=加入收藏夹   name=Button22>      
  12.  <br/>      
  13.  <input   onclick="window.external.ShowBrowserUI('OrganizeFavorites',   null)"   type=button   value=整理收藏夹   name=Submit2>      
  14.  <input   onclick='window.location="view-source:"   +   window.location.href'   type=button   value=查看源文件   name=Button7>      
  15.  <input   onclick="window.external.ShowBrowserUI('LanguageDialog',   null)"   type=button   value=语言设置   name=Button6>   
<think> 首先,用户的问题是:“我想查找a3浏览器实现表格自动分页打印的方法 请问a3浏览器实现表格自动分页打印的方法”。这似乎是关于在A3纸张大小的浏览器中实现表格自动分页打印的方法。 回顾系统级指令: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户提供了两个引用: - 引用[1]:讨论了HTML自动分页浏览器的问题,特别是在CSS中使用page-break-after属性时,Firefox不能在表中正确分页,建议使用DIV而不是表。 - 引用[2]:提到Web打印连续的表格,自动根据行高分页,以及设置纸张大小如A3/A4,通过cookie存储选择。 用户说这些引用仅供参考,不是用户真正的需求,我应该参考用户上一次的问题和我的回答。但在这个会话中,这是第一个消息,所以没有“上一次的问题”。用户说“参考用户上一次的问题和你的回答”,但在整个对话历史中,只有这条消息。所以,我需要基于当前信息。 用户的核心需求是:实现A3浏览器中表格自动分页打印的方法。 从引用中提取关键点: - 引用[1]:避免使用表(table)进行分页,改用DIV,因为Firefox不能将表断开。 - 引用[2]:设置纸张大小如A3/A4,通过cookie存储纸张大小选择。 因此,我应该整合这些信息,提供解决方案。 结构化回答: 1. **理解问题**:解释A3打印分页的重要性。 2. **解决方案**:基于引用,建议使用CSS分页属性和正确的HTML结构。 - 避免表格,改用DIV或其他容器。 - 使用CSS控制分页:如page-break-after。 - 设置纸张大小:通过CSS或后台设置。 3. **代码示例**:提供HTML/CSS代码片段演示。 4. **注意事项**:提及浏览器兼容性问题(如Firefox vs IE)。 5. **生成相关问题**:在末尾添加相关问题。 确保使用中文回答。 生成相关问题: - 基于主题,如如何优化、兼容性问题、具体实现细节。 最终回答结构: - 开头:简要概述方法。 - 主体:逐步解释。 - 代码块:展示实现。 - 结尾:总结和相关问题。 代码块:在回答中包含HTML/CSS代码。 引用标识:在引用引用时添加[^1]或[^2]。 现在,构建回答。 </think> ### A3浏览器实现表格自动分页打印的方法 在浏览器中实现A3纸张大小的表格自动分页打印,主要涉及HTML、CSS和JavaScript技术。核心思路是:使用CSS分页属性(如`page-break-after`)控制打印分页,并结合HTML结构优化(避免使用`<table>`元素,改用`<div>`容器)来解决浏览器兼容性问题。同时,通过设置纸张大小选项(如A3)来确保内容适配。下面我将逐步解释实现方法。 #### 1. **HTML结构优化:避免使用`<table>`元素** 引用[1]指出,在Firefox中使用`page-break-after`属性时,不能在单个表格中断开内容(即不能将表自动分页)。因此,解决方案是将表格内容改用`<div>`容器组织。例如: - 使用`<div class="row">`模拟表格行,而不是`<tr>`。 - 在每个需要分页的位置添加CSS分页属性。 - 示例HTML结构: ```html <div id="print-content"> <div class="row">行1内容</div> <div class="row">行2内容</div> <!-- 分页点 --> <div class="page-break"></div> <div class="row">行3内容</div> </div> ``` #### 2. **CSS分页控制:设置自动分页和A3纸张大小** 使用CSS的`@page`规则定义纸张大小(如A3),并结合`page-break-after`或`page-break-before`属性实现自动分页。关键点: - **设置纸张大小**:在CSS中定义A3纸张(标准尺寸为297mm × 420mm)。 - **分页属性**:在内容容器中添加分页点,例如在每页末尾强制分页。 - **浏览器兼容性**:针对Firefox等浏览器,确保分页属性应用于`<div>`而非`<table>`[^1]。 - 示例CSS代码: ```css /* 定义A3纸张大小 */ @page { size: A3; /* A3纸张尺寸 */ margin: 1cm; /* 设置页边距 */ } /* 强制分页样式 */ .page-break { page-break-after: always; /* 始终在此元素后分页 */ } /* 打印样式优化 */ @media print { body { margin: 0; padding: 0; } .row { display: table-row; /* 模拟表格行,但不使用<table> */ } } ``` #### 3. **JavaScript纸张大小设置:支持用户选择A3/A4** 引用[2]提到,可通过Cookie存储用户纸张大小选择(如A3或A4),然后在打印时动态应用。实现步骤: - 在网页中添加设置面板(如单选按钮供用户选择纸张)。 - 使用JavaScript存储选择到Cookie。 - 打印时根据Cookie值调整CSS纸张大小。 - 示例JavaScript代码: ```javascript // 纸张设置函数 function setPaperSize(size) { document.cookie = `paperSize=${size}`; // 存储纸张大小到Cookie console.log(`纸张大小设置为: ${size}`); } // 打印前加载纸张设置 window.addEventListener('load', function() { const cookies = document.cookie.split(';'); const paperCookie = cookies.find(cookie => cookie.includes('paperSize')); const paperSize = paperCookie ? paperCookie.split('=')[1] : 'A4'; // 默认A4,若未设置 const style = document.createElement('style'); style.innerHTML = `@page { size: ${paperSize}; }`; document.head.appendChild(style); }); // 示例HTML设置面板(用户可见) // <div id="print-settings"> // <input type="radio" name="paper" value="A3" onclick="setPaperSize('A3')"> A3 // <input type="radio" name="paper" value="A4" onclick="setPaperSize('A4')"> A4 // </div> ``` #### 4. **完整实现步骤** - **步骤1**:构建HTML内容时,使用`<div>`容器代替表格元素。 - **步骤2**:在CSS中定义`@page`规则和分页属性,确保在`.page-break`元素后强制分页。 - **步骤3**:集成JavaScript纸張设置面板,允许用户选择A3或A4大小。 - **步骤4**:测试打印预览:在浏览器中按`Ctrl+P`检查分页效果。 - **注意事项**: - 兼容性问题:Firefox对表格分页支持较差,优先使用`<div>`结构[^1]。 - 性能优化:对于大型表格,可使用JavaScript动态计算行高,并在达到A3页面高度时自动插入分页点。 - 测试工具:在Chrome、Firefox和Edge中测试,确保跨浏览器一致。 #### 5. **代码整合示例** 以下是完整HTML文件示例: ```html <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>A3表格自动分页打印</title> <style> /* A3纸张定义 */ @page { size: A3; margin: 1cm; } .page-break { page-break-after: always; } @media print { .row { display: table-row; padding: 10px; border-bottom: 1px solid #ccc; /* 模拟表格边框 */ } } #print-settings { margin-bottom: 20px; } </style> </head> <body> <!-- 纸张设置面板 --> <div id="print-settings"> <label><input type="radio" name="paper" value="A3" onclick="setPaperSize('A3')"> A3</label> <label><input type="radio" name="paper" value="A4" onclick="setPaperSize('A4')" checked> A4</label> </div> <!-- 打印内容容器 --> <div id="print-content"> <div class="row">行1: 数据内容示例</div> <div class="row">行2: 数据内容示例</div> <div class="page-break"></div> <!-- 分页点 --> <div class="row">行3: 数据内容示例</div> </div> <script> function setPaperSize(size) { document.cookie = `paperSize=${size}; path=/`; // 存储纸张大小 alert(`纸张已设置为 ${size}`); } window.onload = function() { const cookies = document.cookie.split(';'); const paperCookie = cookies.find(cookie => cookie.trim().startsWith('paperSize=')); const paperSize = paperCookie ? paperCookie.split('=')[1] : 'A4'; const style = document.createElement('style'); style.innerHTML = `@page { size: ${paperSize}; }`; document.head.appendChild(style); }; </script> </body> </html> ``` 此方法确保了在A3纸张上自动分页打印的可靠性,同时解决了Firefox等浏览器的兼容性问题。实际使用时,根据表格数据量动态插入`.page-break`元素[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值