【办公类-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_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

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[计算机效率] 截图工具:FastStone Capture

3.19 截图工具&#xff1a;FastStone Capture FastStone Capture是一款功能强大的屏幕捕捉软件&#xff0c;体积小巧、功能强大&#xff0c;不但具有常规截图等功能&#xff0c;更有从扫描器获取图像&#xff0c;和将图像转换为PDF文档等功能。 截屏功能&#xff1a;支持全屏截…

【Python数据库】MongoDB

文章目录 [toc]数据插入数据查询数据更新数据删除 个人主页&#xff1a;丷从心 系列专栏&#xff1a;Python数据库 学习指南&#xff1a;Python学习指南 数据插入 from pymongo import MongoClientdef insert_data():mongo_client MongoClient(hostlocalhost, port27017)co…

Git变更账户、查看账户

1、变更账户 &#xff08;1&#xff09;修改当前文件夹用户 git config user.name “新用户名” git config user.email “新邮箱” &#xff08;2&#xff09;修改全局git用户 git config - -global user.name “新用户名” git config - -global user.email “新邮箱”…

计算机网络——初识网络

一、局域网与广域网 1.局域网&#xff08;LAN&#xff09; 局域网&#xff1a;即Local Area Network&#xff0c;简称LAN。Local即标识了局域⽹是本地&#xff0c;局部组建的⼀种私有⽹络。局域⽹内的主机之间能⽅便的进⾏⽹络通信&#xff0c;⼜称为内⽹&#xff1b;局域⽹和…

【c++】----STL简介string

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 4.STL的缺陷 5.string类 1. 为什么学习string类&#xff1f; 6.string类的常用接口说明&#xff08;下面我们只讲解最常用的接口&#xff09; 1.string 常见构造 2.string类的遍历 iterator 迭代器遍历 &#xff08;…

前端开发攻略---模拟后端接口返回数据,教你三种方式实现滚动到底部加载更多数据

1、演示 2、方式一&#xff1a;手动监听滚动事件 原理&#xff1a; 手动监听滚动事件的原理是通过添加滚动事件监听器&#xff0c;当页面滚动时触发相应的回调函数&#xff0c;检测页面是否已经滚动到底部&#xff0c;从而触发加载更多数据的逻辑。 优点&#xff1a; 1、相对简…

理解ROS2的动作

​ 1. 创建一个动作 目标&#xff1a; 在ROS 2软件包中定义一个动作。 1.1 新建包 设置一个 workspace 并创建一个名为 action_tutorials_interfaces 的包&#xff1a; mkdir -p ros2_ws/src #you can reuse existing workspace with this naming convention cd ros2_ws/s…

HTTPS证书申请:相关流程及注意事项

HTTPS证书&#xff08;即HTTPS证书、服务器证书&#xff09;是实现网络通信安全的重要技术产品&#xff0c;它为网站提供HTTPS加密和服务器身份验证的功能。HTTPS证书申请有那些流程&#xff1f;如何快速完成HTTPS证书申请&#xff1f;有哪些注意事项&#xff1f;本文将以沃通H…

Meta Llama 3 性能提升与推理服务部署

利用 NVIDIA TensorRT-LLM 和 NVIDIA Triton 推理服务器提升 Meta Llama 3 性能 我们很高兴地宣布 NVIDIA TensorRT-LLM 支持 Meta Llama 3 系列模型&#xff0c;从而加速和优化您的 LLM 推理性能。 您可以通过浏览器用户界面立即试用 Llama 3 8B 和 Llama 3 70B&#xff08;该…

Android优化RecyclerView图片展示:Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas,Kotlin(b)

Android优化RecyclerView图片展示&#xff1a;Glide成堆加载批量Bitmap在RecyclerView成片绘制Canvas&#xff0c;Kotlin&#xff08;b&#xff09; 对 Android GridLayoutManager Glide批量加载Bitmap绘制Canvas画在RecyclerView&#xff0c;Kotlin&#xff08;a&#xff09;-…

【哔哩哔哩笔试题汇总】2024-04-28-哔哩哔哩春招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新b站近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497…

基于Hadoop的网上购物行为分析设计与实现

2.8 数据分析及可视化 2.8.1 店铺销售情况分析 通过这里可以看出&#xff0c;该店家的数据用户访问量比较的大&#xff0c;有接近6W多条数据&#xff0c;但是通过对用户进行透视分析发现只有981位用户&#xff0c;其次就是对于用户购买次数进行分析&#xff0c;发现数据只有27…

2017年全国职业院校技能大赛高职组“信息安全管理与评估”样题

培训、环境、资料、考证 公众号&#xff1a;Geek极安云科 网络安全群&#xff1a;624032112 网络系统管理群&#xff1a;223627079 网络建设与运维群&#xff1a;870959784 移动应用开发群&#xff1a;548238632 极安云科专注于技能提升&#xff0c;赋能 2024年广东省高校的技…

2.Neo4j的搭建启动

Graph Database 图数据库 版本对应关系 官网都是高版本&#xff0c;推荐使用下载地址可以找到社区老版本&#xff1a; https://we-yun.com/doc/neo4j/ neo4j.bat 启动脚本 cypher-shell.bat 执行CQL语句的。 import文件夹可以放入excel,csv等数据文件&#xff0c;导入到…

Transformer - Layer Normalization

Transformer - Layer Normalization flyfish y x − E [ x ] V a r [ x ] ϵ ∗ γ β y \frac{x - \mathrm{E}[x]}{ \sqrt{\mathrm{Var}[x] \epsilon}} * \gamma \beta yVar[x]ϵ ​x−E[x]​∗γβ 论文 Layer Normalization import numpy as np import torch import…

交直流充电桩检测的基础知识

交直流充电桩检测是电动汽车充电设施的重要组成部分&#xff0c;其目的是确保充电桩的正常运行&#xff0c;保障电动汽车的安全充电。以下是关于交直流充电桩检测的一些基础知识。 我们需要了解什么是交直流充电桩&#xff0c;简单来说&#xff0c;交直流充电桩是一种为电动汽车…

Centos7 RPM包离线安装Nginx

查看是否安装nginx #使用命令 rpm -qa|grep 列出需要卸载的软件包 rpm -qa | grep nginx 卸载nginx #使用rpm -e 加包名删除 rpm -e nginx-release-centos-7-0.el7.ngx.noarch nginx-1.14.1-1.el7_4.ngx.x86_64 rpm -e nginx 安装nginx 其他版本步骤一样 下载rpm包In…

BTCOIN的革命之路:通过SocialFi重塑全球金融生态系统

BTCOIN的革命之路&#xff1a;通过SocialFi重塑全球金融生态系统 今日&#xff0c;BTCOIN宣布发布WEB3.0论坛引发业内现象级关注&#xff1a;作为一个倡导WEB3.0理念的数字金融平台&#xff0c;在数字货币的波澜壮阔中&#xff0c;BTCOIN以其独特的生态定位和战略愿景&#xff…

进程控制7 - exec函数族

区别1 &#xff1a;参数1—>可执行文件名 区别2 &#xff1a;参数表的传递 区别3 &#xff1a;环境表的传递 详细举例说明&#xff1a; 下面这个demo使用execl函数&#xff0c;传入path也就是execlnewpro的路径&#xff08;这里也可以写绝对路径&#xff09;&#xff0c;…

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下&#xff0c;年轻人社交不再局限于面对面&#xff0c;线上社交app已深入各大年轻人的手机中。相比于传统交友方式&#xff0c;线上社交app为用户提供了更加新奇的交友体验。同时&#xff0c;它还可以吸引更多的朋友&#xff0c;提高用户的整体交友体验…