作品效果图
1、全部黑色(草花黑桃)3-10
2、全部红色(红桃方块)3-10
3、四种图案随机出现3-10(单页图案不重复)
背景需求:
扑克牌是孩子们非常喜欢的一款益智区游戏
模板设置:
新建模板,名称为”扑克牌模板docx“
页边距设置
页眉页脚设置
分栏设置
文字段落设置(光标位置 左上角,小四 宋体)段落行距设为固定值1,几乎看不见光标
扑克牌设置:
百度图片上找了一张高清的扑克牌全图
PS里面反复制作固定尺寸。
单张扑克牌尺寸:4.52*6.38CM
本次活动用到的牌面——四套牌面的3-10,
代码设计:
'''
作者:阿夏
时间:2022年11月3日扑克牌-不重复图案)
(A4竖排4*4张))
'''
import os
num=int(input('生成多少份\n'))
Number=int(input('每页制作多少个(16个)\n'))
colour=int(input('1、黑桃草花(黑色) 2、红桃方块(红色) 3、四图案混合\n'))
print('----------第1步:提取所有的扑克牌的路径------------')
if colour==1: #全部黑色图案 黑桃草花
path=[]
for i in range(1,9):
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
path.append(p)
for i in range(17,25):
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
path.append(p)
print(path)
title='黑桃草花'
if colour==2: #全部红色图案 红桃方块
path=[]
for i in range(9,17):
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
path.append(p)
for i in range(25,33):
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
path.append(p)
print(path)
title='红桃方块'
if colour==3: #黑色+红色图案 黑桃草花红桃方块
path=[]
for i in range(1,33):
p=r"C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\{}.png".format(i)
path.append(p)
print(path)
title='四图案混合'
print('----------第2步:新建一个临时文件夹------------')
# 新建一个”装N份word和PDF“的文件夹
os.mkdir(r'C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\零时Word')
print('----------第3步:随机抽取16个不重复的扑克牌 ------------')
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
import random
for nn in range(1,num+1):
# word = gencache.EnsureDispatch('Word.Application')
doc = docx.Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\扑克牌模板.docx')# 打开带docx模板(这个模板有页脚的页码,阿夏认为页码是必须的)
doc.paragraphs[0].clear()
# 随机抽取8个不重复空心图案(#CSDN博主「孟意昶」 原文链接:https://blog.csdn.net/weixin_44999258/article/details/125163277)
shuffle = random.sample(path, Number) # 随机抽取8个不重复空心图案
print(shuffle) #
for b in shuffle: # 单个取值
print(b)
# doc.add_paragraph(b) # 把内容按段落输入到doc这个docx文件内
doc.add_picture(b)
# 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(title))
file_merger.close()
# doc.Close()
# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/扑克牌/零时Word') #递归删除文件夹,即:删除非空文件夹
文件所在位置:
所有扑克牌排面、docx模板、生成的PDF合集都在C:\Users\jg2yXRZ\OneDrive\桌面\扑克牌\文件夹内。
作品效果:
教学实录
待补充
感悟:
扑克牌是孩子们最喜欢的游戏。