【办公类-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.hqwc.cn/news/652246.html

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

相关文章

数据库和表创建练习

一丶要求 1.创建一个数据库db_classes 2 创建一行表db_hero 3. 将四大名著中的常见人物插入这个英雄表 二丶创建db_classes一个数据库, 使用数据库默认的字符集 create database db_classes; 三丶创建一行表db_hero 1.先切换到我们创建的db_classes;数据库中 use db_class…

按现价和不变价计算与公布的统计指标主要有哪些

在经济统计和分析工作中 , 有些指标可以直接用实物量表示 , 如粮食和工业品产量等&#xff1b;而有些指标则是用价值量表示的 , 如全国居民人均可支配收入、社会消费品零售总额、商品房销售额等。在计算价值量指标时&#xff0c;一般均要考虑采用什么价格来计算。统计上常用的价…

【HTML图片压缩网页制作】

HTML图片压缩网页制作 效果图源码下期更新预报 效果图 源码 index.html <!doctype html> <html> <head> <meta charset"utf-8"> <title>图片压缩</title> <meta name"viewport" content"widthdevice-width,…

虚拟机VMware下ROS Neotic(Ubuntu 20.04)下安装OpenCV

一、ROS安装 ROS的官方安装步骤&#xff1a; 1、noetic / Ubuntu 20.04 &#xff1a; http://wiki.ros.org/noetic/Installation/Ubuntu 2、melodic / Ubuntu 18.04&#xff1a; http://wiki.ros.org/melodic/Installation/Ubuntu 3、kinetic / Ubuntu 16.04&#xff1a; http:…

Flutter基础语法

Flutter概要 Flutter目录结构 文件夹 作用 android android 平台相关代码 ios ios平台相关代码 lib flutter相关代码&#xff0c;我们主要编写的代码就在这个文件夹中 test 用于存放测试的代码 pubspec.yaml 配置文件&#xff0c;一般存放一些第三方库的依赖 Flutt…

SpringCloud系列(17)--将服务消费者Consumer注册进Zookeeper

前言&#xff1a;在上一章节中我们把服务提供者Provider注册进了Zookeeper&#xff0c;而本章节则是关于如何将服务消费者Consumer注册进Zookeeper 1、再次创建一个服务提供者模块&#xff0c;命名为consumerzk-order80 (1)在父工程下新建模块 (2)选择模块的项目类型为Maven并…

go基础(flag、json)

go基础 基础main函数数据类型类型转换switch函数计算效率go中实现工厂模式switch flag 解析命令行参数json结构体序列化map序列化struct 反序列化 基础 main函数 package main import "log" func main() {log.Println("hello world") }cd 到 main 文件夹下…

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

OpenHarmony硬件合成方案解析

本文档主要讲解在OpenHarmony中&#xff0c;硬件合成适配的方法及原理说明。 环境说明&#xff1a; OHOS版本&#xff1a;3.1-Release及以上 一、背景介绍 1.1 什么是合成 要理解什么是合成&#xff0c;合成做了什么&#xff1f;我们先通过分解设置界面来回答这个问题: 在…

MF(推荐系统的矩阵分解技术)论文笔记

论文概述 推荐系统的矩阵分解技术可以为用户提供更为准确的个性化推荐&#xff0c;对比传统的近邻技术&#xff0c;矩阵分解技术可以纳入更多信息&#xff0c;如隐式反馈、时间效应和置信度 近邻技术&#xff1a;基于用户或物品之间的相似性进行推荐&#xff0c;当用户之间已…

SpringBoot---------整合Redis

目录 第一步&#xff1a;引入依赖 第二步&#xff1a;配置Redis信息 第三步&#xff1a;选择Spring Data Redis进行操作Redis数据库 ①操作String类型数据&#xff08;用的少&#xff09; ②操作Object类型数据&#xff08;重要&#xff01;&#xff01;&#xff01;&#x…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议&#xff1a;ICML 2021链接&#xff1a;https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别&#xff0c;这限制了它们的广泛应用。为了突破这一局限&#xff0c;本文探索了一种新的学习方法&#x…