【办公类-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页内容删光

代码展示:

'''周计划第一页的合并打印(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 Documentpath=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 Cmprint('--------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 + 1break# 删除第一个分节符后的段落,标题日期,这是教案表格还在的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._elementp.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周的周计划第一页

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

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

相关文章

汽车功能安全整体方法

摘 要 ISO26262道路车辆功能安全标准已经制定实践了多年,主要目标是应对车辆的电子和电气(E/E)系统失效。该方法践行至今,有些系统功能安全方法已经成熟,例如电池管理系统(BMS),并且…

DockerFile遇到的坑

CMD 命令的坑 dockerfile 中的 CMD 命令在docker run -it 不会执行 CMD 命令。 FROM golang WORKDIR / COPY . ./All-in-one CMD ["/bin/sh","-c","touch /kkk.txt && ls -la"] RUN echo alias ll"ls -la" > ~/.bashrc(不…

win32汇编弹出对话框

之前书上有一个win32 asm 的odbc例子,它有一个窗体,可以执行sql;下面看一下弹出一个录入数据的对话框; 之前它在.code段包含2个单独的asm文件,增加第三个,增加的这个里面是弹出对话框的窗口过程&#xff0…

一文快速掌握docker的理念和基本使用

写在文章开头 写于一个周末,在复盘梳理文章时候发现这一篇关于早期了解docker时记录的文档,仔细阅读了一下,为了保证文章更加清晰以便读者使用。故再次重新一次梳理一次,通过这篇文章,你将会对docker的基本理念和基础…

MATLAB的使用(一)

一,MATLAB的编程特点 a,语法高度简化; b,脚本式解释型语言; c,针对矩阵的高性能运算; d,丰富的函数工具箱支持; e,通过matlab本体构建跨平台; 二,MATLAB的界面 工具栏:提供快捷操作编辑器…

window 查看特定端口占用并停掉

要查看Windows上特定端口的占用情况并停止相关进程,你可以使用以下步骤: 查看端口占用: 首先,你可以使用netstat命令来查看特定端口的占用情况。假设你想要查看端口号为8080的情况,你可以运行以下命令: net…

Unity类银河恶魔城学习记录10-14 p102 Applying damage to skills and clean up源代码

Alex教程每一P的教程原代码加上我自己的理解初步理解写的注释,可供学习Alex教程的人参考 此代码仅为较上一P有所改变的代码 【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili Entity.cs using System.Collections; using System.Collections.Generic;…

Jenkins流水线将制品发布到Nexus存储库

1、安装jenkins(建议别用docker安装,坑太多) docker run -d -p 8089:8080 -p 10241:50000 -v /var/jenkins_workspace:/var/jenkins_home -v /etc/localtime:/etc/localtime --name my_jenkins --userroot jenkins/jenkins:2.449 坑1 打开x…

免费阅读篇 | 芒果YOLOv8改进110:注意力机制GAM:用于保留信息以增强渠道空间互动

💡🚀🚀🚀本博客 改进源代码改进 适用于 YOLOv8 按步骤操作运行改进后的代码即可 该专栏完整目录链接: 芒果YOLOv8深度改进教程 该篇博客为免费阅读内容,直接改进即可🚀🚀&#x1f…

设计模式学习笔记 - 设计原则与思想总结:2.运用学过的设计原则和思想完善之前性能计数器项目

概述 在 《设计原则 - 10.实战:针对非业务的通用框架开发,如何做需求分析和设计及如何实现一个支持各种统计规则的性能计数器》中,我们讲解了如何对一个性能计数器框架进行分析、设计与实现,并且实践了一些设计原则和设计思想。当…

Axure 中继器的Repeater属性的使用

dataCount 中继器当中存在多少条数据,总数。 visibleltemCount 中继器列表中可见项数量,也就是当前页面显示的数量。 pageCount 获取中继器分页的总数量,即能够获取分页后共有多少页。 pageIndex 获取中继器当前显示的页码

攻防世界新手模式例题(Web)

PHP2 首先我们查看页面,查看前端代码 发现均没有什么有效信息,由题目可知,此问题与php相关,于是我们可以看一下他的index.php文件 查看时用?index.phps 补充知识:phps文件就是php的源代码文件,通常用于…