通过Python设置及读取PDF属性,轻松管理PDF文档

PDF文档属性是嵌入在PDF文档中的一些与文档有关的信息,如作者、制作软件、标题、主题等。PDF属性分为默认属性和自定义属性两种,其中默认属性是一些固定的文档信息,部分信息自动生成(如文件大小、页数、页面大小等信息),其他信息则可以进行设置。设置这些文档属性可以帮助文档阅读者快速地掌握文档的主要内容以及关键信息,同时方便对文档进行整理归纳。本文将介绍如何使用Python通过简单的操作设置PDF文档属性

  • 设置PDF文档默认属性和自定义属性
  • 获取PDF文档默认属性和自定义属性

本文所使用的方法需要用到Spire.PDF for Python,一个PDF文档处理API,可通过官网获取或通过PyPI安装:

pip install Spire.PDF

设置PDF文档默认属性和自定义属性

使用 PdfDocument.DocumentInformation 属性可以获取PDF文档的属性信息(PdfDocumentInformation对象),接着使用 PdfDocumentInformation 类下的属性以及PdfDocumentInformation.SetCustomProperty() 方法可对PDF文档的默认属性和自定义属性进行设置。下面是示例:

  1. 创建 PdfDocument 对象并使用 PdfDocument.LoadFromFile() 方法加载PDF文档。
  2. 通过 PdfDocument.DocumentInformation 属性获取该PDF文档的属性。
  3. 通过 PdfDocumentInformation 下的属性设置PDF默认属性。
  4. 使用 PdfDocumentInformation.SetCustomProperty() 方法设置PDF自定义属性。
  5. 使用 PdfDocument.SaveToFile() 方法保存PDF文档。

代码示例
Python

from spire.pdf import *
from spire.pdf.common import *

# 创建PdfDocument对象并载入PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("示例.pdf")

# 获取PDF文档属性
properties = pdf.DocumentInformation

# 设置PDF默认属性
properties.Author = "乔林"
properties.Creator = "PDF制作器"
properties.Keywords = "数据库;云数据库"
properties.Subject = "云数据库及其优势介绍"
properties.Title = "云数据库的力量:强化数字化企业"
properties.Producer = "PDF制作器 1.3"

# 设置PDF自定义属性
properties.SetCustomProperty("公司", "科技有限公司")
properties.SetCustomProperty("标签", "数据服务,数据储存,云数据库")

# 保存PDF文档
pdf.SaveToFile("PDF属性.pdf")
pdf.Close()

设置效果
设置PDF文档默认属性和自定义属性

获取PDF文档默认属性和自定义属性

获取PDF文档属性也可以通过类似的操作。在获取PDF文档属性信息后,直接通过 PdfDocumentInformation 类下的属性获取指定的默认属性内容,自定义属性内容则可以通过 PdfDocumentInformation.GetCustomProperty() 方法获取。下面是示例:

  1. 创建 PdfDocument 对象并使用 PdfDocument.LoadFromFile() 方法加载PDF文档。
  2. 通过 PdfDocument.DocumentInformation 属性获取该PDF文档的属性。
  3. 通过 PdfDocumentInformation 类下的属性获取特定属性。
  4. 使用 PdfDocumentInformation.GetCustomProperty() 方法获取特定的自定义属性。
  5. 输出属性内容。

代码示例
Python

from spire.pdf import *
from spire.pdf.common import *

# 创建PdfDocument对象并载入PDF文档
pdf = PdfDocument()
pdf.LoadFromFile("PDF属性.pdf")

# 获取PDF文档属性
properties = pdf.DocumentInformation

# 创建字符串
information = ""

# 获取默认属性
information += "作者: " + properties.Author
information += "\n标题: " + properties.Title
information += "\n主题: " + properties.Subject
information += "\n关键字: " + properties.Keywords
information += "\n应用程序: " + properties.Creator
information += "\nPDF 制作程序: " + properties.Producer

# 获取自定义属性
information += "\n公司: " + properties.GetCustomProperty("公司")
information += "\n标签: " + properties.GetCustomProperty("标签")

# 输出文档属性
print(information)
pdf.Close()

输出结果
获取PDF文档默认属性和自定义属性

以上内容介绍了如何使用Python设置和获取PDF文档的默认属性和自定义属性,帮助文档管理及文档识别。Spire.PDF for Python还支持许多其他功能,前往Spire.PDF for Python教程查看更多内容。

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

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

相关文章

【ruoyi】微服务关闭登录验证码

登录本地的nacos服务,修改:配置管理-配置列表-ruoyi-gateway-dev.yml 将验证码的enabled设置成false,即可

c语言从入门到实战——初识指针

初识指针 前言1. 内存和地址1.1 内存1.2 究竟该如何理解编址 2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引用操作符(*)2.2.1 指针变量2.2.2 如何拆解指针类型2.2.3 解引用操作符 2.3 指针变量的大小 3. 指针变量类…

酷柚易汛ERP - 序列号跟踪表

1、应用场景 对于3C数码、医疗器械等行业,商品价值高且需要进行售后服务,需要对商品进行序列号管理,通过序列号跟踪表可查询每个序列号入库、出库、退货、调拨、盘点等流向。 2、主要操作 打开【仓库】-【序列号跟踪表】(系统设…

c++-哈希

文章目录 前言一、unordered系列关联式容器1、unordered_map2、性能测试 二、哈希1、哈希概念2、哈希冲突3、哈希冲突解决3.1 闭散列3.2 开散列3.3 字符串Hash函数3.4 哈希桶实现的哈希表的效率 三、哈希表封装unordered_map和unordered_set容器1、unordered_map和unordered_se…

查看dll是32位还是64位

根据资料,用记事本打开dll文件;找到字符串 PE,其后不远如果出现L,是32位;字符串PE后出现 d? 是64位; 打开一个看一下;这个是32位; 这是从网上看的; 然后用dumpbin.exe工…

漏洞复现--IP-guard flexpaper RCE

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

基于SSM的超市积分管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Vue3 ref函数和reactive函数

一、ref函数 我们在setup函数中导出的属性和方法虽然能够在模板上展示出来,但是并没有给属性添加响应式,因此,我们需要使用ref函数来为我们的数据提供响应式。 (一)引入ref函数 import { ref } from "vue"…

【微信小程序】授权登录流程解析

目录 微信授权登录流程 1. 官方图示流程详解 2. 代码登录流程拆解 2.1 前端代码示例讲解 2.2 后端代码示例讲解 2.3 代码登录流程拆解 🌟 3. 表情包存储展示(扩展) 附议 微信授权登录流程 1. 官方图示流程详解 ① 微信服务器验证&a…

数据——最为直接的答案

身处于这样一个数字化快速发展、竞争强烈的时代,不管是企业还是个人,大家都需要及时获取前沿动态信息,密切关注市场的变化。但是,在不计其数的企业中,到底行业top 是哪些企业引领潮流? 只有数据能告诉你最…

Java设计模式-结构型模式-代理模式

代理模式 代理模式静态代理动态代理JDK动态代理CGlib动态代理 代理模式 创建一个代理对象来控制对原始对象的访问,可以用来扩展原始对象的功能,同时保护原始对象 一般使用代理模式的目的有两个: 保护目标对象增强目标对象 代理模式有两种实现…

彻底解决Win11锁屏界面黑屏或者图片不变化

问题描述 今天不知道干了啥,一顿操作后,win11的锁屏界面的图片就变成固定的了,原来是有windows聚焦的图片在自动变化的效果,现在没有了。然后就各种搜索求助,第二顿操作之后,锁屏界面彻底变成了黑色&#…

AI:78-基于深度学习的食物识别与营养分析

🚀 本文选自专栏:人工智能领域200例教程专栏 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的代码,详细讲解供大家学习,希望可以帮到大家。欢迎订阅支持,正在不断更新中,…

【Android】配置Gradle打包apk的环境

目录 生成jks签名文件 配置build.gradle(app) 打包 生成jks签名文件 Java 密钥库(.jks 或 .keystore)是用作证书和私钥存储库的二进制文件。用于为用户设备上安装的 APK 签名的密钥。 详细解释请看官方文档: 为应用…

Spring IOC - Bean的生命周期之实例化

在Spring启动流程文章中讲到,容器的初始化是从refresh方法开始的,其在初始化的过程中会调用finishBeanFactoryInitialization方法。 而在该方法中则会调用DefaultListableBeanFactory#preInstantiateSingletons方法,该方法的核心作用是初始化…

CCF CSP认证历年题目自练Day45

这几天搞泰迪杯数据分析技能赛去了。等拿国奖了就出一期关于泰迪杯的。 题目 试题编号: 201703-3 试题名称: Markdown 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   Markdown 是一种很流行的轻量级标记…

Redis键(Keys)

前言 在 Redis 中,键(Keys)是非常重要的概念,它们代表了存储在数据库中的数据的标识符。对键的有效管理和操作是使用 Redis 数据库的关键一环,它直接影响到数据的存取效率、系统的稳定性和开发的便利性。 本文将深入…

Android开发中自定义圆盘中的加速器的表盘

话不多说先上最终的效果图: 本篇文章主要介绍怎么自定义一个带刻度的圆盘,主要包含绘制内外圆环以及刻度的绘制。具体的实现如下: package com.dz.common.view;import android.animation.ValueAnimator; import android.content.Context; im…

在报错中学python something

这里写目录标题 动手学深度学习pandas完整代码数据处理TypeError: can only concatenate str (not "int") to str(fillna填补缺失值) 创建文件夹学习这个数据分组get_dummies实现one hot encode 动手学深度学习pandas完整代码 import osimpor…

Camtasia2024全新中文版电脑录屏工具

在这个视频的大舞台上,每一帧都是你炫耀的机会,每一秒都是让观众瞪大眼睛的瞬间。现在,让我们一起飞跃时空,用更少的时间创作更多的惊喜吧! 就算你是个小白,毫无经验,别担心,Camtas…