用纯HTML写一个凭证并打印

news2025/1/22 17:56:28

最近有个需求,需要通过网页把单子打印出来,就用html实现了一个,主要使用了windwos自带的print打印,全部代码如下:

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>标题</title>
    <style type="text/css" media="all">
        * {
            margin: 0;
            padding: 0;
            font-size: 12px
        }

        table {
            width: 90%;
            border: 1px solid #000;
            border-collapse: collapse;
            margin: 5px auto
        }

        th,
        td {
            border: 1px solid #000;
            border-collapse: collapse;
            padding: 8px 5px
        }

        h1 {
            font-size: 24px
        }

        @media print {
            .no-print {
                display: none;
            }
        }

        .headStyle{
            width: 90%;
            display: flex;
            justify-content: space-between;
            border-collapse: collapse;
            margin: 5px auto;
        }
        .headTitleLift{
            display: flex;
        }
        .title {
            display: flex;
            flex-direction: column;
            align-items: end;
        }
        .title div {
            margin-bottom: 5px; /* 为了增加行间距 */
        }
        .content div {
            margin-bottom: 5px; /* 为了增加行间距 */
        }

        .foot{
            display: flex;
            flex-direction: row;
            align-items: flex-start;
            width: 90%;
            justify-content: space-between;
            border-collapse: collapse;
            margin: 5px auto;
        }
        .foot div {
            margin-right: 50px; /* 设置项目间距为10像素 */
        }

    </style>
</head>

<body>
<div class="no-print" style="text-align:center;margin:5px">
    <button onClick="window.print()"> 打 印</button>
</div>

<h1 style="text-align: center;">某某的单子要打印</h1>
<p style="text-align: center;">
    日期: <span id="currentDate"></span>
</p>




<div class="headStyle">
    <div class="headTitleLift">
        <div class="title">
            <div >水单位:</div>
            <div >对应水票编号:</div>
        </div>

        <div class="content">
            <div >XXXX</div>
            <div >203023032</div>
        </div>
    </div>

    <div class="headTitleLift">
        <div class="title">
            <div >供水渠系:</div>
            <div >灌季:</div>
        </div>

        <div class="content">
            <div >XX有限公司</div>
            <div >冬季 </div>
        </div>
    </div>

</div>



<div class="table-box">
    <table>
        <thead>
        <tr>
            <th> 斗口</th>
            <th> 申请面积(亩)</th>
            <th> 灌溉定额(方/亩)</th>
            <th> 申请水量(方)</th>
            <th> 开始时间</th>
            <th> 结束时间</th>
            <th> 计划用时(时分秒)</th>
            <th> 斗口流量(方/秒)</th>
            <th> 备注</th>
        </tr>
        </thead>
        <tbody>
        <tr>
            <td> 1</td>
            <td> 数据1</td>
            <td> 数据2</td>
            <td> 数据3</td>
            <td> 数据4</td>
            <td> 数据5</td>
            <td> 数据6</td>
            <td> 数据7</td>
            <td> 数据8</td>
        </tr>
        <tr>
            <td> 2</td>
            <td> 数据1</td>
            <td> 数据2</td>
            <td> 数据3</td>
            <td> 数据4</td>
            <td> 数据5</td>
            <td> 数据6</td>
            <td> 数据7</td>
            <td> 数据8</td>
        </tr>
        </tbody>
        <tfoot>
        <tr>
            <th>合计:</th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th> 300.00</th>
            <th> 300.00</th>
            <th> 300.00</th>
        </tr>
        </tfoot>
    </table>
</div>

<div class="foot">
    <div>水管所审核:单打独斗</div>
    <div>配水员:李刚</div>
    <div>支(渠)长:可</div>
    <div>用水单位(签字):单打独斗</div>

</div>


<script>
    // 获取当前日期
    var currentDate = new Date();
    var year = currentDate.getFullYear();
    var month = currentDate.getMonth() + 1;
    var day = currentDate.getDate();

    // 更新页面上的日期显示
    document.getElementById("currentDate").innerText = year + "年" + month + "月" + day + "日";
</script>

</body>

</html>

以下是代码中每行的作用解释:

1. `<!DOCTYPE html>`:声明文档类型为HTML5,告诉浏览器以HTML5标准解析页面

2. `<html>`:HTML文档的根元素,包含整个HTML内容。

3. `<head>`:包含了文档的元数据,如标题、样式表和脚本等信息。

4. `<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>`:设置文档的字符编码为UTF-8,确保正确显示中文等特殊字符。

5. `<title>配水单</title>`:设置页面的标题为"配水单"。

6. `<style type="text/css" media="all">`:开始定义内联CSS样式。

7. `* { margin: 0; padding: 0; font-size: 12px }`:设置全局样式,将所有元素的外边距、内边距和字体大小设为12像素。

8. `table { ... }`:定义表格的样式,包括宽度、边框等。

9. `th, td { ... }`:定义表头和单元格的样式,包括边框和内边距。

10. `h1 { font-size: 24px }`:设置h1标题的字体大小为24像素。

11. `@media print { ... }`:定义在打印模式下的样式,这里设置了`.no-print`类在打印时不显示。

12. `.headStyle { ... }`、`.headTitleLift { ... }`、`.title { ... }`等:定义了一些自定义样式,用于配水单头部和表格的布局。

13. `<body>`:包含了页面的主体内容。

14. `<div class="no-print" ...>`:一个不打印的div,包含了打印按钮,点击该按钮可以触发打印功能。

15. `<h1>`:页面标题,显示"甘肃省引大秦工程管理配水单"。

16. `<p>`:段落元素,显示日期信息。

17. `<div class="headStyle">`:头部样式的div容器,包含水单位、供水渠系等信息。

18. `<div class="table-box">`:表格容器,包含了配水表格。

19. `<div class="foot">`:页脚容器,包含了审核和签字信息。

20. `<script>`:JavaScript脚本部分,用于获取当前日期并更新页面上的日期显示。

21. `// 获取当前日期`:注释,解释下面代码的作用。

22. `var currentDate = new Date();`:创建一个Date对象,表示当前日期和时间。

23. `var year = currentDate.getFullYear();`、`var month = currentDate.getMonth() + 1;`、`var day = currentDate.getDate();`:分别获取当前日期的年、月、日。

24. `document.getElementById("currentDate").innerText = year + "年" + month + "月" + day + "日";`:将获取的年月日信息更新到页面上id为"currentDate"的span元素中,显示当前日期。

25. `</body>`:HTML文档的body结束标签。

26. `</html>`:HTML文档的结束标签。

具体效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java21 + SpringBoot3使用Spring Security时如何在子线程中获取到认证信息

文章目录 前言原因分析解决方案方案1&#xff1a;手动设置线程中的认证信息方案2&#xff1a;使用DelegatingSecurityContextRunnable创建线程方案3&#xff1a;修改Spring Security安全策略通过设置JVM参数修改安全策略通过SecurityContextHolder修改安全策略 总结 前言 近日…

Mysql开启bin-log日志

目录 一、安装配置 二、mysqlbinlog命令 一、安装配置 yum -y install mariadb mariadb-server#安装mysql数据库#默认配置文件/etc/my.cnfvim /etc/my.cnflog-binmariadb-bin #开启二进制日志 systemctl restart mariadb#会在/car/lib/mysql/产生二进制日志文件&#xff0…

Java_方法(重载方法签名等详解)

在之前我们学习C语言时&#xff0c;当我们想要重复使用某段代码的功能时&#xff0c;我们会将这段代码定义为一个函数&#xff0c;而在java中我们把这段重复使用的代码叫做方法。 方法的定义 类体的内容分为变量的声明和方法的定义&#xff0c;方法的定义包括两部分&#xff1…

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[搭建篇]

全网最详细的从0到1的turbo pnpm monorepo的前端工程化项目[搭建篇] 引言相关环境技术栈初始化工程安装turbo配置pnpm-workspace安装husky安装lint-staged安装eslint安装prettier配置 .editorconfig配置 .gitignore初步项目结构结语 引言 最近各种原因&#xff0c;生活上的&am…

【C++初阶】值得一刷的字符串string相关oj题

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

二.重新回炉Spring Framework:Spring Framework主要组件概览

1.写在前面的话 这里主要简单说一下Spring Framework的几个核心组件的总体情况。为了比较直观&#xff0c;这里使用了ClassPathXmlApplicationContext的类图来进行说明。它基本上包含了 IoC 体系中大部分的核心类和接口。类图如下图所示&#xff1a; 2.Resource 组件体系 R…

项目管理软件品牌榜:行业领导者与热门选择

大数据、人工智能等新兴技术的崛起&#xff0c;各种行业在数字化转型的过程中&#xff0c;越来越注重有效的项目管理和协作方式。而各种项目管理软件应运而生&#xff0c;以帮助企业提高效率、降低成本、提高协作性。然而在众多的项目管理软件市场上&#xff0c;如何选择适合自…

PCIe TX端电容

一、问题&#xff1a;PCIe为什么要加电容 PCIe为什么要加电容&#xff1f;具体的作用是什么&#xff1f; 答&#xff1a;因为PCIe Host和Receiver两端的直流偏置会不一样&#xff0c;所以需要在PCIe的传输路径上加电容&#xff0c;这样传输路径上只有AC信号&#xff0c;不存在…

小白如何学鸿蒙开发?

在互联网技术不断发展的现在&#xff0c;鸿蒙操作系统的出现标志着是能技术领域的一次重大突破&#xff0c;鸿蒙作为华为推出的一代操作系统&#xff0c;鸿蒙不仅达代表了自主创新的力量&#xff0c;还因为独特的分布式架构和全场景适配能力而备受关注。随着鸿蒙生态的不断完善…

机器学习 | 实现图像加密解密与数字水印处理

目录 实现窗口可视化 数字图像加密 窗口布局设置 基于混沌Logistic的图像加密 基于三重DES的图像加密 数字图像解密 窗口布局设置 基于混沌Logistic的图像解密 基于三重DES的图像解密 基于LSB的数字水印提取 窗口布局设置 水印的嵌入与提取 实现窗口可视化 这里…

【C++】类与对象【定义、访问限定符、this指针】

&#x1f308;个人主页&#xff1a;秦jh__https://blog.csdn.net/qinjh_?spm1010.2135.3001.5343&#x1f525; 系列专栏&#xff1a;http://t.csdnimg.cn/eCa5z 目录 面向过程和面向对象初步认识 类的引入 类的定义 成员变量命名规则的建议&#xff1a; 类的访问限定符及…

代码随想录刷题笔记 DAY 29 | 非递减子序列 No.491 | 全排列 No.46 | 全排列 II No. 47

文章目录 Day 2901. 非递减子序列&#xff08;No. 491&#xff09;1.1 题目1.2 笔记1.3 代码 02. 全排列&#xff08;No. 46&#xff09;2.1 题目2.2 笔记2.3 代码 03. 全排列 II&#xff08;No. 47&#xff09;3.1 题目3.2 笔记3.3 代码 Day 29 01. 非递减子序列&#xff08;…

Spring Boot打war包部署到Tomcat,访问页面404 !!!

水善利万物而不争&#xff0c;处众人之所恶&#xff0c;故几于道&#x1f4a6; 文章目录 Spring Boot打war包部署到Tomcat&#xff0c;访问页面404 &#xff01;&#xff01;&#xff01;解决办法&#xff1a;检查Tomcat版本和Jdk的对应关系&#xff0c;我的Tomcat是6.x&#x…

C语言系列-预定义符号#define定义宏#define定义宏

&#x1f308;个人主页: 会编辑的果子君 &#x1f4ab;个人格言:“成为自己未来的主人~” 目录 预定义符号 #define定义常量 #define定义宏 预定义符号 C语言设置了一些预定义符号&#xff0c;可以直接使用&#xff0c;预定义符号也是在预处理期间处理的。 __FILE__ /…

渗透测试练习题解析 4(CTF web)

1、[GXYCTF2019]禁止套娃 1 考点&#xff1a;git 泄露 进入靶场后只有一串文字&#xff0c;源代码、抓包之类的都没有敏感信息出现&#xff0c;直接用 kali 的 dirsearch 扫描 发现存在 .git 目录&#xff0c;猜测应该是源码泄露&#xff0c;使用 GitHack 扒一下源码&#xff0…

第13章 网络 Page747~749 asio核心类 ip::tcp::resolver

3&#xff0c; ip::tcp::resolver 如果新浪的IP地址变了&#xff0c;该怎么办呢? ip::tcp::resolver 可以帮我们用上www.sina.com.cn&#xff0c;因为它负责将人类可读的多种网址信息&#xff0c;一步 到位地解析成ip::tcp::socket建立连接所需要的ip::tcp::endpoint结构&…

【FastAPI】P1 安装与第一个 FastAPI 应用

目录 FastAPI 安装第一个 FastAPI 应用代码拆解分析 FastAPI 安装 FastAPI 是用于快速构建 API 的 web 框架&#xff0c;依赖 Python 3.8 及更高版本。使用 pip 命令安装 fastapi&#xff1a; pip install fastapi安装异步处理 ASGI 的服务器 Uvicorn&#xff1a; pip insta…

pipx — 在隔离环境中安装和运行 Python 应用程序

pipx官网&#xff1a; https://pipx.pypa.io/stable/ pipx pipx 是一个用于安装和运行Python应用程序的工具&#xff0c;它类似于 Linux的 apt 和JavaScript 的 npx 。 pipx和pip的区别&#xff1a; pip是一个通用的python包安装工具pipx专注于安装python cli程序 cli&#…

Web 扫描神器:WhatWeb 保姆级教程(附链接)

一、介绍 WhatWeb 是一款用于识别网站技术栈和特征的开源Web扫描工具。它可以自动分析网站的响应并识别出使用的Web框架、CMS、服务器、JavaScript库等技术组件。WhatWeb的目标是通过分析网站的内容&#xff0c;提供有关目标的技术信息&#xff0c;这对于安全测试、漏洞评估和…

移动云云桌面应用场景广泛,助力行政、教育等领域的办公转型

当今办公场景&#xff0c;远程办公和视频会议逐渐常态化&#xff0c;但是在实际应用过程中都需要PC设备的支持&#xff0c;当然还有很多其他的场景也是如此。为了满足使用要求&#xff0c;我们走到哪里就需要把设备带到哪里&#xff0c;非常不方便。那么&#xff0c;有没有一种…