效果展示:
单页效果
多页效果
背景需求:
2022年11月20日 2022年卡塔尔世界杯足球赛在卡塔尔首都多哈举行。借此契机,我设计一份七巧板让幼儿拼”踢足球“的造型。
图片准备:
从网上拉了18张各种”踢球七巧板造型图“
新建一个PPT把图片复制到PPt内,
PPT删除背景图案
裁剪边缘
为了节省打印墨水,图片改成灰色
把黑框和图案组合,另存为
因为Word模板里面已经有2*2的边框了,所以图片的边框可以隐藏
默认保存为“图片X.png”的格式。
所有18张图片都在“七巧板-灰色图片”里面
参考图片终于PS完了T_T
WORD模板设置
分栏,左边是参考图片和一副空白七巧板,右边是帖七巧板的画框位置。
页边距l:上下左右1CM
1、插入2*2表格,高度宽度如图
2、空一行
3、插入 分开来的七巧板(PPT自制)
插入形状-用直角三角形、正方形、平行四边形。照着彩色的图片一块块拼上去,然后稍微拉开空一点距离。
全选7块拼图,另存为图片。
把左侧的纯图片复制到WORD内部
Word模板终于做完了T_T
运行代码:
'''
作者:阿夏
时间:2022年11月22日世界杯足球赛-七巧板造型
(A4横版,左边第一个2*2表格内插入随机四张图片))
'''
import os,random
num=int(input('生成多少份\n'))
Number=int(input('抽取几个图片(4个)\n'))
print('----------第1步:提取所有的七巧板足球图的路径------------')
path=[]
for i in range(1,19): # 一共有18张图片
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\七巧板\灰色图片\图片{}.png".format(i)
path.append(p)
print(path)
# ['C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片1.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片2.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片3.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片4.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片5.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧
# 板\\灰色图片\\图片6.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片7.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片8.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片9.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片10.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片11.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片12.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片13.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片14.png',
# 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片15.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片16.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片
# \\图片17.png', 'C:\\Users\\jg2yXRZ\\OneDrive\\桌面\\七巧板\\灰色图片\\图片18.png']
# 表格位置
bg=[]
for x in range(0,2):
for y in range(0,2):
ww='{}{}'.format(x,y)
bg.append(ww)
print(bg)
# ['00', '01', '10', '11']
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\七巧板\零时Word')
print('----------第3步:随机抽取19个图案中的4个 ------------')
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 Inches,Cm,Pt
from docx.shared import RGBColor
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import qn
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor
for nn in range(1,num+1):
# word = gencache.EnsureDispatch('Word.Application')
doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\七巧板\纯色七巧板(模板) .docx')# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)
table = doc.tables[0] # 一共有1个表格
list = random.sample(path, Number) # 随机抽取8个不重复空心图案
# list.append(list)
for t in range(0,len(list)): # 图案的长度为8*4=32个 遍历0-32(32个)
pp=int(bg[t][0]) # 提取表格bg里面每个元素的第0个数字==单元格X坐标 t=索引数字
qq=int(bg[t][1])
k=list[t] # 提取list图案列表里面每个图形 t=索引数字
print(pp,qq,k)
run=doc.tables[0].cell(pp,qq).paragraphs[0].add_run() # 在第一个表格中的每个单元格的第一行插入信息
run.add_picture('{}'.format(k),width=Cm(4),height=Cm(4))
# 插入图片,k=图片所在路径。单元格大小有限,每张图片原始尺寸8.744CM,插入的大小最多4CM
table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
# doc.Save()# 把有空格的1.docx保存
doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\七巧板\零时Word\{}.docx'.format('%02d'%nn))
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/七巧板/零时Word/{}.docx".format('%02d'%nn) # 要转换的文件:已存在
outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/七巧板/零时Word/{}.pdf".format('%02d'%nn) # 要生成的文件:不存在
# 先创建 不存在的 文件
f1 = open(outputFile, 'w')
f1.close()
# 再转换往PDF中写入内容
convert(inputFile, outputFile)
print('----------第4步:把都有PDF合并为一个打印用PDF------------')
# 多个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/桌面/七巧板/(打印合集)纯色七巧板({}份).pdf".format(num))
file_merger.close()
# doc.Close()
# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/七巧板/零时Word') #递归删除文件夹,即:删除非空文件夹
重点说明
1、运行参数
2、运行过程:
3、重要设置:
效果再展示:
感悟:
1、参考图案的随机出现:
本学具的核心,就是利用Python随机不重复抽取(单张从18个取4个不重复参考图案)。一位孩子有4个图案,可以从中选择最喜欢的一个图案造型进行模仿拼图,
2、更多图案欣赏的机会:
幼儿可有机会观摩左右两边同伴作业纸上的不同造型,看看更多七巧板踢球造型的样式。有能力的孩子可以自己尝试微调造型,制作全新的图案。
3、确保拼图造型更多样:
每张七巧板拼图上的参考图案不同,幼儿四个选一个,拼图造型会更分散,集体展示时,会看到每个孩子制作的踢球造型都会略有不同。避免一个班级中幼儿大量拼图造型的重复(欣赏起来就没有新鲜感)。
4、做记号减少纸片混淆
鼓励幼儿先在未裁剪的七巧板的七张纸片上写学号。避免同桌之间的混乱。
5、添加元素丰富剧情
添画足球、球网、服装等图案