展示效果:
单张效果
多张效果
隐藏的部分 信息:
1.右侧第1列:幼儿园名字;
2.右侧第3列,幼儿名字
(1)3个名字+印 (为了统一4字)
(2)2个名字+印章/印信/印文)(为了统一4字)
(3)没有4个名字的孩子,如果是4个名字,就不写加“印”
打印效果:
背景需求:
前期数学题和涂色题做的很多,感觉想不出更多的花样了。借助纸的特性,我尝试制作”纸膜“开展简单的”折纸“活动。
在2019-2021年《铅画纸折纸》青年课题中,我原创了一个”插入式纸盒”的折叠方法——利用长方形8K铅画纸折纸制作”手提袋““茶杯”等,深受幼儿欢迎(可以装东西、可以玩游戏)。
但是插入式纸盒是一个立体结构,大班幼儿至少需要折叠10次以上的纸张,才能稍微了解每个步骤的折法——最开始的几次练习,都是老师一个人批量制作30个,给幼儿玩耍,来培养幼儿对这款产品的需求。
虽然教学中我鼓励孩子们运用”记号笔画线法”提高折叠的精准度,但幼儿对画线、折叠、立体空间水平差异很大。5位高手、5位有兴趣,其他幼儿不会做,都是可有可无。
设计思路
本次我就想制作A4大小的插入纸盒的纸膜,让幼儿根据已有的虚线来初步感知插入式纸盒的制作过程。
仅仅制作纸膜,完全可以1张复制多份,并没有什么Python代码设计的必要。
于是我在”花纹“上动脑筋,预设了”底部名字印章“的不同(大1班30位孩子的名字),把它作为大班主题《我是中国人-青花瓷》的一个学习元素,通过青花茶杯,感知传统纹理。。
(本来想让幼儿描字的,但是一方面考虑是繁体字,幼儿没有细笔来描,另一方面第一次做纸盒,幼儿和教师大部分的精力还是应该在“结构折纸”上,所以都直接把文字打印成“青花蓝”。)
Word模板设置
代码设计:
'''
作者:阿夏
时间:2022年12月04日插入式纸盒(茶杯-青花瓷))
'''
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
print('----------第1步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\插入茶杯\零时Word')
wb= xlrd.open_workbook(r"C:\Users\jg2yXRZ\OneDrive\桌面\插入茶杯\大1班名字篆书.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(2)# 名字
num=len(col2)-1 # 第一列去掉第一行s
# 生成 基本组:“学号+名字“
name=[]
for i in range(1,len(col2)):
names='{}'.format (col2[i])
name.append(names) # 生成第一行信息['01张三 01张三 ],正好摆一行
print(name)
print(len(name))
# 生成 基本组:“学号+名字“
for num in range(0,len(name)):
doc = docx.Document(r"C:\Users\jg2yXRZ\OneDrive\桌面\插入茶杯\插入茶杯(模板).docx")
c=name[num]
table = doc.tables[0] # 一共有2个表格,在第1个表格里
run=table.cell(1,1).paragraphs[0].add_run(c) # 在单元格0,0(第1行第1列)输入国家名称
run.font.name = '隶书'#输入时默认华文彩云字体
run.font.size = Pt(40) #输入字体大小默认30号
run.font.color.rgb = RGBColor(79,81,120) #青花色
# paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), '隶书')#将输入语句中的中文部分字体变为华文行楷
table.cell(1,1).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
doc.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\插入茶杯\零时Word\{}.docx".format('%02d'%num))
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/插入茶杯/零时Word/{}.docx".format('%02d'%num)# 要转换的文件:已存在
outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/插入茶杯/零时Word/{}.pdf".format('%02d'%num) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile, 'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfFileMerger
target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/插入茶杯/零时Word'
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 = PdfFileMerger()
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("C:/Users/jg2yXRZ/OneDrive/桌面/插入茶杯/(打印合集)大班A整页插入茶杯1行5行表格-23名字({}人).pdf".format(num))
file_merger.close()
# doc.Close()
# # print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/插入茶杯/零时Word') #递归删除文件夹,即:删除非空文件夹
重点说明:
输入数据
只要填写份数(16*2=32张)
运行过程
国旗图片的路径
合成PDF
随后删除过渡信息
一、提取所有图片的路径
二、抽图片,及图片上的文字,填入相应的格子里
效果展示:
实现目标:
感悟:
还是老老实实按照列表索引一个个抽取写入图案吧。