背景需求:
【教学类-36-07】20240608动物面具(通义万相)-A4大小7图&15手工纸1图-CSDN博客文章浏览阅读1.1k次,点赞45次,收藏27次。【教学类-36-07】20240608动物面具(通义万相)-A4大小7图&15手工纸1图https://blog.csdn.net/reasonsummer/article/details/139550377
在介绍7个大小动物的时候,我问孩子们“你想怎么玩?”
HX小朋友说:大的做扇子,最小的做戒指。
她挑头说了“扇子”,后面的孩子们都货提到了“扇子”
我觉得这个主意不错,可以做两个一摸一样的大号动物,然后正反黏贴成小扇子。
于是我调整了模板上的参数。
代码展示
'''
目的:通义万象生成的动物面具:(长方形)19.5二大多小 扇子
作者:阿夏
时间:2024年6月13日21:27
'''
import os
folder_path=r'C:\Users\jg2yXRZ\OneDrive\桌面\通义动物面具'
print('----------第1步:提取所有的幼儿照片的路径------------')
ppp=folder_path+r'\04适合的'
print('----------第2步:新建一个临时文件夹------------')
qqq=folder_path+r'\零时Word'
os.makedirs(qqq,exist_ok=True)
path=[]
# 过滤:只保留png结尾的图片 31张(多几张备用)
imgs=os.listdir(ppp)
for img in imgs:
if img.endswith(".png"):
path.append(ppp+'\\'+img)
# 所有图片的路径
print(path)
# 提取动物名字倒数第4个字之前的动物名字
print(imgs)
print('----------第3步:随机抽取12张图片 ------------')
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
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.enum.text import WD_VERTICAL_ALIGNMENT
# from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT #用来设置单元格垂直对齐方式
from docx.oxml.ns import qn
from docxtpl import DocxTemplate
import pandas as pd
from docx2pdf import convert
from docx.shared import RGBColor
pic=['00','05','10','11','12','14','15','16','17','26','27']
long=['13.7','13.7','4.94','4.94','3.8','3.8','3.8','2.1','2.1','2.1','2.1',]
for nn in range(0,int(len(path))): # 读取图片的全路径 的数量 31张
doc = Document(folder_path+r'\蝴蝶长方形扇子.docx')
figures=path[nn] # 图片的全路径的第一张
table = doc.tables[0] # 4567(8)行
for l in range(len(long)):
# 单元格坐标
a=int(pic[l][0])
b=int(pic[l][1])
#
# 写入1张大图
run=doc.tables[0].cell(a,b).paragraphs[0].add_run() # # 图片位置 第一个表格的0 3 插入照片
run.add_picture(r'{}'.format(figures),width=Cm(float(long[l])),height=Cm(float(long[l])))
table.cell(a,b).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
doc.save(qqq+r'\{}.docx'.format('%02d'%nn))
from docx2pdf import convert
# docx 文件另存为PDF文件
inputFile = qqq+fr'\{nn:02d}.docx' # 要转换的文件:已存在
outputFile = qqq+fr'\{nn:02d}.pdf' # 要生成的文件:不存在
# 先创建 不存在的 文件
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 = qqq
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(folder_path+fr"\通义动物面具19.5扇子制作({len(path)}人共{len(path)}份).pdf")
file_merger.close()
# doc.Close()
# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree(qqq) #递归删除文件夹,即:删除非空文件夹