使用HTML+CSS打造专业电子发票模板:普通发票与增值税发票实战指南

手把手教你用HTML+CSS打造专业电子发票模板(含增值税/普通发票) 本文详细介绍了如何利用HTML和CSS从零开始构建专业、合规的电子发票模板。文章深入解析了发票的样式规范,包括色彩、字体、布局等关键细节,并提供了完整的代码示例和实战技巧,帮助开发者快速创建适用于增值税和普通发票的、可打印且易于集成的动态模板。 阅读详情

1. 为什么选择HTML+CSS来制作电子发票模板?

你可能觉得奇怪,现在市面上有那么多现成的报表工具、PDF生成库,为什么还要用最基础的HTML和CSS来折腾电子发票呢?我刚开始接触企业财务系统开发时也有这个疑问,但踩过几次坑之后,我彻底明白了:简单、可控、兼容性好,才是硬道理。

很多财务系统,特别是那些需要和Web端深度集成的,最终发票数据都要在浏览器里展示,或者通过浏览器打印。你想想,如果用后端直接生成PDF,一旦发票样式有调整,或者客户有个性化需求,你就得重新改代码、部署,非常麻烦。而HTML+CSS的方案,把样式和结构完全交给了前端,后端只需要提供干净的JSON数据。前端工程师可以像做普通网页一样,用熟悉的工具调试布局、颜色和字体,所见即所得。改个边框颜色?调个字体大小?分分钟搞定,热更新立刻生效,不用等漫长的编译和部署流程。

更重要的是打印控制。CSS里有一整套专门用于打印的媒体查询规则(@media print),你可以精确控制哪些元素在打印时显示、哪些隐藏,页眉页脚怎么设置,分页符在哪里插入。这对于发票这种对格式要求极其严格的文档来说,简直是量身定做。你不用担心在不同打印机、不同纸张尺寸上格式会乱掉,因为CSS的打印样式表就是干这个的。我实测下来,用这套方案生成的发票,无论是在办公室的激光打印机上,还是在热敏票据打印机上,效果都非常稳定。

最后是数据填充的灵活性。你的发票数据可能是从数据库里查出来的,也可能是通过API接口获取的。用HTML做模板,你可以轻松地使用JavaScript(比如Vue、React的数据绑定)或者服务端模板引擎(如Jinja2、Thymeleaf)把数据动态填进去。今天要生成普通发票,明天要生成增值税专用发票,你只需要切换不同的CSS样式和微调HTML结构,核心的数据处理逻辑完全不用动。这种解耦带来的开发效率提升,在长期维护中感受会特别明显。

2. 开工前必须搞清楚的税务规范要点

在动手写第一行代码之前,咱们得先把“规矩”搞清楚。电子发票不是你想设计成什么样就什么样的,它有国家统一的样式规范。如果格式不对,轻则被财务软件拒收,重则可能影响报销和税务认证。我刚开始做的时候,就因为几个细节没注意,被财务同事打回来重做了好几次。

首先,发票的构成要素一个都不能少。 无论是普通发票还是增值税发票,以下这些核心信息区块是必须存在的:

  • 发票抬头:必须明确包含“增值税普通发票”或“增值税专用发票”字样。
  • 发票代码和号码:这是发票的唯一标识,通常有固定的位数和格式。
  • 开票日期:格式一般为“YYYY年MM月DD日”。
  • 购买方和销售方信息:包括名称、纳税人识别号(或统一社会信用代码)。对于增值税专用发票,地址、电话、开户行及账号也是必填项。
  • 货物或应税劳务明细:这是表格部分,需要列明项目名称、规格型号、单位、数量、单价、金额、税率和税额。表格的标题栏文字也有固定说法。
  • 价税合计:必须同时有中文大写金额和阿拉伯数字小写金额,大写金额前通常有特殊符号(如“ⓧ”或“⊗”)表示封顶。
  • 开票人、收款人、复核人:至少“开票人”是必有的。
  • 备注栏:用于填写一些附加信息。

其次,样式上的“潜规则”要遵守。 这些虽然规范文件里不一定逐条写明,但却是业内通行且税务系统认可的做法:

  • 颜色:通常使用深红色(类似 #902020)作为标题、关键标签和表格边框的颜色,黑色用于具体内容数据。这种配色方案清晰、正式。
  • 字体:中文部分,标题常用宋体、黑体或楷体,以求清晰庄重;表格内数据和金额,为了对齐美观,经常使用等宽字体,如 Courier New。人民币符号“¥”也有专门的字体来确保显示一致。
  • 布局与对齐:金额相关的数字列(数量、单价、金额、税额)必须右对齐,这是财务表格的基本要求,方便快速核对位数。文本列(如项目名称)一般左对齐,单位、税率等居中。
  • 边框与线条:发票主体通常有一个外边框,内部的购买/销售方信息区、商品明细表格、价税合计区之间,会用线条进行视觉分隔,线条颜色与外边框一致。

把这些规范刻在脑子里,或者打印出来贴在显示器旁边,能帮你省下大量返工的时间。接下来,我们就基于这些规范,从零开始搭建。

3. 搭建普通发票模板的骨架与核心样式

好了,理论知识准备完毕,我们打开代码编辑器,开始实战。我们先从结构相对简单的增值税普通发票入手。我会把原始文章里的代码掰开揉碎了讲,并补充很多它没提到的细节和原理。

3.1 初始化与全局样式设定

第一步,创建一个标准的HTML5文档结构。这里有个关键点:为了获得精确的打印效果,我们通常会把发票的宽度固定下来。国内常见的发票打印纸宽度是210mm(A4纸宽度),对应到CSS像素大约是794px(因为打印分辨率PPI不同,这个值可能需要微调)。所以,我们直接给最外层的容器设定一个固定宽度。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>电子发票(普通发票)模板</title>
    <style>
        /* 全局重置 - 避免浏览器默认样式干扰 */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box; /* 这个非常重要!让元素的宽度包含padding和border */
        }
        ul, li {
            list-style: none;
        }
        body {
            font-family: "SimSun", "STSong", "宋体", serif; /* 优先使用宋体 */
            font-size: 12px; /* 基础字体大小,大部分内容基于此 */
            color: #000;
            background-color: #fff;
            display: flex;
            justify-content: center; /* 让发票在页面居中 */
            padding: 20px 0;
        }

        /* 发票主容器 */
        .invoice-container {
            width: 794px; /* 对应210mm */
            min-height: 1123px; /* 对应A4纸高度,预留空间 */
            border: 1px solid #000; /* 最外层的黑色边框 */
            padding: 20px; /* 内边距,让内容不贴边 */
            position: relative;
        }
    </style>
</head>
<body>
    <div class="invoice-container">
        <!-- 发票内容将在这里填充 -->
    </div>
</body>
</html>

注意看,我特意把 lang 属性改成了 zh-CN,这有助于浏览器和辅助设备更好地识别中文内容。box-sizing: border-box; 是布局的神器,它让元素设置的 width 就包含了它的边框和内边距,你再也不用去心算 width + padding + border 到底是多少了,布局会非常可控。

3.2 构建发票头部:标题、二维码与票号

发票头部通常分为左、中、右三栏。左边放二维码和发票类型标签,中间是醒目的发票标题,右边是发票号码和开票日期。

<style>
    .invoice-header {
        display: flex;
        justify-content: space-between;
        align-items: flex-start;
        margin-bottom: 25px; /* 与下方内容拉开距离 */
    }

    /* 左侧区域 */
    .header-left {
        display: flex;
        align-items: flex-start;
        width: 220px;
    }
    .qrcode-placeholder {
        width: 75px;
        height: 75px;
        border: 1px dashed #ccc; /* 开发时用虚线框表示占位,实际替换为img标签 */
        margin-right: 10px;
        background-color: #f9f9f9;
    }
    .invoice-tag {
        width: 105px;
        height: 75px;
        border: 1px solid #902020; /* 使用标准的发票红 */
        color: #902020;
        display: flex;
        align-items: center;
        justify-content: center;
        text-align: center;
        font-size: 14px;
        line-height: 1.4;
        padding: 5px;
    }

    /* 中间标题区域 */
    .header-center {
        text-align: center;
        flex-grow: 1;
    }
    .invoice-title {
        font-size: 26px;
        font-weight: bold;
        color: #902020;
        margin-bottom: 8px;
        letter-spacing: 2
使用HTML+CSS打造专业电子发票模板:普通发票与增值税发票实战 本文详细介绍了如何使用HTML和CSS从零开始构建专业、规范的电子发票模板,涵盖增值税普通发票与专用发票的实战开发。通过精确的样式控制与灵活的布局设计,确保模板符合税务规范,并支持动态数据填充与高质量打印输出,为前端开发者提供了完整的电子发票解决方案。 阅读详情

相关推荐

普通发票(增值税专用发票)html+css

因业务需要,将发票样式呈现出来。直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"&

weixin_44110923的博客 8476

HTML、CSS代码实现的发票样式的模板

HTML、CSS代码实现的发票样式的模板

普通发票 html css写的

普通发票模板 html css写的,曾经下过博客中的一个发票模板发现打开里面的代码太多了,太重复了,所以自己初步写了一个简洁的

增值税普通发票源码

增值税普通发票,是将除商业零售以外的增值税一般纳税人纳入增值税防伪税控系统开具和管理,也就是说一般纳税人可以使用同一套增值税防伪税控系统开具增值税专用发票、增值税普通发票等,俗称“一机多票”。

高校技术转移办公室人员如何高效完成技术成果评价与推介?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

【Blazor开发】Radzen 6.0.0升级避坑指南:.NET组件库迁移中的API变更与样式兼容性问题解析

内容概要:本文出自《.NET 生产环境避坑手册》,作者结合SPcbERP项目实战经验,总结了将Radzen.Blazor从5.x升级到6.0.0过程中遇到的四大典型问题。文章详细解析了NU1107依赖版本冲突、DataGrid服务端分页中Count未赋值导致分页异常、DialogService弹窗因泛型推断和默认尺寸变更引发显示问题,以及因CSS类名变更导致自定义样式失效等“踩坑”经历,并提供具体解决方案与预防建议。最后给出完整的升级避坑清单,强调升级组件库需谨慎对待依赖、默认行为和视觉回归测试。; 适合人群:使用Radzen或Blazor进行企业级开发,尤其是正在进行UI组件库升级的.NET开发者;具备一定前端开发经验的中高级研发人员;负责生产环境稳定性的技术负责人。; 使用场景及目标:①指导开发者安全完成Radzen等第三方组件库的版本升级;②避免因依赖冲突、API行为变更或样式失效引发线上问题;③提升对组件库升级风险的认知,建立系统性验证流程。; 阅读建议:此资源以真实项目升级为背景,具有极强的实战参考价值。建议在进行类似升级前精读,并结合文中避坑清单逐项检查。重点关注不报错但行为改变的“软错误”,务必进行完整的功能与视觉回归测试。

三相并网逆变器预测电流控制simulink仿真模型

内容概要:本文介绍了一个关于三相并网逆变器预测电流控制的Simulink仿真模型,重点实现了基于预测控制策略的电流环设计,以提升并网电能质量与动态响应性能。该模型涵盖了逆变器主电路、空间矢量脉宽调制(SVPWM)、锁相环(PLL)、坐标变换(如abc/dq0)以及电流预测控制算法等核心模块,能够有效实现对并网电流的精确跟踪与谐波抑制。仿真模型可应用于弱电网条件下的稳定性分析、电流控制策略优化及新型控制算法验证,部分资源附带参考文献与设计文档,便于科研复现与深入研究。; 适合人群:电力电子、电气工程及其自动化等相关专业的高校研究生、科研人员及从事新能源并网技术开发的工程师。; 使用场景及目标:①用于研究三相并网逆变器在不同电网条件下的电流控制性能;②验证模型预测控制(MPC)在电流环中的应用效果;③支撑科研论文的仿真实验部分,辅助完成控制算法的设计与对比分析; 阅读建议:建议结合相关电力电子与电机控制理论基础,按照资源目录顺序逐步学习,重点关注控制算法与仿真模型的对应关系,并利用提供的参考文献深化理解,提升科研效率与创新能力。

三相Z源逆变器四种升压控制、三次谐波最大升压控制LCL滤波【附参考资料】

内容概要:本文系统研究了三相Z源逆变器的升压控制技术,重点分析并实现了四种常规升压控制方法与基于三次谐波注入的最大升压控制策略,结合LCL滤波器进行系统优化设计,有效提升了电压增益与输出波形质量。通过Simulink搭建完整的仿真模型,对不同控制策略在动态响应、稳态精度及系统稳定性方面的性能进行了对比验证,提供了详实的参考资料以支持理论推导与仿真复现。研究成果对于提升可再生能源系统中逆变器的电压转换能力与运行可靠性具有重要应用价值。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源发电系统开发的工程技术人员。; 使用场景及目标:①深入理解Z源逆变器的独特升压机制及其与传统逆变器的区别;②掌握多种升压控制策略的设计原理与仿真实现方法;③应用于光伏、风电等需要高升压比和高质量并网性能的电力变换系统中,优化系统整体效率与稳定性。; 阅读建议:建议结合文中的仿真模型与参考文献,动手实践Simulink建模与参数调试,重点关注控制策略对升压效果、谐波抑制及滤波器动态特性的影响,从而深化对Z源逆变器控制机理的理解,并推动其在实际工程中的应用转化。

高校技术转移办公室人员在推进成果对接时,如何提升匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

产业园区运营负责人如何高效对接企业技术需求与科研资源?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

基于下垂控制的构网型逆变器功率环并网控制Matlab仿真【附参考文献】

内容概要:本文系统阐述了基于下垂控制的构网型逆变器功率环并网控制策略的Matlab/Simulink仿真研究,深入剖析了构网型逆变器在微电网中的核心作用,重点在于通过下垂控制实现对有功功率/频率、无功功率/电压的自主调节,确保系统在并网与孤岛模式间的无缝切换与稳定运行。文章详细介绍了下垂控制的理论基础、控制环路设计、关键参数整定方法,并构建了完整的多场景仿真模型,涵盖了负载突变、多机并联、功率动态响应等工况,全面验证了控制策略的有效性、鲁棒性及良好的功率均分能力,同时附有详尽的参考文献以供理论溯源与深入探究。; 适合人群:电力电子、电气工程、自动化等相关专业的高校研究生、科研人员及从事新能源并网、微电网控制系统开发的工程技术人员。; 使用场景及目标:①用于教学与科研中深入理解构网型逆变器的自主运行机理与下垂控制的实现细节;②为微电网工程中逆变器并网控制系统的方案设计与参数优化提供直接的技术参考;③支撑新能源发电系统(如光伏、风电)配套储能的频率支撑与电压调节功能开发;④作为学术研究的基础,用于复现经典控制算法或在此之上进行自适应下垂、虚拟阻抗等先进控制策略的创新与验证。; 阅读建议:建议读者结合所提供的Matlab仿真模型进行实操,通过修改参数、设置不同扰动工况来观察系统动态响应,从而将理论分析与仿真结果紧密结合,深化理解;同时应仔细研读所附参考文献,以拓宽对下垂控制在复杂微网环境(如弱电网、非线性负载)下应用挑战与前沿解决方案的认知,鼓励在此仿真平台上进行二次开发,探索如基于人工智能的参数自整定等优化路径以进一步提升系统性能。

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 4995

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8010

洛谷 P5736 【深基7.例2】质数筛

题目描述 输入 n(n\le100)n(n≤100) 个不大于 100000 的整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。 输入格式 无 输出格式 无 输入输出样例 输入 #1 复制 5 3 4 5 6 7 输出 #1 复制 3 5 7 板子题,使用一下线性筛 #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using n

qq_37978559的博客 1115

No Target Connected 错误时的一种情况

STM32的SWD烧录模式No Target Connected 错误的一种情况 STM32的SWD烧录模式No Target Connected 错误时的一种处理情况 这是我第一次烧板子的时候遇到的问题,在给板子download的时候出现了“No Target Connected”的错误,这里讲一种解决方法。不一定适用于全部状况,但是可以作为一种纠错方法。 打开 Options for Target… 1.首先点击Options for Target…这个像魔棒一样的按键打开,会出现这个页面 2.点击

Logan_CodeGou的博客 1万+

【HAL库】STM32CubeMX开发----STM32F407----ETH+LAN8720A+LWIP----ping通

本次实验以芯片为MCU,使用25MHz外部时钟源。以太网PHY层芯片为LAN8720A,由MCU引脚PA8提供时钟。

MQ0522的博客 4835

材料仿真软件:Materials Studio_(14).电学性质计算

设置计算参数,包括 k 点网格、交换相关泛函等。

kkchenjj的博客 1854

一篇文章带你认识 SpringBoot

文章目录一、原有 Spring 优缺点分析二、SpringBoot 的概述 一、原有 Spring 优缺点分析 (1)Spring 的优点分析 Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的 Java 对象(Plain Old Java Object,POJO)实现了EJB的功能。

南淮北安的博客 761

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 343

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 【PromptCoder + Trae】五分钟打造个性化电商首页
下一篇: 【ucharts】uniapp实战:如何通过秋云 ucharts echarts实现跨全端数据可视化
康贱猫
博客等级 码龄10年 28粉丝 1939原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值