【教学类-35-21】20240901 中2班描字帖(学号+姓名、虚拟姓名、杨任东竹石体 Regular)

背景需求:

8月底通知我成为中2班的班主任,为了快速识别幼儿的脸、姓名、学号,再次制作描字帖,并拍照。

最近做的一份字帖是中4班描字帖

【教学类-35-20】20240328 中4班描字帖(学号+姓名 A4竖版2份 横面)+裁剪纸条+插入式纸盒-CSDN博客文章浏览阅读643次,点赞16次,收藏7次。【教学类-35-20】20240328 中4班描字帖(学号+姓名 A4竖版2份 横面)+裁剪纸条+插入式纸盒https://blog.csdn.net/reasonsummer/article/details/137117098?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137117098%22%2C%22source%22%3A%22reasonsummer%22%7D

考虑带中4班时,他们已经是下学期了,所以描汉字,现在是中2班孩子是上学期,所以我就只让他们描学号数字

微软雅黑的“1”有一个弯钩(其他数字都符合书写标准),所以这次我想换掉常用的加粗字体“微软雅黑”,选择“杨任东竹石体 Regular”

【教学类-44-11】20240324 杨任东竹石体 Regular(实线字体)制作的数字描字帖(AI对话大师缩略版)-CSDN博客文章浏览阅读1k次,点赞37次,收藏20次。【教学类-44-11】20240324 杨任东竹石体 Regular(实线字体)制作的数字描字帖(AI对话大师缩略版)https://blog.csdn.net/reasonsummer/article/details/137022370?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22%3A%22137022370%22%2C%22source%22%3A%22reasonsummer%22%7D

“杨任东竹石体 Regular”的1符合书写习惯,但是9的斜线弯曲,应该是直线

素材模版

第一步:修改WORd模板

把最上面的学号姓名格子变成隐藏框线

第二步 制作学生名单

为了保护隐私,我用星火讯飞,随机生成29个名字(班里只有2-3个字的名字,就不考虑4个字名字)

'''
随机生成汉字姓名2-3个字
星火讯飞 阿夏
20240901
'''import random# 姓氏列表
surnames = ['赵', '钱', '孙', '李', '周', '吴', '郑', '王', '冯', '陈', '褚', '卫', '蒋', '沈', '韩', '杨', '朱', '秦', '尤', '许']
# 名字列表
names = ['大伟', '芳', '娜', '敏静', '秀英', '丽', '国强', '磊', '洋', '艳', '大勇', '建军', '人杰', '娟', '涛', '超', '明', '霞', '国平', '英刚', '桂英', '志明', '建国', '建华', '春梅']# 生成名字函数
def generate_name():name = ''# 随机选择姓氏和名字长度length = random.choice([2, 3])if length == 2:name += random.choice(surnames) + random.choice(names)else:name += random.choice(surnames) + random.choice(names) return name# 生成29个名字
names = [generate_name() for _ in range(29)]
print(names)# ['褚静', '蒋霞娜', '秦伟', '钱建国娟', '王强娟', '周娜娟', '卫丽强', '蒋志明', '褚娟静', '郑军静', '钱涛刚', '卫明', '韩艳军', '杨艳', '尤建国磊', '尤伟', '李芳', '褚敏', '李军', '沈涛静', '褚伟志明', '韩超', '周丽勇', '卫建华敏', '郑春梅涛', '许伟', '许桂英洋', '褚刚', '陈建华']
# ['杨丽', '赵伟娟', '赵勇平', '王静', '蒋静芳', '赵超', '孙志明', '许强', '尤明秀英', '韩刚春梅', '许强', '沈桂英伟', '许娜芳', '沈娟', '吴洋桂英', '王涛', '王丽', '秦刚', '冯明建华', '褚建国', '杨娜强', '郑丽杰', '韩秀英芳', '卫艳', '蒋敏秀英', '周静娟', '尤桂英', '褚明', '蒋平']for n in names:print(n)

每次生成的名字都不同。

我用了这一套29个名字,复制到EXCLE学生给名单里

(因为只有29个学生,是单数,本代码必须是双数才能复制,因此将29号复制了一次)

代码展示


'''
20240901中2班描字帖
作者:阿夏
时间:2024年9月1日
学号和姓名分开
'''import xlwt
import xlrd
import os
import random
from win32com.client import constants,gencache
from win32com.client.gencache import EnsureDispatch
from win32com.client import constants # 导入枚举常数模块
import os,time
import docx
from docx import Document
from docx.shared import Pt 
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn# hs=int(input('一行2个,需要几行(1行,还有6行是表格)\n'))print('----------第1步:新建一个临时文件夹------------')# 新建一个”装N份word和PDF“的临时文件夹
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖'
new_path=path+r'\20240901中2班学号描字帖'wb= xlrd.open_workbook(new_path+r"\学生名单.xlsx") #打开文件并返回一个工作蒲对象。open_workbook可以点进去看看函数里面的参数的含义之类的,很详细,英语不好的可以百度翻译,翻译出来的结果差不多。
sheet=wb.sheet_by_index(0)   #通过索引的方式获取到某一个sheet,现在是获取的第一个sheet页,也可以通过sheet的名称进行获取,sheet_by_name('sheet名称')col1=sheet.col_values(0)# 学号col2=sheet.col_values(1)# 名字
# col3=sheet.col_values(2)# 班级
num=len(col1)-1  # 第一列去掉第一行numberall=[]
# 生成 基本组:“学号+名字“
for num in range(1,len(col1)):for x0 in range(1):name00=str(int(col1[num])) +str(col2[num])     #学号和名字拼在一起, 1 张三numberall.append(name00)for x1 in range(16):number1=int(col1[num])numberall.append(number1)        # 只要学号for x2 in range(8):b=' 'numberall.append(b)  # 学号留两个空print(numberall)
# 一个数组【】gz=25
# 切开25人 一人16个数字
list1=[]
for fk in range(int(len(numberall)/gz)):    # 一共26格子list1.append(numberall[fk*gz:fk*gz+gz])
print(list1)
print(len(list1))lists=[]
for r in range(int(len(list1)/2)):lists.append(list1[r*2:r*2+2])
print(lists)
print(len(lists))# # 25个数组【】bg=[]
# 第一行的格子
a=['0000']
for z1 in a:bg.append(z1)
# 第2-3行学号的格子16格子
for x in range(1,4):for y in range(0,8):z2='{}{}'.format('%02d'%x,'%02d'%y)bg.append(z2)print(bg)
print(len(bg))
# # ['0000', '0004', '0100', '0101', '0102', '0103', '0104', '0105', '0106', '0107', '0200', '0201', '0202', '0203', '0204', '0205', '0206', '0207', '0300', '0302', '0304', '0306', '0400', '0402', '0404', '0406']T=[120,45]
F=['微软雅黑','杨任东竹石体-Regular']
for f in F:target_path=path+r'\零时Word'if not os.path.exists(target_path):  # 判断存放图片的文件夹是否存在os.makedirs(target_path)  # 若图片文件夹不存在就创建for n in range(int(num/2)):doc = docx.Document(new_path+r"\中2班描字帖.docx")for b in range(2):table = doc.tables[b] # print(p)for t in range(len(bg)):    # 0-gz# print(list[t])pp=int(bg[t][0:2])     # 提取表格bg里面每个元素的第0个数字==单元格X坐标  t=索引数字qq=int(bg[t][2:4]) k=lists[n][b][t]# f=font[t]   print(pp,qq,k)if pp==0 and qq==0:run=table.cell(pp,qq).paragraphs[0].add_run(str(k))    # 在单元格0,0(第1行第1列)输入第0个名字run.font.size = Pt(T[0])  #输入字体大小80或68号run.font.name = f  #输入时不字体# run.bold=Truerun.font.color.rgb = RGBColor(220,220,220) #设置颜色10%黑色=深灰r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'), f )#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中else:run=table.cell(pp,qq).paragraphs[0].add_run(str(k))    # 在单元格0,0(第1行第1列)输入第0个名字run.font.size = Pt(T[1])  #输入字体大小80或68号run.font.name = f  #输入时不字体# run.bold=Truerun.font.color.rgb = RGBColor(200,200,200) #设置颜色10%黑色=深灰r = run._elementr.rPr.rFonts.set(qn('w:eastAsia'),f )#将输入语句中的中文部分字体变为华文行楷table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx'.format('%02d'%n))#保存为XX学号的零时word  time.sleep(1)from docx2pdf import convert# docx 文件另存为PDF文件inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.docx".format('%02d'%n)# 要转换的文件:已存在outputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\描字帖\零时Word\{}.pdf".format('%02d'%n)  # 要生成的文件:不存在# 先创建 不存在的 文件f1 = open(outputFile,'w')f1.close()# 再转换往PDF中写入内容convert(inputFile, outputFile)time.sleep(1)from docx2pdf import convertprint('----------第4步:把都有PDF合并为一个打印用PDF------------')import osfrom PyPDF2 import PdfMergerpdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]pdf_lst.sort()file_merger = PdfMerger()for pdf in pdf_lst:print(pdf)file_merger.append(pdf)# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/描字帖/(打印合集)大班A整页描字帖2乘5加表格-4名字-({}人).pdf".format(num))file_merger.write(path+fr"\(打印合集)中2班描字帖练习册({num}份{f}).pdf")file_merger.close()# doc.Close()# # print('----------第5步:删除临时文件夹------------')    import shutilshutil.rmtree(target_path) #递归删除文件夹,即:删除非空文件夹`

生成时间很长……

重点说明:

1、本次描字帖的名字字号很大,学号字号较小

2、为了能够挑选,我做了两套字体——微软雅黑和杨任东竹石体

生成文件

效果展示

1、微软雅黑字帖


必须双数

2、杨任东竹石体字帖

字体样式比较分析

1.杨任东字体更好看,符合书写的样式,但是它显示出来的字体大小始终比同样字号的微软雅黑小。

2.不过我之前都是用微软雅黑或黑体,都是加粗字体,本次就想试试杨仁东字体这种线条细腻的字体,看看幼儿描写的效果。

结论:还是打印“杨任东竹石体”的描字帖

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:单向链表

目录 结构体 创建链表 插入链表 头插法 尾插法 遍历打印 更新链表指定节点 查找链表指定节点 删除链表指定节点 销毁链表 找到元素中间位置 找到链表倒数第k个节点 链表元素倒置 链表元素排序 冒泡排序 选择排序 链表 1.空间可以不连续,访问元素不…

Stable Diffusion之提示词指南(三)

在上一篇的文章中,我们讲解了Stable Diffusion提示词的高级用法,对于一些高级属性有了了解。如果有不记得的,可以再去看看———Stable Diffusion之提示词指南(二)。今天我们讲解一下负提示词。 负提示词 负向提示词:简单说就是…

计算机网络803-(3)数据链路层

目录 一.数据链路两种类型 二.使用点对点信道的数据链路层 1. 数据链路和帧 2.数据链路层传送的是帧 三.三个基本问题 1.封装成帧 2.透明传输 ①字节填充法 ②其他方法:字符计数法,比特填充法,违规编码 3. 差错检测 (1…

成为一名月薪 2 万的 web 安全工程师需要掌握哪些技能?

现在 web 安全工程师比较火,岗位比较稀缺,现在除了一些大公司对学历要求严格,其余公司看中的大部分是能力。 有个亲戚的儿子已经工作 2 年了……当初也是因为其他的行业要求比较高,所以才选择的 web 安全方向。 资料免费分享给你…

【在Linux世界中追寻伟大的One Piece】传输层协议UDP

目录 1 -> 传输层 2 -> 端口号 2.1 -> 端口号范围划分 2.2 -> 知名端口号 3 -> UDP协议 3.1 -> UDP协议端格式 3.2 -> UDP的特点 3.2.1 -> 面向数据报 3.3 -> UDP的缓冲区 3.4 -> UDP使用注意事项 3.5 -> 基于UDP的应用层协议 1 -…

【进程间通信】管道应用场景---简易进程池

#include<iostream> #include<vector> #include<string> #include<cstring> #include<cstdlib> #include<unistd.h> #include<sys/stat.h> #include<sys/wait.h>//把5个子进程要管理起来&#xff0c;要先描述再组织 const int…

【C++】list的使用和list的模拟实现和迭代器失效问题

目录 一、list 的简单介绍 二、list 的基本使用 &#x1f389;list的构造 &#x1f389;list iterator 的使用 &#x1f389;list capacity &#x1f389;list element access &#x1f389;list modifiers &#x1f389;list operator 三、list 的模拟实现 &#x…

Unity TreeView扩展

实现效果 这里原来是做的一个检测网络、事件回调耗时的工具。简单改了成了一个演示TreeView的demo。实现了TreeView的基本功能并且实现了对列的排序。TreeView还可以制作点击&#xff0c;双击&#xff0c;右键等事件&#xff0c;但这里暂时不需要用到。 思维导图 工程&#xf…

华为云征文|部署内容管理系统 Joomla

华为云征文&#xff5c;部署内容管理系统 Joomla 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 核心竞争力 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Joomla3.1 Joomla 介绍3.2 Docker 环境搭建3.3 Joomla 部署3.4 Joom…

【MCAL】TC397+EB-tresos之SPI配置实战 - (同步/异步)

本篇文章首先从理论讲起&#xff0c;从AUTOSAR规范以及MCAL手册两个不同角度&#xff08;前者偏理论&#xff0c;后者偏实践&#xff09;介绍了SPI模块的背景概念与理论&#xff0c;帮助读者在实际配置之前能有个理论的框架。然后详细的介绍了在TC397平台使用EB tresos对SPI驱动…

简化理解:Tomcat 和 Servlet 规范

有时候&#xff0c;我们会把复杂的技术概念弄得很复杂&#xff0c;其实这些东西可以用更简单的语言来理解。我们来看看 Tomcat 和 Servlet 规范到底是怎么回事。 1. 什么是 Servlet 规范&#xff1f; 简单来说&#xff0c;Sun 公司&#xff08;现在是 Oracle&#xff09;定了…

Axure RP下载+详细安装步骤资源百度云盘分享

众所周知&#xff0c;Axure全称“axure rp”&#xff0c;是一款专业的快速原型设计工具。 它能帮助网站需求设计者&#xff0c;快捷而简便的创建基于网站构架图的带注释页面示意图、操作流程图、以及交互设计&#xff0c;并可自动生成用于演示的网页文件和规格文件&#xff0c…

单片机内存区域划分

目录 一、C 语言内存分区1、栈区2、堆区3、全局区&#xff08;静态区&#xff09;4、常量区5、代码区6、总结 二、单片机存储分配1、存储器1.1 RAM1.2 ROM1.3 Flash Memory1.4 不同数据的存放位置 2、程序占用内存大小 一、C 语言内存分区 C 语言在内存中一共分为如下几个区域…

AR 眼镜之-系统通知定制(通知弹窗)-实现方案

目录 &#x1f4c2; 前言 AR 眼镜系统版本 系统通知定制 1. &#x1f531; 技术方案 1.1 技术方案概述 1.2 实现方案 1&#xff09;实现系统通知的监听 2&#xff09;系统通知显示&#xff1a;通知弹窗 2. &#x1f4a0; 实现系统通知的监听 2.1 继承 NotificationLi…

【原型设计工具评测】Axure、Figma、Sketch三强争霸

在当今的数字化设计领域&#xff0c;选择合适的原型设计工具对于项目的成功至关重要。Axure、Figma 和 Sketch 是目前市场上最受欢迎的三款原型设计工具&#xff0c;它们各具特色&#xff0c;满足了不同用户的需求。本文将对这三款工具进行详细的对比评测&#xff0c;帮助设计师…

联蔚盘云亮相CDIE消费品行业峰会

8月28日&#xff0c;由华昂集团主办&#xff0c;专注于消费品行业的2024CDIE行业峰会在广州盛大开幕。联蔚数科携子品牌联蔚盘云亮相本次大会。本次峰会汇聚了众多企业高管&#xff0c;行业领域专家&#xff0c;围绕AI技术前沿、数智营销新策略、会员运营以及品牌增量路径等话题…

后台框架-统一异常管理

搭建后台框架全局异常管理是一个很重要的部分&#xff0c;好在SpringBoot提供了很好的处理方法 使用ControllerAdvice ControllerAdvice是Spring MVC中的一个全局异常处理注解&#xff0c;它允许在一个地方集中处理所有控制器抛出的异常。通过使用ControllerAdvice&#xff0…

Leetcode199二叉树的右视图(java实现)

今天我们分享的题目是199题&#xff0c;题目描述如下&#xff1a; 那么本道题的解题思路呢就是使用层序遍历&#xff0c;每次将每层中的最后一个元素加入到我们的集合中。 本道题目和之前的层序遍历二叉树的题目很像&#xff0c;但是需要注意的细节。那么我会在代码中指出。 代…

Flink CDC读取Mysql时,Decimal类型数据异常,变成了字符串(源码解析及解决方案)

1. 问题说明 使用Flink CDC 读取mysql数据时,当表字段为decimal时,读取的数据变成了字符串。 如下示例: 环境: Flink 1.18.0 Flink CDC 3.1.1 mysql 8 mysql的数据如下: 使用Flink CDC读取后的数据如下: 为了方便看,复制出来就是: {“id”:1,“price”:“AZA=”,…

ClickHousez中如何定时清理过期数据库?

一、脚本清理 要在ClickHouse中自动删除过期的数据库&#xff0c;你可以使用ClickHouse的SQL命令结合外部脚本&#xff08;如Shell脚本&#xff09;和计划任务&#xff08;如cron&#xff09;来实现。下面是一个示例&#xff0c;展示如何创建一个Shell脚本来检查数据库的创建时…