• 【教学类-36】八等分格子-A4竖版-4条(制作皇冠、戒指)


    背景需求:

    最近在大四班孩子中间普及铅画纸制作“方盒”的活动,目前进展到使用三条8等分的长条纸,制作一个“坚硬的、不漏底”的方盒。

    实验后,我想试试如果缩小纸条长宽,是不是可以做“迷你”纸盒。

    1. '''
    2. 目的:
    3. 1、8格竖版小号一页4份每人三条 戒指、三条连接的王冠
    4. 2、作者:阿夏
    5. 时间:2023年11月16日)
    6. '''
    7. import os
    8. # num=int(input('生成多少份(28人)\n'))
    9. print('----------第1步:提取图案------------')
    10. #
    11. # path=['▲','●','◆','■','★','✿','❀']
    12. # '♠','♥','♦','♣',]
    13. # 一页4个需要4的倍数,36个可以分成9张
    14. patho=['☆','□','○','◇','△','⊕','☼','☺','☏','◎','⊿','√', '×','☑','☹','☺','☼','♫','❀','❤','✉','✄','✈','♘','♕','♔','☀','☉','☋','☁','☂','☽','♤','♡','♢','♧',]
    15. #
    16. # 把每个符号做21次
    17. pathall=[]
    18. for t in range(len(patho)):
    19. for v in range(27):
    20. pathall.append(patho[t])
    21. print(pathall)
    22. print(len(pathall))
    23. # 21分割 ['21个图形','21个图形']
    24. path=[]
    25. for t in range(int(len(pathall)/27)):
    26. path.append(pathall[t*27:t*27+27])
    27. print(path)
    28. paththree=[]
    29. for t2 in range(int(len(path)/4)):
    30. paththree.append(path[t2*4:t2*4+4])
    31. print(paththree)
    32. print(len(paththree))
    33. # # # print('----------第2步:新建一个临时文件夹------------')
    34. # # # # # 新建一个”装N份word和PDF“的文件夹
    35. # os.mkdir
    36. imagePath1=r'C:\Users\jg2yXRZ\OneDrive\桌面\八方格数学题\零时Word'
    37. if not os.path.exists(imagePath1): # 判断存放图片的文件夹是否存在
    38. os.makedirs(imagePath1) # 若图片文件夹不存在就创建
    39. print('----------第3步:遍历输入每一种图案 ------------')
    40. import docx
    41. from docx import Document
    42. from docx.shared import Pt
    43. from docx.shared import RGBColor
    44. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    45. from docx.oxml.ns import qn
    46. import random
    47. import os,time
    48. import docx
    49. from docx import Document
    50. from docx.shared import Inches,Cm,Pt
    51. from docx.shared import RGBColor
    52. from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    53. from docx.oxml.ns import qn
    54. from docxtpl import DocxTemplate
    55. import pandas as pd
    56. from docx2pdf import convert
    57. from docx.shared import RGBColor
    58. # 坐标
    59. s=[1,2,3,4,5,6,2,4]
    60. # # # 需要复制的倍数 第一个格子2个点,第2个格子1个点,第3个格子3个点
    61. bg=[]
    62. for x in range(0,4):
    63. for y in range(0,8,2):
    64. # 只有第1-2行需要插入图案
    65. zz='{}{}'.format('%02d'%x,'%02d'%y)
    66. bg.append(zz)
    67. print(bg)
    68. # ['0000', '0002', '0004', '0006', '0100', '0102', '0104', '0106', '0200',
    69. bg1=[]
    70. for tt in range(len(s)):
    71. hh=int(s[tt]) # 第一个数字1
    72. print(hh)
    73. for kk in range(hh): # 数字出现几次1次、2次、6次
    74. jj=bg[tt] # bg的第一个坐标‘01’
    75. bg1.append(jj)
    76. print(bg1)
    77. # ['01', '02', '02', '03', '03', '03', '03', '03', '03', '04', '04', '04', '04', '04', '12', '12', '12', '12', '12', '12', '14', '14', '14', '14']
    78. for nn in range(0,len(paththree)): # 4
    79. doc = Document(r'C:\Users\jg2yXRZ\OneDrive\桌面\八方格数学题\8方格(竖版小).docx')
    80. for b in range(0,4): # 共有2个表格
    81. table = doc.tables[b] # 一共有2个表格
    82. # 插入图形
    83. for tt in range(len(bg1)): # 21个
    84. pp=int(bg1[tt][0:2])
    85. qq=int(bg1[tt][2:4])
    86. # print(p)
    87. k=paththree[nn][b][tt] # 每个坐标里面插入一个☉
    88. print(pp,qq,k)
    89. # 图案符号的字体、大小参数
    90. run=table.cell(pp,qq).paragraphs[0].add_run(k) # 在单元格0,0(第1行第1列)输入第0个图图案
    91. run.font.name = '黑体'#输入时默认华文彩云字体
    92. # run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片
    93. run.font.size = Pt(21) #是否加粗
    94. run.font.color.rgb = RGBColor(0,0,0) #数字小,颜色深0-255
    95. run.bold=True
    96. # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
    97. r = run._element
    98. r.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    99. table.cell(pp,qq).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    100. # # 记录表里面插入一个图形符号
    101. # table1 = doc.tables[b+4] # 表4、5、6
    102. # k3=paththree[nn][b][0] # 每个坐标里面插入一个☉
    103. # k2='({})'.format(k3)
    104. # print(k2)
    105. # # 图案符号的字体、大小参数
    106. # run1=table1.cell(0,3).paragraphs[0].add_run(k2) # 在单元格0,0(第1行第1列)输入第0个图图案
    107. # run1.font.name = '黑体'#输入时默认华文彩云字体
    108. # # run.font.size = Pt(46) #输入字体大小默认30号 换行(一页一份大卡片
    109. # run1.font.size = Pt(22) #是否加粗
    110. # run1.bold=True
    111. # run1.font.color.rgb = RGBColor(0,0,0) #数字小,颜色深0-255
    112. # # paragraph.paragraph_format.line_spacing = Pt(180) #数字段间距
    113. # r1 = run1._element
    114. # r1.rPr.rFonts.set(qn('w:eastAsia'), '黑体')#将输入语句中的中文部分字体变为华文行楷
    115. # table1.cell(0,4).paragraphs[0].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER #居中
    116. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\八方格数学题\零时Word\{}.docx'.format('%02d'%nn))
    117. doc.save(r'C:\Users\jg2yXRZ\OneDrive\桌面\八方格数学题\零时Word\{}.docx'.format('%02d'%nn))
    118. from docx2pdf import convert
    119. # docx 文件另存为PDF文件
    120. inputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/八方格数学题/零时Word/{}.docx".format('%02d'%nn) # 要转换的文件:已存在
    121. outputFile = r"C:/Users/jg2yXRZ/OneDrive/桌面/八方格数学题/零时Word/{}.pdf".format('%02d'%nn) # 要生成的文件:不存在
    122. # 先创建 不存在的 文件
    123. f1 = open(outputFile, 'w')
    124. f1.close()
    125. # 再转换往PDF中写入内容
    126. convert(inputFile, outputFile)
    127. print('----------第4步:把都有PDF合并为一个打印用PDF------------')
    128. # 多个PDF合并(CSDN博主「红色小小螃蟹」,https://blog.csdn.net/yangcunbiao/article/details/125248205)
    129. import os
    130. from PyPDF2 import PdfFileMerger
    131. target_path = 'C:/Users/jg2yXRZ/OneDrive/桌面/八方格数学题/零时Word'
    132. pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')]
    133. pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst]
    134. pdf_lst.sort()
    135. file_merger = PdfFileMerger()
    136. for pdf in pdf_lst:
    137. print(pdf)
    138. file_merger.append(pdf)
    139. file_merger.write("C:/Users/jg2yXRZ/OneDrive/桌面/八方格数学题/(打印合集)八方格竖版({}人共{}张).pdf".format(len(patho),int(len(path)/4)))
    140. file_merger.close()
    141. # doc.Close()
    142. # print('----------第5步:删除临时文件夹------------')
    143. import shutil
    144. shutil.rmtree('C:/Users/jg2yXRZ/OneDrive/桌面/八方格数学题/零时Word') #递归删除文件夹,即:删除非空文件夹o

    重点说明

  • 相关阅读:
    枚举与接口常量、类常量有什么区别?
    主数据管理理论与实践
    Java项目:SSH在线水果商城平台含管理系统
    Java也能做OCR!SpringBoot 整合 Tess4J 实现图片文字识别
    二造考生必看|巩固优选题库助力考生最后冲刺
    从一到无穷大 #3 对象存储.浅谈
    Midjourney视觉垫图
    备战数学建模42-缺失值和异常值的处理方法(攻坚战6)
    项目首次打开弹出提示页面效果
    JS事件绑定
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/134461818