背景需求:
前文制作了三种字体的A4横版数字描字帖
3份PDF,每份PDF只有一页,文件名上可以看出它用的字体。但是打印起来不方便。
所以我想选5种阿拉伯数字字体,放在一个文件夹里(一个PDF有5张,)直接打印,看看哪一种字体比较适合幼儿做描字帖。
代码设计:
'''
制作一个16行37列的数字描字帖(黑体、宋体、文鼎体、print dashed ,德彪)
作者:AI对话大师,阿夏
时间:2024年3月17日
'''
from docx import Document
from docx import Document
from docx.shared import Pt
# 导入所需的模块
from docx.shared import RGBColor
import os
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# 读取Word文档
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\数字1-10'
fontname=['宋体','黑体','AR StdKaiGDLB5 Md','德彪钢笔行书字库','Print Dashed']
fontcolor=['200','220','0','220','0']
doc = Document(path+r'\1-10数字描字帖.docx')
# 选择第一个表格进行演示
table = doc.tables[0]
# 获取表格的行数和列数
num_rows = len(table.rows)
num_cols = len(table.columns)
print("表格的行数为:", num_rows)
# 16行
print("表格的列数为:", num_cols)
# 37列
bg= []
for x in range(num_rows):
for y in range(num_cols):
bg.append('{}{}'.format('%02d'%x,'%02d'%y))
print(bg)
num=[]
for o in range(2):
for i in range(0,10):
for z in range(num_cols):
num.append(i)
folder_path = path+r"\零时文件夹"
# 检查文件夹是否存在
if not os.path.exists(folder_path):
# 如果文件夹不存在,则新建文件夹
os.makedirs(folder_path)
for ziti in range(len(fontname)):
doc = Document(path+r'\1-10数字描字帖.docx')
for b in range(1):
table = doc.tables[b]
# print(p)
for t in range(len(bg)): # 0-15
# print(list[t])
pp=int(bg[t][0:2]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq=int(bg[t][2:4])
k=int(num[t])
# f=font[t]
# print(pp,qq,k)
run=table.cell(pp,qq).paragraphs[0].add_run(str(k)) # 在单元格0,0(第1行第1列)输入第0个名字
run.font.name =fontname[ziti] #输入时不同字体
run.font.size = Pt(28) #输入字体大小80或68号
# run.bold=True
run.font.color.rgb = RGBColor(int(fontcolor[ziti]),int(fontcolor[ziti]),int(fontcolor[ziti])) #设置颜色黑体
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'),fontname[ziti])#将输入语句中的中文部分字体变为华文行楷
table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
doc.save(folder_path+r'\{}.docx'.format('%02d'%ziti))#保存为XX学号的零时word
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = folder_path+r'\{}.docx'.format('%02d'%ziti)# 要转换的文件:已存在
outputFile = folder_path+r'\{}.pdf'.format('%02d'%ziti) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile,'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
from docx2pdf import convert
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
import os
from PyPDF2 import PdfMerger
target_path = folder_path
pdf_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+r"\(打印合集)五种字体 数字0-9({}份).pdf".format(len(fontname)))
file_merger.close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree(folder_path) #递归删除文件夹,即:删除非空文件夹`
# # AR StdKaiGDLB5 Md
结果发现:
把代码里的字体大小也改掉
'''
制作一个16行37列的数字描字帖(黑体、宋体、文鼎体、print dashed ,德彪)
作者:AI对话大师,阿夏
时间:2024年3月17日
'''
from docx import Document
from docx import Document
from docx.shared import Pt
# 导入所需的模块
from docx.shared import RGBColor
import os
from docx.oxml import OxmlElement
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
# 读取Word文档
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\数字1-10'
fontname=['宋体','黑体','AR StdKaiGDLB5 Md','德彪钢笔行书字库','Print Dashed']
fontcolor=['200','220','0','220','0']
fontnum=['28','28','28','26','36']
doc = Document(path+r'\1-10数字描字帖.docx')
# 选择第一个表格进行演示
table = doc.tables[0]
# 获取表格的行数和列数
num_rows = len(table.rows)
num_cols = len(table.columns)
print("表格的行数为:", num_rows)
# 16行
print("表格的列数为:", num_cols)
# 37列
bg= []
for x in range(num_rows):
for y in range(num_cols):
bg.append('{}{}'.format('%02d'%x,'%02d'%y))
print(bg)
num=[]
for o in range(2):
for i in range(0,10):
for z in range(num_cols):
num.append(i)
folder_path = path+r"\零时文件夹"
# 检查文件夹是否存在
if not os.path.exists(folder_path):
# 如果文件夹不存在,则新建文件夹
os.makedirs(folder_path)
for ziti in range(len(fontname)):
doc = Document(path+r'\1-10数字描字帖.docx')
for b in range(1):
table = doc.tables[b]
# print(p)
for t in range(len(bg)): # 0-15
# print(list[t])
pp=int(bg[t][0:2]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq=int(bg[t][2:4])
k=int(num[t])
# f=font[t]
# print(pp,qq,k)
run=table.cell(pp,qq).paragraphs[0].add_run(str(k)) # 在单元格0,0(第1行第1列)输入第0个名字
run.font.name =fontname[ziti] #输入时不同字体
run.font.size = Pt(int(fontnum[ziti])) #输入字体大小80或68号
# run.bold=True
run.font.color.rgb = RGBColor(int(fontcolor[ziti]),int(fontcolor[ziti]),int(fontcolor[ziti])) #设置颜色黑体
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'),fontname[ziti])#将输入语句中的中文部分字体变为华文行楷
table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
doc.save(folder_path+r'\{}.docx'.format('%02d'%ziti))#保存为XX学号的零时word
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = folder_path+r'\{}.docx'.format('%02d'%ziti)# 要转换的文件:已存在
outputFile = folder_path+r'\{}.pdf'.format('%02d'%ziti) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile,'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
from docx2pdf import convert
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
import os
from PyPDF2 import PdfMerger
target_path = folder_path
pdf_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+r"\(打印合集)五种字体 数字0-9({}份).pdf".format(len(fontname)))
file_merger.close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree(folder_path) #递归删除文件夹,即:删除非空文件夹`
打印出来看看效果吧(灰度是否让幼儿看得清,字体是否太小等)
A4整页效果




放大看,各类书写的优势劣势
宋体
优势:常见字体
劣势:字体有粗线细线组合,不是等粗的。
黑体
优势:等粗,黑色明显(推荐字体)
劣势:1这个字有一拐,
文鼎标楷虚线国字体
优势:是虚线字体
劣势:1和7有钩,2有波浪线, 字体样式与“幼儿用书写练习本”的手写字体不同。此外文鼎虚线的虚线是点点虚线,不是横线虚线,看上去虚线不清晰。
德彪行书行楷
优势:字体近似“幼儿用书写练习本”的手写字体
劣势:字体占格子的空间大(上下有大量白色空边),描字很小
print dashed
优势:比较明显的虚线字体,横线虚线(推荐字体)
劣势:1有钩,所有字体都是比较垂直的,圆弧的,与“幼儿用书写练习本”的手写字体有差异。
总结:
分析后,我个人感觉实线字体“黑体”和虚线字体“print dashed,比较适合作为“幼儿用数字练习簿”的替代字体。
本文含有隐藏内容,请 开通VIP 后查看