作品展示
背景需求:
马上就要过年了,家家户户大门上贴上对联和福字
我想用正方形红色手工纸(15CM)也做一个幼儿描线版的福字
问题一:福字顺时针旋转45度
打印纸上制作福字,需要让这个字顺时针旋转45度,形成菱形,普通的word表格插入文字,只能书写横向和纵向文字。无法实现倾斜文字.
问题二:幼儿描边速度太快,换成空心字涂色
如果只是对灰色的福字描线,我觉得幼儿很快就完成了,
所以准备把福字改成空心字体,让幼儿用黑色蜡笔(笔头粗,容易脏、超过边线、但是纸张不渗透)、黑色记号笔(涂色精准,但纸张容易晕湿碎裂、背面渗色),铅笔涂色(相对适宜,但是颜色不黑,一会儿就要用卷笔刀卷头了)
【教学类-35-23】正式版 20240202名字字卡4.0(15CM正方形手工纸、先男后女,页眉是黑体包含全名,姓名是红豆空心黑体 部分名字变成文艺空心黑体)-CSDN博客文章浏览阅读644次,点赞16次,收藏7次。【教学类-35-23】正式版 20240202名字字卡4.0(15CM正方形手工纸、先男后女,页眉是黑体包含全名,姓名是红豆空心黑体 部分名字变成文艺空心黑体)https://blog.csdn.net/reasonsummer/article/details/135980717
解决方案:
问题一:可以用“word形状/文本框”这个神奇的功能实现福字倾斜、倒置,
问题二:可以换成五款空心字(PPT效果展示)
下面来制作Word模板(文本框字体或形状字体)
页面设置
插入形状-菱形(用Shift拉出正菱形)
设置 字体(空心字) 字体大小
五款空心字中,我比较中意“华光通心圆_CNKI”
文本框中字体的段落设置(让文字尽量在菱形的中心)
模板设置好了,一个“福字”,根本不需要Python,所以我准备了15个吉祥字,让幼儿随机抽取红色手工纸,进行文字涂色。
['福','乐','安','康','喜','吉','瑞','美','熙','彩','美','顺','春','龙','爱']
这就涉及了WORD文本框内容的替换,网上相关信息很少,以下这篇帮我实现了需求
python插入、读写word中的文本框(基于win32com) - 知乎在word中插入文本框在正文中插入文本框 插入效果(浮于文字上) import win32com.client as win32 from win32com.client import constants import os curr_path = os.getcwd() doc_app = win32.gencache.EnsureDis…https://zhuanlan.zhihu.com/p/479015404
代码展示(包含简体和繁体)
'''
目的:福字菱形纸1.0-华光通心圆_CNKI 段落固定值310 字体大小290
作者:阿夏
时间:2024年2月3日
'''# https://zhuanlan.zhihu.com/p/479015404
# # 在word中插入文本框
# # 打开一个已经存在的word,写入一个文本框,内容是123
# doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
# doc_app.Visible =1#设置应用程序可见
# doc = doc_app.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\福字\福字12.docx')#打开文档# shp = doc.Shapes.AddTextbox(Orientation=1, Left=100, Top=100, Width=100, Height=100)
# shp.TextFrame.TextRange.Text = '123'#编辑文本框的内容
# # 另存为
# new_file_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\福字\福字12_new.docx' # 新文件路径和名称
# doc.SaveAs(new_file_path) # 另存为新文件
# # 关闭兼容模式,退出原始模板
# doc.Convert()
# doc.Close() # 关闭原始文件
# doc_app.Quit() # 退出Word应用程序# 打开一个已经存在的word,看有几个文本框
import win32com.client as win32
from win32com.client import constants
import os,timezt='华光通心圆_CNKI'# # # print('----------第2步:新建一个临时文件夹------------')
# # # # # 新建一个”装N份word和PDF“的文件夹
# os.mkdir
imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\福字\零时Word'
if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在os.makedirs(imagePath1) # 若图片文件夹不存在就创建# 简体
TXT=['福','乐','安','康','喜','吉','瑞','美','熙','彩','美','顺','春','龙','爱']
# 繁体
# TXT=['福','樂','安','康','喜','吉','瑞','美','熙','彩','美','順','春','龍','愛']print(len(TXT))
# 15字for nn in range(len(TXT)):doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序doc_app.Visible =0 #设置应用程序可见 word不要打开doc = doc_app.Documents.Open(r'C:\Users\jg2yXRZ\OneDrive\桌面\福字\福字_华光通心圆_CNKI.docx' )#创建新得文档# # 正文几个文本框# print(doc.Shapes.Count)# # 提取正文里面的文本框的内容for shape in doc.Shapes:# print(shape.TextFrame.TextRange.Text)wrapFormat = shape.WrapFormat wrapFormat.Type = constants.wdWrapThrough# # 更改文本框的内容 默认和原来的格式一样(字体 大小 颜色)shape.TextFrame.TextRange.Text = TXT[nn]# # 设置文本框中字体颜色和大小# textFont = shape.TextFrame.TextRange.Font # # textFont.ColorIndex = constants.wdGreen #设置字体颜色# # textFont.Size = 40 # 设置字体,单位为磅,可以网上搜索到字体大小和磅的对应关系# # 设置文本框颜色# # LineFormat = shp.Line# # LineFormat.ForeColor.RGB = 0xFFFFFF # 设置文本框颜色为白色# 页眉页脚文本框内容# wd_section = doc.Sections(1)#注意section内部成员编号是从1开始的# print(wd_section.Headers(constants.wdHeaderFooterPrimary).Shapes.Count)# print(wd_section.Footers(constants.wdHeaderFooterPrimary).Shapes.Count)# 提取页眉页脚里面的文本框的内容# for shape in wd_section.Footers(constants.wdHeaderFooterPrimary).Shapes:# print(shape.TextFrame.TextRange.Text)# doc.Convert()# 另存为new_file_path = r'C:\Users\jg2yXRZ\OneDrive\桌面\福字\零时Word\{}.docx'.format('%02d'%nn) # 新文件路径和名称 doc.SaveAs(new_file_path) # 另存为新文件 # 关闭模板 doc.Close() # 关闭原始文件 doc_app.Quit() # 退出Word应用程序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)time.sleep(1)print('----------第4步:把都有PDF合并为一个打印用PDF------------')# 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
import os
from PyPDF2 import PdfMerger
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 = PdfMerger()
for pdf in pdf_lst:print(pdf)file_merger.append(pdf)
file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/福字/(打印合集)吉祥字简体 {}({}人共{}张).pdf".format(zt,len(TXT),len(TXT)))
# file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/福字/(打印合集)吉祥字繁体 {}({}人共{}张).pdf".format(zt,len(TXT),len(TXT)))
file_merger.close()
# doc.Close()# print('----------第5步:删除临时文件夹------------')
import shutil
shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/福字/零时Word') #递归删除文件夹,即:删除非空文件夹o