生存目录-无层级

news/2025/1/7 19:18:32/文章来源:https://www.cnblogs.com/redufa/p/18522870

image


import pypdf# 输入和输出文件名
input_pdf_filename = 'file.pdf'
output_pdf_filename = 'file_with_toc.pdf'
csv_filename = 'output.csv'# 创建一个PdfWriter实例
writer = pypdf.PdfWriter()# 读取原始PDF文件
with open(input_pdf_filename, "rb") as input_pdf:reader = pypdf.PdfReader(input_pdf)writer.append_pages_from_reader(reader)# 读取CSV文件并创建书签
bookmarks = []  # 用于维护书签层级结构
toc_entries = []  # 用于存储书签信息# 读取CSV文件内容
with open(csv_filename, 'r', encoding='GBK') as csv_file:next(csv_file)  # 忽略第一行for line in csv_file:hierarchy, title, page_number = line.strip().split(',')page_number = int(page_number)# 根据父子层级关系确定层级数值level = hierarchy.count('.') + 1toc_entries.append((level, page_number, title))# 按CSV文件中的顺序,一行行添加书签并确保层级正确
for entry in toc_entries:level, page_number, title = entry# 根据层级确定父书签parent_bookmark = Noneif level > 1:# 从当前层级的上一层级开始查找父书签for i in range(level - 1, 0, -1):try:parent_bookmark = next(b for b in bookmarks if b.level == i)breakexcept StopIteration:continueelse:parent_bookmark = None# 添加书签bookmark = writer.add_outline_item(title=title, page_number=page_number, parent=parent_bookmark)bookmark.level = levelbookmarks.append(bookmark)  # 添加到书签列表# 写入新的PDF文件
with open(output_pdf_filename, "wb") as output_pdf:writer.write(output_pdf)# 完成后关闭
writer.close()

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

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

相关文章

提取pdf文档的目录1.0

import fitz # PyMuPDF import pandas as pd# 打开PDF文件 pdf_path = 控制之美.pdf # 请确保替换为正确的文件路径 document = fitz.open(pdf_path)# 初始化一个列表来存储目录信息 toc_list = []# 提取目录信息的函数 def extract_toc(toc, level=0):for item in toc:# 确保…

Redis实现消息发布订阅

对于一些解耦异步行为,往往会使用到MQ消息,但是很多时候可能由于条件受限没有可使用的消息队列供我们使用,那么则可以使用Redis来实现简单的消息发布订阅。 很简单,只需要三个类即可实现。 /*** MQ频道主题配置*/ @Configuration public class RedisConfig {@BeanMessageLi…

TenSunS对接JumpServer:如何把主机自动同步到JumpServer

🦄概述后羿 - TenSunS(原ConsulManager)是一个使用Flask+Vue开发,基于Consul的WEB运维平台,弥补了Consul官方UI对Services管理的不足;并且基于Consul的服务发现与键值存储:实现了Prometheus自动发现多云厂商各资源信息;基于Blackbox对站点监控的可视化维护;以及对自建与…

不同阻尼比下的振动形式-代码

import numpy as np import matplotlib.pyplot as plt# 定义参数 zeta = 0.5 # 阻尼比 omega_n = 1.0 # 自然频率 omega_d = omega_n * np.sqrt(1 - zeta**2) # 阻尼频率 varphi = np.pi / 4 # 相位角# 定义时间变量 t = np.linspace(0, 10, 1000) # 从0到10秒,1000个点#…

TenSunS监控REDIS:使用一个redis_exporter监控所有的Redis实例

🦄概述后羿 - TenSunS(原ConsulManager)是一个使用Flask+Vue开发,基于Consul的WEB运维平台,弥补了Consul官方UI对Services管理的不足;并且基于Consul的服务发现与键值存储:实现了Prometheus自动发现多云厂商各资源信息;基于Blackbox对站点监控的可视化维护;以及对自建与…

TenSunS监控Mysql:如何优雅的使用一个mysqld_exporter监控所有的MySQL实例

🦄概述后羿 - TenSunS(原ConsulManager)是一个使用Flask+Vue开发,基于Consul的WEB运维平台,弥补了Consul官方UI对Services管理的不足;并且基于Consul的服务发现与键值存储:实现了Prometheus自动发现多云厂商各资源信息;基于Blackbox对站点监控的可视化维护;以及对自建与…

干货!ClickHouse 24.x 集群部署(去zookeeper方案)文末附看板

主机配置 3台 12核 24G 2T存储的服务器部署去zookeeper模式的ClickHouse 24.X集群。 Ubuntu(3台服务器都要执行安装) sudo apt-get install -y apt-transport-https ca-certificates curl gnupg curl -fsSL https://packages.clickhouse.com/rpm/lts/repodata/repomd.xml.key…

KAFKA监控一条龙:史上最强Kafka看板+监控配置与告警规则

使用kafka_exporter监控多kafkakafka_exporter项目地址:https://github.com/danielqsj/kafka_exporter使用docker-compose部署多个kafka_exporter,每个exporter对接一个kafka。 注意:配置上每个kafka broker的地址,kafka3需要指定版本。version: 3.1 services:kafka-export…

Kubernetes Grafana看板更新啦!

K8S Dashboard CN 20240513 StarsL.cn Grafana官方地址: https://grafana.com/grafana/dashboards/13105 Grafana看板ID: 13105 kubernetes资源全面展示!包含K8S整体资源总览、微服务资源明细、Pod资源明细及K8S网络带宽,优化重要指标展示。 更新说明 v20240513更新了看板的所…

是时候扔掉Prometheus了,VictoriaMetrics全家桶入门与K8S部署

架构部署文件 项目仓库:https://github.com/starsliao/VictoriaMetrics本次将会部署以下组件: cd monit/master && kubectl apply -f .master├── 0.vm-single.yaml├── 1.kube-state-metrics_v2.12.0.yaml├── 1.node-exporter.yaml├── 1.vmagent.yaml├──…