【办公类-22-14】周计划系列(5-6)“周计划-06 19周的周计划教案合并打印PDF(最终打印版))

news2024/12/28 13:59:40

 

 

背景需求:

花了十周,终于把周计划+教案的文字都写满、加粗、节日替换了。为了便于打印,我把19周的周计划教案全部合并在一起PDF。制作打印用PDF

7c9016f4019a43f3977c11cd2e785dc1.png

思路

1、周计划是单独打印一张,因此要在第2页插入空白页,

2、教案有3页,需要双面打印,因此要最后一个表格(第三个教案表格)后面插入空白页。

c5fb30877fee45a4bdabd8918ee64195.png

3、将“节日“文件夹内的docx复制到"docx合并PDF”文件夹中的”零食文件“内,每个docx在第一个表格后面插入空白,在最后一个表格后插入空白页。

ff8f6a350f354334be08335788edcb5e.png

5324f3dac72f4cc69fd32cfdce50bf60.png

420baea5ee484998ac8972d981308d37.png

docx转PDF

cc2691fed9df40d882b4d1379105a917.png

5933328ff3d643bbb76a0dccff9cd1cf.png

4、零食文件夹中的PDF合并一个打印用PDF,并删除零食文件夹

 

8af9efa11d884228ad2a1e9541295486.png

afa192b419084cfea268e1f01b931e12.png

1090fd3c8b1045688e450356eb6bfe42.png

结果:每一周的周计划教案从1+3变成了2+4页,一份是正反3张

d6f117dce3fb452f86e5a99e81bebffc.png

 

代码展示:

 

6ffe4cb84b54475c85317301bc32f56a.png

 

'''周计划+教案 所有页合并打印(学期末周计划打印)

时间:2024年4月26日
'''

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

import os
from docx2pdf import convert
from PyPDF2 import PdfMerger
from docx import Document
# from docx.enum.text import WD_BREAK



path=r'D:\test\02办公类\91周计划4份_2024年中4班\04 周计划'
old=path+r'\07节日'
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
from docx.enum.section import WD_SECTION
from docx.oxml import OxmlElement
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml
from docx.enum.section import WD_SECTION

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)

     # 找到第一个分节符(分页符)后的位置
        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
        # 在找到第三个段落文字(说明部分)位置插入一个回车符(在备注哪一行已经有分节符了,备注加2个回车,就自动到下一页,生成一个横版的空页面
        if start_index < len(doc.paragraphs):
            paragraph = doc.paragraphs[start_index]
            for _ in range(2): # 插入两次回车
                paragraph.add_run().add_break()
       
        #  # 设置页边距(横版和竖版的页边距不同,所以这里不设置
        # sections = doc.sections
        # for section in sections:
        #     section.page_width = Cm(21)  # 设置页面宽度为21厘米
        #     section.page_height = Cm(29.7)  # 设置页面高度为29.7厘米
        #     section.left_margin = Cm(3)  # 设置左页边距为3厘米
        #     section.right_margin = Cm(3)  # 设置右页边距为3厘米
        #     section.top_margin = Cm(2)  # 设置上页边距为2厘米
        #     section.bottom_margin = Cm(2)  # 设置下页边距为2厘米
                # 获取最后一个节

        # 获取文档中的所有节
        sections = doc.sections
        last_section = sections[-1]

        # 在最后一个节后面插入一个新的节
        new_section = doc.add_section(WD_SECTION.NEW_PAGE)

          
        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年6月周计划教案合并版(双面打印专用).pdf')
merger.write(output_file)
merger.close()

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

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

 

 

打印测试

1、前期我把Word里面表格不留边距(上下左右边距0),生成PDF再打印,会自动保留0.7CM的边,所以我一直认为docx转PDF后会缩小边距。Word打印的内容更大,PDF打印的内容会缩小一点点。

2、生成打印用的周计划教案PDF后,我先打印一周6面pdf,看看打印的表格是不是还是缩小了

 

打印软件——ADOBE ACROBAT

9e32f87d6d564a49a92f25161fc6f24f.png

5039e8afeb244712a82036de848110af.png

我用废纸打印的,就没有选双面打印。实际上交的纸质周计划教案是双面打印。

 

 

关于PDF打印的结论是:

一、doc转PDF显示加粗

1.PDf预览时,宋体显示不加粗,

ebe8ce5ed43547e9ab5c4f4eb9fd5d43.png

2.但文件夹阅览可以看到宋体加粗

687436d3f6e94b2d9034fda7b3a18148.png

3.PDF打印后有加粗

d87b3a90651e4fa3be6c721689757e2a.png

二、Word需要预留边距

   

 第1-2页:周计划页面的边距测算

1、WORD模板上的边距

9956d217d181402e8d8b0010f790175e.png

2、实际打印的边距

a00ad6b6730044c29e6e70b5ad500863.png

分析:打印纸的左右两侧的边距是1CM,上下的边距是1.5CM(考虑有页眉、分页符,可能页边距实际也是1CM)

 

第3-6页:教案页面的边距测算

1、WORD模板上的边距

9853d8274d744577b252475f5aa508ae.png

2、实际打印的边距

604d670f47a043e0af9ce3294c6269bb.png

分析:

打印纸的左右两侧的边距分别是2.86和3.17CM,上边横线是页眉1.5,上边到“教学计划”大约是2.54,但实际“教学计划”打印在2.5位置处,下边距考虑分页符,表格没有撑满等因素,基本符合1.65CM的边距。。

结论:  

只要Word里面预先保留0.7CM以上的上下左右边距,在生成PDF后,用WPS和Acobat打开PDF。选择“实际大小”打印,就会打印出与和docx打印一样大小的文字、表格框。

 

感悟:

终于终于,把周计划系列的资料全部厘清了,再遇到每学期一次的教案备课、贴墙、网页上传、期末打印或者随机出现的教案文字微调,就可以用这一系列的代码来实现了!!!

e270e0d670674e34b5c14c3587c9a028.png

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1627531.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

vue项目中基于fabric 插件实现涂鸦画布功能

vue项目中基于fabric 插件实现涂鸦画布功能 一、效果图二、安装依赖三、main.js引入四、主要代码 一、效果图 二、安装依赖 npm install fabric 三、main.js引入 import fabric from fabric Vue.use(fabric);四、主要代码 //封装成了一个组件 <template><el-dialogt…

atlas 500容器(ubuntu20.04)搭建

1.docker 及环境搭建略 2.宿主机驱动安装略 3.宿主机中能正确使用npu-smi 4.docker 拉取略 5.docker 容器启动 docker run -itd --device/dev/davinci0 --device/dev/davinci_manager --device/dev/devmm_svm --device/dev/hisi_hdc -v /run/board_cfg.ini:/run/b…

springboot如何使用RedisTemplate

第一步&#xff1a;创建一个spring boot项目 第二步&#xff1a;pom导入redis相关依赖 <!--reids依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId> </depen…

swagger xss漏洞复现

swagger xss漏洞复现 文章目录 swagger xss漏洞复现漏洞介绍影响版本实现原理漏洞复现修复建议: 漏洞介绍 Swagger UI 有一个有趣的功能&#xff0c;允许您提供 API 规范的 URL - 一个 yaml 或 json 文件&#xff0c;将被获取并显示给用户 根本原因非常简单 - 一个过时的库Dom…

「51媒体」城市推介会,地方旅游推荐,怎么做好媒体宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 城市推介会和地方旅游推荐是城市形象宣传的重要组成部分&#xff0c;通过有效的媒体宣传可以提升城市的知名度和吸引力。&#xff1a; 一&#xff0c;活动内容层面&#xff1a; 突出亮点…

修改后门ctime | Linux 后门系列

0x00 前情提要 在 alias 后门 &#xff5c; Linux 后门系列一文中&#xff0c;我们为了让后门完美一些&#xff0c;修改了后门文件的 atime、mtime&#xff0c;但是 ctime 一直没有办法修改&#xff0c;今天我们来把这一块补齐&#xff0c;让后门更加完美 atime -> access t…

数据结构:最小生成树(Prim算法和Kruskal算法)、图的最短路径(Dijkstra算法和Bellman-Ford算法)

什么是最小生成树&#xff1f;Prim算法和Kruskal算法是如何找到最小生成树的&#xff1f; 最小生成树是指在一个连通图中&#xff0c;通过连接所有节点并使得总权重最小的子图。 Prim算法和Kruskal算法是两种常用的算法&#xff0c;用于寻找最小生成树。 Prim算法的步骤如下&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-6.3

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

User Agent 解析:它是什么以及工作原理

什么是User Agent? UserAgent&#xff0c;简称UA&#xff0c;是一个使服务器能够识别用户使用的浏览器类型、版本以及运行浏览器的操作系统等信息的字符串。它作为浏览器请求头部信息的一部分发送给服务器&#xff0c;以便服务器可以返回合适格式和版本的内容。 跟Cookie一样…

x264 编码器源码分析综述

================================================================================ 系列文章 x264配置文章链接🔗Windows11编译x264源码https://blog.csdn.net/yanceyxin/article/details/135035650Mac调试x264源码https://blog.csdn.net/yanceyxin/article/details

想要应聘前端工程师——了解前端招聘需求

市场对前端工程师的需求依然旺盛。所谓知己知彼,百战不殆,分析各个公司对前端工程师的招聘需求,一方面可以了解到前端各细分领域在企业的需求情况,调整自己对岗位和薪资的期待,另一方面可以获得各种前端技术在企业中的应用情况,调整自己的学习和面试准备方向。因篇幅所限…

外网如何进行端口映射?

外网端口映射是一种网络技术&#xff0c;通过将外部网络请求映射到内部网络的指定端口&#xff0c;实现对内部网络资源的远程访问。它在各种应用场景中发挥着重要作用&#xff0c;为企业和个人提供了便捷的远程连接方式。本文将介绍外网端口映射的原理和应用&#xff0c;并重点…

《辐射4》次世代版本上线

B社刚刚发布了《辐射4》次世代版本&#xff0c;带来了许多令人期待的更新内容。这次更新的亮点包括新创作俱乐部内容如飞地遗迹和盔甲武器捆绑包&#xff0c;包括X-02动力装甲、地狱火动力装甲、重型焚烧炉、特斯拉大炮等。同时&#xff0c;新增了万圣节工作坊内容&#xff0c;…

阿里巴巴瓴羊基于 Flink 实时计算的优化和实践

摘要&#xff1a;本⽂整理⾃阿里云智能集团技术专家王柳焮⽼师在 Flink Forward Asia 2023 中平台建设专场的分享。内容主要为以下四部分&#xff1a; 阿里巴巴瓴羊基于 Flink 实时计算的平台演进Flink 能力优化与建设基于 Flink 的最佳实践未来规划 1. 阿里巴巴瓴羊基于 Flink…

python使用opencv对图像的基本操作(2)

13.对多个像素点进行操作&#xff0c;使用数组切片方式访问 img[i,:] img[j,:] #将第j行的数值赋值给第i行 img[-2,:]或img[-2] #倒数第二行 img[:,-1] #最后一列 img[50:100,50:100] #50-100行&#xff0c;50-100列&#xff08;不包括第100行和第100列&#xff09; img[:100…

陪丨玩丨系丨统前后端开发流程,APP小程序H5前后端源码交付支持二开!多人语音,开黑,线上线下两套操作可在一个系统完成!

100%全部源码出售 官网源码APP源码 管理系统源码 终身免费售后 产品免费更新 产品更新频率高 让您时刻立足于行业前沿 软件开发流程步骤及其作用&#xff1a; 软件开发是一个复杂而系统的过程&#xff0c;涉及多个环节&#xff0c;以下是软件开发的主要流程步骤及其作用…

合合信息引领AI场景化革新,供应链金融智能化审核全面升级!

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 随着供给侧结构性改革的深入推进和产业结构的不断升级&#xff0c;金融机构在监管部门的指导下&#xff0c;积极拓展供应链金融业务&#xff0c;取得了显著成效。这一举措有效缓解了上下游中小企业的融资困难&a…

01 校园人脸识别项目

前言 主要是来自于 朋友的需求 项目概况 项目情况如下 包含一个后端服务, 一个前端服务, 一个微信小程序服务 主要的业务流程如下 整体模型设计如下 一个班级下面 N 个学生, 一个班级根据实际情况老师进行课程安排 上课的时候 学生去对应的课程实验室进行上课, 上课…

HPE Aruba Networking推出新一代Wi-Fi 7接入点 助力企业高效应对安全、AI与物联网挑战

HPE ArubaNetworking推出的全新Wi-Fi 7接入点&#xff0c;提供全面的AI就绪边缘IT解决方案&#xff0c;旨在为用户和物联网设备提供安全、高性能的连接服务&#xff0c;以实现数据的捕获和路由&#xff0c;从而满足AI训练和推理需求 休斯顿-2024年4月23日-慧与科技(NYSE: HPE)近…

2024 java easyexcel poi word模板填充数据,多个word合成一个word

先看效果 一、准备工作 1.word模版 2.文件路径 二、pom依赖 <!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.7</version></dependency><depe…