作品展示:
背景需求:
前文遍历四个文件夹,分别将每个文件夹内的10个图片的左上角加入星号,显示难度系数
素材准备:
一、深色模板
二、浅色模板
代码展示
python
'''
把图片插入模板,生成4个pdf,合并成1个打印用的pdf
作者:AI对话大师,阿夏
时间:2024年4月8日
'''
import os,time
import glob
from docx import Document
from docx.shared import Cm
path = r'C:\Users\jg2yXRZ\OneDrive\桌面\个别化'
item=['01框内不连接','02框外不连接','03框内连接','04框外连接']
mb=['深','深','浅','浅']
for r in range(len(item)):
input_folder = os.path.join(path, f'{item[r]}')
output_folder = os.path.join(path, '零时文件')
# 创建输出文件夹
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 获取234文件夹内的所有png图片路径
image_files = glob.glob(os.path.join(input_folder, '*.png'))
# 创建新的docx文档
doc = Document(path + fr'\个别化模板({mb[r]}色).docx')
# 插入图片到表格中的00格子
for i, img_path in enumerate(image_files):
table = doc.tables[i % 2]
cell = table.cell(0, 0)
cell.paragraphs[0].clear() # 清空单元格中原有内容
cell.paragraphs[0].alignment = 1 # 设置居中对齐
run = cell.paragraphs[0].add_run()
run.add_picture(img_path, width=Cm(14.6), height=Cm(14.6))
# 每插入两张图片保存一次文件
if (i+1) % 2 == 0:
doc.save(os.path.join(output_folder, f'{i//2:02d}.docx'))
# # 保存为docx文件
# doc.save(os.path.join(output_folder, f'{len(image_files)//2:02d}.docx'))
time.sleep(1)
# 将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'\{r+1:02d}个别化.pdf'
# 将所有DOCX文件转换为PDF
for docx_file in os.listdir(output_folder):
if docx_file.endswith('.docx'):
docx_path = os.path.join(output_folder, docx_file)
convert(docx_path, docx_path.replace('.docx', '.pdf'))
# 合并零时文件里所有PDF文件
merger = PdfFileMerger()
for pdf_file in os.listdir(output_folder):
if pdf_file.endswith('.pdf'):
pdf_path = os.path.join(output_folder, pdf_file)
merger.append(pdf_path)
time.sleep(2)
# 保存合并后的PDF文件
merger.write(pdf_output_path)
merger.close()
import shutil
# 删除输出文件夹
shutil.rmtree(output_folder)
# 四个文件合并
import os
from PyPDF2 import PdfMerger
all_folder = r'C:\Users\jg2yXRZ\OneDrive\桌面\个别化'
output_file = all_folder+r'\合并打印.pdf'
# 创建一个PdfMerger对象
merger = PdfMerger()
# 遍历输入文件夹中的所有PDF文件
for filename in os.listdir(all_folder):
if filename.endswith('.pdf'):
filepath = os.path.join(all_folder, filename)
merger.append(filepath)
# 合并PDF文件并保存为输出文件
merger.write(output_file)
merger.close()