【办公类-22-15】周计划系列(5-6)“周计划-06 周计划打印pdf(docx删除内容转PDF)“ (2024年调整版本)

作品展示

背景需求:

前期用docx(删除第一页反思部分内容)转PDF转png(第一页)的方式获得上传网页用的图片。

【办公类-22-14】周计划系列(5-5)"周计划-05 上传周计划png(docx转PDF转png)" (2024年调整版本)-CSDN博客文章浏览阅读600次,点赞11次,收藏9次。【办公类-22-14】周计划系列(5-5)"周计划-05 上传周计划png(docx转PDF转png)" (2024年调整版本)https://blog.csdn.net/reasonsummer/article/details/136660866

去年我用转成了png图片打印的周计划,感觉打印出来的图片会比直接用docx打印的内容模糊一点、字体小一点。

所以今年我想试试 在docx内将第一页反思删除、第2-5页内容删除。然后将docx转成PDF,再合并,打印出来看看这种docx转成PDF直接转的方法下,文字是否会更清晰一点。

素材准备:

第一张表的反思部分不要,第2-4页内容删光

代码展示:

python 复制代码
'''周计划第一页的合并打印(docx删除第1页反思,删除第2-4页所有内容,转为PDF,19份PDF合并打印PDF)
作者:阿夏:
时间:2024年3月18日
'''

# 19个docx合并成一个PDF,便于打印

import os
from docx2pdf import convert
from PyPDF2 import PdfMerger
from docx import Document

path=r'D:\test\02办公类\91周计划4份_2024年中4班\04 周计划'
old=path+r'\06加粗测试'
new=path+r'\08docx合并pdf'
new_ls=new+r'\零时文件夹'

 
# 检查文件夹是否存在
if not os.path.exists(new_ls):
    # 如果文件夹不存在,则新建文件夹
    os.makedirs(new_ls)



# 获取docx文件列表
docx_files = os.listdir(old)
docx_files = [f for f in docx_files if f.lower().endswith('.docx')]
docx_files = docx_files[:]  # 只处理前10个docx文件

# 处理.docx文件

import time
from docx import Document
from docx.shared import Pt
from docx.enum.section import WD_ORIENT
from docx.shared import Cm


print('--------1、遍历把周计划docx删掉反思内容,另存到jpg上传文件夹---------')
folder_path = old
for file_name in os.listdir(folder_path):
    print(file_name)
    if file_name.endswith('.docx'):
        file_path = os.path.join(folder_path, file_name)
        doc = Document(file_path)

        # 删除第0张表格里反思格子里的内容
        table = doc.tables[0]  # 假设第一页只有一个表格
        cell = table.cell(1, 8)  # 获取第1行第8列的单元格
        cell.text = ''  # 清空单元格内容

     # 找到第一个分节符(分页符)后的位置
        start_index = 3        # 第1、2行 第3行内容保留(都是第一页上的段落文字
        for i, paragraph in enumerate(doc.paragraphs):
            if paragraph.runs:
                if paragraph.runs[0].text == '\x0c':  # 分页符的Unicode码为'\x0c'
                    start_index = i + 1
                    break

        # 删除第一个分节符后的段落,标题日期,这是教案表格还在的
        for i in range(start_index, len(doc.paragraphs)):
            for run in doc.paragraphs[i].runs:
                run.text = ''

        # 删除教案表格2-5。删除后会有4个空行
        tables = doc.tables[1:]        # 表格0是周计划,1-3是教案表格,需要删除
        for table in tables:
            table._element.getparent().remove(table._element)

        # 删除表格后,会有4个段落空行,把空行删除
        for paragraph in doc.paragraphs:
            if not paragraph.text.strip():  # 如果段落是空行
                # 删除空行
                p = paragraph._element
                p.getparent().remove(p)


        # 这是只有一页周计划了,但是显示是竖版的,需要改成横版
        section = doc.sections[0]

        # 设置页面方向为横版
        section.orientation = WD_ORIENT.LANDSCAPE

        # 设置页面的宽度和高度
        section.page_width = Cm(29.7)  # 设置页面宽度,842磅为A4纸宽度
        section.page_height =Cm(21.0)  # 设置页面高度,595磅为A4纸高度

        # 设置页面边距为上下左右各1厘米
        section.top_margin = Cm(1)
        section.bottom_margin = Cm(1)
        section.left_margin = Cm(1)
        section.right_margin = Cm(1)

        # 保存新的Word文档
        doc.save(new_ls+r'\{}'.format(file_name))
        time.sleep(1)

# # 将零时文件夹docx文件转换为PDF
pdf_files = []
for ls_name in os.listdir(new_ls):
    print(ls_name)
    if ls_name.endswith('.docx'):# 
        docx_path = os.path.join(new_ls, ls_name)
        pdf_file = ls_name[:-5] + '.pdf'
        pdf_path = os.path.join(new_ls, pdf_file)
        convert(docx_path, pdf_path)
        time.sleep(1)
        pdf_files.append(pdf_path)

# 合并PDF文件
merger = PdfMerger()
for pdf_file in pdf_files:
    merger.append(pdf_file)

# 保存合并后的PDF文件
output_file = os.path.join(new, '(打印)2024年2月周计划合并版.pdf')
merger.write(output_file)
merger.close()

print('合并完毕,结果保存在{}'.format(output_file))

import shutil
# 删除临时文件夹    
shutil.rmtree(new_ls)

作品展示:

一共19周的周计划第一页

用pdf批量打印第6-19周的周计划的第一页

拿了一张用word打印的周计划,对比文字大小

将前几周用周计划.docx打印的周计划纸张与本次用19周合并周计划.pdf打印的周计划纸张做对比,明显看到:

1、PDF合并打印的文字内容小一点。

用word打印的A4纸上的内容文字比用pdf打印的A4纸的文字内容更大(pdf会自动缩小上下左右的边距。)pdf打印的A4纸的文字会比word打印的文字小一号(类似 字体四号转字体小四)

2、PDF合并打印的文字内容清晰度略微降低

对比pdf打印字体与word打印字体,两者的文字清晰度差异不明显,但是仔细看,还是可以感觉到pdf打印的文字跟更深一点,字号更小一点。

3、如果没有与word打印纸张进行对比,只看pdf打印的周计划纸张,基本看不出明显的字号、颜色、清晰度差异。

4、由于目前这些都是班本化资料,不需要做档案,所以我觉得还是用合并pdf打印快捷方便。

最后,我将"周计划"、"信息窗+主题知识"+"育儿知识"按照时间分别摆在一起,便于每周五更换。

感悟:

批量制作周计划、批量打印周计划,快速实现常态化备课任务,完成保底工作,便能有时间和精力应对日常工作中的突发任务和随机变化的工作内容,提升工作质量。

后续思考

这些贴墙版的周计划纸张不需要上交,可是在处理需要上交入档的周计划+教案时,我觉得还是要将19周周计划在word里面合并,用word打印最合适

(1)因为pdf打印文字会缩小

(2)因为word转pdf最大的问题就是宋体加粗会变回宋体常规,)还是用word打印能保留原格式。

(等全部教案完全修改完善批量生成后,我再做一份期末入档用的word合并周计划,docx,又能批量打印,文字也是高清的,最大号的,还要让第1页周计划和第3页后面是空白的,符合双面打印的规范要求)

相关推荐
青少儿编程课堂5 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛
特创数字科技5 小时前
写了个 Windows 下载器:一键拉 GitHub / Gitee 源码,带 SHA256 校验
python·github
郝学胜-神的一滴6 小时前
AI 编程智能体 27:吃透MCP通信机制
人工智能·python·langchain·wpf·numpy·scikit-learn
天天被压力6 小时前
【A股分钟级高频数据完全手册 #09】A股历史分时交易数据接口:普通分时怎么批量下
java·人工智能·python
天天被压力6 小时前
【A股分钟级高频数据完全手册 #10】股票实时行情数据接口Python:公开源实时交易取数
java·人工智能·python
特立独行的猫A16 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持16 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang17 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰18 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc19 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash