背景需求
【教学类-12-11】20240612通义万相-动物图片连连看(A4一页3套)-CSDN博客文章浏览阅读891次,点赞34次,收藏11次。【教学类-12-11】20240612通义万相-动物图片连连看(A4一页3套)https://blog.csdn.net/reasonsummer/article/details/139599675
用以上的方式,制作图案随机出现的样式
代码展示:
'''
01通义动物连连看头饰 A4整页随机出现动物
AI对话大师,阿夏
2024年6月9日
'''
# 第3步,读取图片写入docx,合并PDF
import os,time
from docx import Document
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
from PyPDF2 import PdfMerger
from docx.shared import Cm
import random,itertools
# 读取123文件夹中的所有图片地址
path=r'C:\Users\jg2yXRZ\OneDrive\桌面\20240609通义动物连连看头饰'
image_folder=path+r'\01四个动物连线'
new_folder = path+r'\零时文件夹'
os.makedirs(new_folder, exist_ok=True)
image_file = [os.path.join(image_folder, file) for file in os.listdir(image_folder) if file.endswith('.png')]
# print(image_files)
# print(len(image_files))
# 140
image_files=random.sample(image_file,len(image_file))
grouped_files = [image_files[i:i+24] for i in range(0, len(image_files), 24)]
# print(grouped_files)
# print(len(grouped_files))
# 处理每一组图片
for group_index, group in enumerate(grouped_files):
# 创建新的Word文档
doc = Document(path+r'\动物连连看一页单图.docx')
# print(group)
# 遍历每个单元格,并插入图片
for cell_index, image_file in enumerate(group):
# 计算图片长宽(单位:厘米)
# 插入图片到单元格
table = doc.tables[0]
cell = table.cell(int(cell_index / 4), cell_index % 4)
# 如果第一行有4个格子,两个数字都写4
cell_paragraph = cell.paragraphs[0]
cell_paragraph.clear()
run = cell_paragraph.add_run()
run.add_picture(image_file, width=Cm(4.69), height=Cm(4.69))
# 保存Word文档
doc.save(os.path.join(new_folder, f'{group_index + 1:03d}.docx'))
# 所有docx合并成PDF
# 将10个docx转为PDF
import os
from docx2pdf import convert
from PyPDF2 import PdfFileMerger
# from PyPDF4 import PdfMerger
# output_folder = output_folder
pdf_output_path = path+fr'\\通义动物一页随机出现{int(len(image_files)/24)+1}张{len(image_files)}人使用.pdf'
# 将所有DOCX文件转换为PDF
for docx_file in os.listdir(new_folder):
if docx_file.endswith('.docx'):
docx_path = os.path.join(new_folder, docx_file)
convert(docx_path, docx_path.replace('.docx', '.pdf'))
# 合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(new_folder):
if pdf_file.endswith('.pdf'):
pdf_path = os.path.join(new_folder, pdf_file)
merger.append(pdf_path)
time.sleep(2)
# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()
import shutil
# 删除输出文件夹
import time
shutil.rmtree(new_folder)
# shutil.rmtree(new)
time.sleep(2)