【办公类-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 分钟前
python相关
服务器·前端·python
happybasic8 分钟前
python字典中字段重复性的分析~~
开发语言·python
山海青风17 分钟前
人工智能基础与应用 - 数据处理、建模与预测流程 6 模型训练
人工智能·python·机器学习
l木本I21 分钟前
Reinforcement Learning for VLA(强化学习+VLA)
c++·人工智能·python·机器学习·机器人
颖风船31 分钟前
锂电池SOC估计的一种算法(改进无迹卡尔曼滤波)
python·算法·信号处理
94620164zwb534 分钟前
应用设置模块 Cordova 与 OpenHarmony 混合开发实战
python
551只玄猫1 小时前
KNN算法基础 机器学习基础1 python人工智能
人工智能·python·算法·机器学习·机器学习算法·knn·knn算法
tang777892 小时前
Python爬虫代理,选短效IP还是长效IP?
爬虫·python·tcp/ip
写文章的大米2 小时前
这份数据验证方案,可以让你的 FastAPI 崩溃率直降90%
python
xingzhemengyou12 小时前
Python 有哪些定时器
前端·python