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

 

 

背景需求:

花了十周,终于把周计划+教案的文字都写满、加粗、节日替换了。为了便于打印,我把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_BREAKpath=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_SECTIONprint('--------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 + 1break# 在找到第三个段落文字(说明部分)位置插入一个回车符(在备注哪一行已经有分节符了,备注加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.sectionslast_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.mzph.cn/pingmian/4826.shtml

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

相关文章

鸿蒙launcher浅析

鸿蒙launcher浅析 鸿蒙launcher源码下载鸿蒙launcher模块launcher和普通的应用ui展示的区别 鸿蒙launcher源码下载 下载地址如下&#xff1a; https://gitee.com/openharmony/applications_launcher 鸿蒙launcher模块 下载页面已经有相关文件结构的介绍了 使用鸿蒙编辑器D…

CMDB系统的目标

CMDB即配置管理数据库&#xff08;Configuration Management Database, CMDB&#xff09;系统被广泛应用于实现IT资产管理和IT服务管理。CMDB系统的目标是建立一个全面的、精确的信息数据库&#xff0c;用于追踪、管理和记录IT基础设施的配置信息及其相关关系&#xff0c;从而提…

OpenHarmony开发实例:【电话簿联系人Contacts】

样例简介 Contacts应用是基于OpenHarmony SDK开发的安装在润和HiSpark Taurus AI Camera(Hi3516d)开发板标准系统上的应用&#xff1b;应用主要功能是展示联系人列表&#xff0c;并点击某一列弹出联系人详细信息&#xff1b; 运行效果 样例原理 样例主要有一个list组件和dia…

Docker本地部署overleaf后,挖掘用户加密逻辑

overleaf的用户信息&#xff0c;保存在mongo数据库的users集合中。 用户密码则存在hashedPassword字段中 从开源的代码services\web\app\src\Features\Authentication\AuthenticationManager.js第303行可以找到密码加密逻辑。 本地可以通过下面的代码生成overleaf用户密码信息…

如何在每天特定的时间打开指定的网页?教你设置每天自动打开指定网页

在现代社会&#xff0c;互联网已成为我们日常生活和工作中不可或缺的一部分。随着科技的 发展&#xff0c;我们可以利用各种工具和技术来提高我们的工作效率和生活品质。其中&#xff0c;定 时自动打开指定的网址便是一个实用的功能&#xff0c;它可以帮助我们节省时间&#xf…

百万人都在求的网络安全学习路线,渗透漏洞防御总结(附图)

前言 不折腾的网络安全&#xff0c;和咸鱼有什么区别 目录 二、 前言三 、同源策略 3.1 什么是同源策略 3.2 为什么需要同源策略四 、XSS 4.1 概览 4.2 介绍 4.3 防御五 、CSRF 5.1 概览 5.2 介绍 5.3 防御六、 SQL 注入七 、流量劫持 7.1 DNS 劫持 7.2 HTTP 劫持…

【Canvas与艺术】 绘制五星红旗

【注意】 该图中五星定位和大小都是按 https://www.douyin.com/note/7149362345016380710 精确绘制的。 【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8&q…

【前端】6. JavaScript(WebAPI)

WebAPI 背景知识 什么是 WebAPI 前面学习的 JS 分成三个大的部分 ECMAScript: 基础语法部分DOM API: 操作页面结构BOM API: 操作浏览器 WebAPI 就包含了 DOM BOM. 这个是 W3C 组织规定的. (和制定 ECMAScript 标准的大佬们不是一伙人). 前面学的 JS 基础语法主要学的是 EC…

【多维动态规划】Leetcode 64. 最小路径和【中等】

最小路径和 给定一个包含非负整数的 m x n 网格 grid &#xff0c;请找出一条从左上角到右下角的路径&#xff0c;使得路径上的数字总和为最小。 说明&#xff1a;每次只能向下或者向右移动一步。 示例 1&#xff1a; 输入&#xff1a;grid [[1,3,1],[1,5,1],[4,2,1]] 输出…

手动在Ubuntu22.04上部署LAMP环境

简介 LAMP环境是常用的Web开发环境之一&#xff0c;其中LAMP分别代表Linux、Apache、MySQL和PHP。本文介绍如何在Ubuntu操作系统的ECS实例内部署LAMP环境。 准备工作 该实例必须满足以下条件&#xff1a; 实例已分配公网IP地址或绑定弹性公网IP&#xff08;EIP&#xff09;。…

关于Dockerfile镜像实例

文章目录 Dockerfile镜像实例一、构建SSH镜像1、建立工作目录2、生成镜像3、启动容器并修改root密码 二、构建systemd镜像1、建立工作目录2、生成镜像3、运行镜像容器4、测试容器systemd 三、构建Nginx镜像1、建立工作目录2、编写Dockerfile脚本3、编写run.sh启动脚本4、生成镜…

源代码加密

企业到底该如何正确选择源代码加密产品&#xff1f; 源代码加密的方法和重点到底是怎样的&#xff1f; 源代码开发环境复杂&#xff0c;涉及的开发软件、文件类型庞杂多变&#xff0c;究竟有什么源代码加密软件能够适应众多开发软件而不影响原有的工作效率&#xff1f; 相信…

个人学习总结__打开摄像头、播放网络视频的以及ffmpeg推流

前言 最近入手了一款非常便宜的usb摄像头&#xff08;买回来感觉画质很低&#xff0c;没有描述的4k&#xff0c;不过也够用于学习了&#xff09;,想着利用它来开启流媒体相关技术的学习。第一步便是打开摄像头&#xff0c;从而才能够对它进行一系列后续操作&#xff0c;诸如实…

有趣的 CSS 图标整合技术!sprites精灵图,css贴图定位

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

vue3.0(三) Vite文件目录结构及SFC语法

文章目录 Vite介绍Vite文件目录结构SFC语法SFC 语法定义bug解决 Vite介绍 为什么使用Vite&#xff1f; 表现 与Vite的ESbuild预绑定使其比使用任何其他JS绑定器都快10到100倍。这是因为它有助于提高页面速度并将CommonJS/UMD模块转换为ESM。 基于Vite文件&#xff0c;“预绑定…

深入理解Linux调试工具eBPF和strace、内存泄漏处理、Kubernetes容器调试以及C++协程的崩溃信息收集

在软件开发领域&#xff0c;无论是初级开发者还是资深工程师&#xff0c;都需要面对复杂的调试工作。本文将介绍几个重要的调试工具和技术&#xff0c;并提供实际调试方法的指导&#xff0c;包括Linux环境下的eBPF和strace&#xff0c;内存泄漏问题的处理&#xff0c;Kubernete…

RocketMq详解:一、RocketMQ 介绍及基本概念

文章目录 前言1.RocketMQ简介2.RocketMQ 特点3.核心特性4.应用场景5.RocketMQ 优势6.RocketMQ 四大核心组件6.1 NameServer1.NameServer作用2.NameServer被设计为无状态的原因3.和NameServer和Zookeeper的区别4.NameServer的高可用保障 6.2 Broker1.Broker部署方式2.高可用与负…

[Algorithm][分治 - 归并排序][排序数组][交易逆序对的总数][计算右侧小于当前元素的个数][翻转对]详细讲解

目录 0.原理讲解1.排序数组1.题目链接2.代码实现 2.交易逆序对的总数1.题目链接2.算法原理详解3.代码实现 3.计算右侧小于当前元素的个数1.题目链接2.算法原理详解3.代码实现 4.翻转对1.题目链接2.算法原理详解3.代码实现 0.原理讲解 归并排序的流程充分的体现了**「分⽽治之」…

利用RunnerGo数据大屏强化测试管理与决策

测试平台中的数据大屏在提供实时监控、统计分析、效率提升、制定策略和促进沟通等方面具有重要的意义。它为测试团队提供更全面、更直观的数据支持&#xff0c;有助于提高测试质量和效率&#xff0c;减少风险&#xff0c;并加强团队协作和沟通。 数据大屏也是RunnerGo的核心特…

用python写单链表

目录 链表的数据结构单链表操作头插入尾插入中间插入 删除查找 总结 链表的数据结构 链表是什么呢&#xff0c;来看下 链表&#xff0c;是一种数据结构。相对于数组而言&#xff0c;是不连续的一块内存空间。不仅如此&#xff0c;而且链表有多种&#xff0c;包括&#xff1a;…