24 边框与圆角单边边框、多值圆角与布局影响引入审批单需要左侧风险色条证书需要完整外框卡片型摘要需要圆角。统一写一个border无法表达这些差异而边框会直接影响内容可用宽度与分页。jquick-pdf 的样式模型已给出完整边框、四个单边边框和圆角属性本文以一个订单审核卡片为例说明组合方式。环境与依赖见第 21 篇。核心讲解边框的写法边框值是三段式字符串“类型 宽度 颜色”例如solid 1px #999类型用solid宽度带单位px、pt、mm、cm、in颜色用颜色名或#RRGGBB。border完整四边边框如border:solid 2px #334155。borderTop、borderRight、borderBottom、borderLeft单边边框语法与border相同如borderLeft:solid 8px #16a34a。只写单边时其余三边不会自动继承或补齐不写就是没有。这与“完整边框加局部覆盖”的直觉不同需要按期望结果显式列出。圆角的写法borderRadius圆角半径支持 1~4 个值按外扩/收缩规则依次对应四个角如borderRadius:32px 24px。borderTopLeftRadius、borderTopRightRadius、borderBottomRightRadius、borderBottomLeftRadius单独指定某个角的半径。四角一致时用单值需要上圆下直这类造型时用多值或四角属性。多值的角映射规则不直观时直接用四个borderXxxRadius属性把每个角写清楚比猜多值顺序更省事。边框与底色的组合边框颜色要和背景色一起看浅底配深边框如#f8fafc配#334155层次清晰深底配浅边框则要同时复核文字对比度。边框、底色、圆角三者共同决定卡片的观感改动其中一项都要回归另外两项。完整示例importcom.github.paohaijiao.executor.JQuickPdfFactory;importjava.nio.file.Files;importjava.nio.file.Paths;publicclassBorderDemo{publicstaticvoidmain(String[]args)throwsException{Stringtemplatepdfbody// 卡片外层完整边框 圆角div style\width:420px;padding:18px;backgroundColor:#f8fafc;border:solid 2px #334155;borderRadius:12px 12px\h1订单审核/h1// 状态行仅左边框充当状态色条用 padding 与色条隔开div style\borderLeft:solid 8px #16a34a;paddingLeft:12px\审核通过/div// 金额行仅下边框充当分隔线div style\borderBottom:solid 1px #cbd5e1;marginTop:12px\订单金额12800元/div/div/body/pdf;byte[]pdfnewJQuickPdfFactory().executeContent(template);Files.write(Paths.get(border-report.pdf),pdf);}}效果关键细节内边距决定视觉层次边框与文字之间靠padding留白borderLeft之类的属性只画线不负责间距。左侧色条若不配paddingLeft文字会紧贴色条卡片外层若不配padding内容会压在边框内侧。内边距同时向内容可用宽度收费width、两侧padding与边框宽度共同决定内容的实际可用空间。边框对内容宽度的影响边框是布局的一部分。四边边框从盒子内侧挤压内容paddingLeft会继续压缩文本行宽。宽度余量不足时文本提前换行行数增加进而影响分页位置。边框厚度建议从 1–2px 起步左侧色条这类装饰性边框可到 6–8px但要同步复核文字宽度。圆角与裁切圆角半径接近或超过盒子尺寸的一半时可能产生意外裁切或形变半径等于一半会趋近胶囊造型是否按预期渲染要看阅读器实现。内层元素的直角也可能露出圆角区域之外。圆角效果需要在目标阅读器查看不同阅读器对圆角的渲染存在差异。属性命名与引号包裹驼峰与连字符属性名互为别名例如borderRadius与border-radius示例项目里两种写法都出现过。边框值是含空格的三段式字符串写进 style 时必须用引号包裹如border:solid 2px #334155否则会被当成多个属性截断。同一文件内保持一种命名风格便于排查。边框与相邻元素的间距单边边框画在盒子的边界上。相邻块之间若没有margin上方块的borderBottom会紧贴下方块的文字分隔线显得拥挤用marginTop/marginBottom留出间距分隔线才会落在视觉上合适的位置。边距与边框一样会占用纵向空间累积后会影响分页。分页与表格边界圆角是单盒属性不会自动延续到下一页跨页或被表格拆分的带边框元素边框可能在页边界处被截断。表格单元格与分页边界处的圆角要单独测试带边框圆角的元素若被强行分页视觉上会出现断口。实战说明步骤外层使用完整border和borderRadius建立卡片轮廓。状态行只配置borderLeft用颜色承担状态语义。金额行只配置borderBottom作为分隔线。用padding把文字与边线隔开用margin控制块之间距离。执行executeContent写出 PDF。验证与结果预期卡片四边边框是否完整圆角是否生效。左侧色条与文字之间是否有间距文字贴线说明paddingLeft缺失。底部分隔线是否只出现在金额行其余边是否如预期没有边框。内容是否因边框和内边距变窄而提前换行。换用 A4、Letter 两种尺寸检查分页处的边框与圆角是否断裂。在目标阅读器确认圆角是否按预期渲染、内层元素的直角是否外露。结果预期页面出现一个浅色圆角审核卡片绿色左侧状态条与底部分隔线互不干扰文字与边线之间留有间距边框与圆角的具体观感再按目标阅读器确认。异常排查边框不显示核对值是否为“类型 宽度 颜色”三段式颜色或宽度是否缺失含空格的值是否被引号包裹。只有一边有边框确认是否只写了单边属性其余边需要时显式补上。圆角无效果或被裁切检查半径是否过大、盒子是否够大。文字换行异常检查padding与border是否吃掉了宽度。边框的业务语义同样的边框属性承担不同语义使用方式也不同作为分隔线时用borderBottom配 1px 浅色作为状态色条时用borderLeft配 6–8px 深色作为区域外框时用完整border配 1–2px。把这三类写成主题常量而不是散落的字面量模板才容易在换色时保持一致。生产注意事项把边框颜色、线宽和圆角定义为主题常量避免颜色散落在业务代码里用轻量线宽控制文件体积与布局稳定A4、Letter 两种尺寸分别回归。边框属于布局的一部分任何边框变更后都要重新检查分页。适用场景与分页控制审批卡片、发票分区、风险警示和证书外框都适合这套写法。可用backgroundColor、padding与分页控制属性如keepTogether组合出更稳的卡片但这两者都不保证长内容不被拆分——带边框圆角的块一旦跨页视觉上会出现断口仍需按实际内容验证。总结边框分为完整边框border与单边边框borderTop/borderRight/borderBottom/borderLeft值统一为“类型 宽度 颜色”圆角分为borderRadius多值与四个角单独属性。关键细节在于边框与padding共同占用内容宽度、只写单边不会让其余边继承、圆角在接近盒子尺寸时会被裁切、跨页元素的边框可能在页边界断裂。常见误区是用一个border表达所有需求或用大边框、大圆角做装饰却忽略它对可读宽度与分页的连带影响。按“完整边框、状态边框、分隔线”分层使用模板更容易维护。版本基线jquick-pdfx 4.0.0、JDK 8升级前请核对 README_zh.md 的版本对照表更多示例见 GitHub 仓库。
企业数字化 ERP 产品动态
相关推荐
城乡规划论文的底图数据与图层对齐:现场调研数据对不上时的全流程排查指南 底图数据与现场调研数据对不上,在城乡规划论文里通常不是单一错误,而是采集口径、落点规则、图层对齐三个环节中有一处没定清楚。想快速找到问题,先查两套数据各自「从哪里来、按什么规则画」,再回到叠加结果上比对落点。下面按可… · 2026/9/26 19:04:38
TeamAI-CLI实战:构建团队级AI Agent中间层的关键与避坑 1. 先把一个常见的认知误区掰开:LLM、Agent、中间层到底各管哪一段1.1 DeepSeek是模型,不是Agent很多团队在讨论Agent的时候,会把"我们用DeepSeek"和"我们上了Agent"混为一谈。里有个关键概念必须拆清楚。DeepSeek、GPT、… · 2026/9/26 19:04:32
从样条到解析:样条面到二次曲面智能转换算法的技术路径与工程实践 在现代CAD/CAM/CAE系统中,非均匀有理B样条(NURBS)是构建几何模型的行业通用方法。其核心优势在于能够以统一的数学形式表达从自由曲面到精确解析曲面的多种形状,NURBS方法已成为自由曲线曲面形状表示方面事实上的标准,… · 2026/9/26 19:04:32
SpringBoot+Vue火锅文化网站开发实战:从数据库设计到前后端部署 1. 火锅文化网站到底要做什么:功能模块与系统边界 说实话,这个题目乍一看是个"课程设计标准款",但真正动手做的时候你会发现,火锅文化网站和普通的CRUD管理系统完全是两码事。我最初接手这个项目时以为就是"菜品增… · 2026/9/26 20:23:22
SpringBoot+Vue医学电子技术课堂管理系统:源码拆解与实践指南 作为做过好几个前后端分离管理系统的人,我对“基于SpringBootVue的XX管理系统”这类项目太熟悉了。尤其是这次这个医学电子技术课堂管理系统,它不是那种随便糊弄的CRUDdemo,而是把教学管理、在线学习、实验环节都串起来的完整业务闭环。我拿到… · 2026/9/26 20:23:22
ffmpeg.js 浏览器端视频转码实战:原理、避坑与进阶 简介:这是一套专供浏览器端使用的 FFmpeg 封装工具包,基于 ffmpeg.js 实现,开发者无需搭建任何后端服务,就能在网页中直接完成视频转码、格式封装、解复用等常见多媒体处理任务,适合前端工程师或全栈开发者快速集成音视… · 2026/9/26 20:23:22
UE3老游戏画质改造:从引擎配置到Reshade注入的完整方法论 1. 这不是“一键高清”,而是对UE3引擎底层渲染管线的外科手术式干预 你在网上搜到的那些“X战警金刚狼前传画质增强补丁”,十有八九是把几个Reshade预设文件打包扔进游戏目录,再附上一张对比图——左边模糊、右边锐利,标题写着“画… · 2026/9/26 20:23:22
Kubernetes Agent CLI工具ax:基于gRPC的集群智能体调度实践 1. 从"ax"这个标题说起:一个被低估的Kubernetes Agent CLI工具第一次看到"ax"这个标题的时候,我脑子里蹦出来的第一反应是"这名字也太短了"。但结合后面跟着的一串热词——Kubernetes、agent、CLI、gRPC——我大概能猜到&… · 2026/9/26 20:23:22
从Excel到DeskcommCRM:销售团队客户管理落地实践与避坑指南 做业务这行,谁没被客户资料折磨过?微信聊天记录里翻客户地址、Excel表里好几个版本来回发、离职同事带走一摞名片公司根本不知道。我前几年带销售团队的时候,光是一个“客户到底谁在跟进”的问题,就开了不下十次会议。 后来把客户… · 2026/9/26 20:23:15
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46