Python 调整PDF文件的页面大小

在处理PDF文件时,我们可能会遇到这样的情况:原始PDF文档不符合我们的阅读习惯,或者需要适配不同显示设备等。这时,我们就需要及时调整PDF文档中的页面尺寸,以满足不同应用场景的需求。

利用Python语言的高效性和灵活性,再结合Spire.PDF for Python 库的强大功能,我们可以通过Python代码轻松实现对PDF页面的批量调整。在这篇文章中,我们将介绍两种调整PDF页面大小的方法:

目录

1. 将PDF页面尺寸调整为常见标准尺寸

2. 将PDF页面尺寸调整为自定义尺寸


首先,需要先将Spire.PDF for Python库安装到项目中。pip命令:

pip install Spire.PDF

使用Python 调整PDF页面大小的步骤

Spire.PDF for Python 库提供的调整PDF页面大小的方式是将原PDF文档的内容复制到指定尺寸的新的PDF文档的页面上。主要实现步骤为:

  1. 加载原始PDF文档,然后创建一个新的PDF文档;
  2. 循环遍历原始PDF文档中的每一页;
  3. 使用方法在新的PDF文档中添加指定大小的页面;
  4. 基于原始PDF文档中页面的内容来创建模板;
  5. 将模板绘制到新 PDF 文档的页面上;
  6. 保存新PDF文档。

Spire.PDF for Python 支持A1, A2, A3, A4, B1, B2, B3, B4等标准页面尺寸,也支持自定义页面尺寸。下面将提供示例代码分别介绍:

1. 将PDF页面尺寸调整为常见标准尺寸

from spire.pdf.common import *
from spire.pdf import *# 加载原始PDF文档
originalPdf = PdfDocument()
originalPdf.LoadFromFile("报告.pdf")# 创建新PDF文档
newPdf = PdfDocument()# 遍历原始PDF文档中的页面
for i in range(originalPdf.Pages.Count):page = originalPdf.Pages.get_Item(i)# 在新PDF文档中添加A4大小的页面newPage = newPdf.Pages.Add(PdfPageSize.A4(), PdfMargins(0.0))# 创建PdfTextLayout实例layout = PdfTextLayout()# 将文本布局设置为单页,以确保内容能够正确适应页面大小layout.Layout = PdfLayoutType.OnePage# 基于原始PDF页面创建模板template = page.CreateTemplate()# 将模板绘制到新PDF文档的页面上template.Draw(newPage, PointF.Empty(), layout)# 保存新PDF文档
newPdf.SaveToFile("调整PDF页面为A4大小.pdf")
newPdf.Close()

生成文件(A4纸规格为210mm×297mm):

2. 将PDF页面尺寸调整为自定义尺寸

from spire.pdf.common import *
from spire.pdf import *# 加载原始PDF文档
originalPdf = PdfDocument()
originalPdf.LoadFromFile("报告.pdf")# 创建新PDF文档
newPdf = PdfDocument()#创建PdfUnitConvertor类的对象,用于转换不同的测量单位
unitCvtr = PdfUnitConvertor()# 将自定义尺寸的单位由毫米转换为点数(磅)
width = unitCvtr.ConvertUnits(180, PdfGraphicsUnit.Millimeter, PdfGraphicsUnit.Point)
height = unitCvtr.ConvertUnits(225, PdfGraphicsUnit.Millimeter, PdfGraphicsUnit.Point)# 创建一个自定义宽度和高度的SizeF对象
size = SizeF(width, height)# 遍历原始PDF中的页面
for i in range(originalPdf.Pages.Count):page = originalPdf.Pages.get_Item(i)# 在新PDF文档中添加自定义尺寸(180*225mm)的页面newPage = newPdf.Pages.Add(size, PdfMargins(0.0))# 创建PdfTextLayout实例layout = PdfTextLayout()# 将文本布局设置为单页,以确保内容能够正确适应页面大小layout.Layout = PdfLayoutType.OnePage# 基于原始PDF页面创建模板template = page.CreateTemplate()# 将模板绘制到新PDF文档的页面上template.Draw(newPage, PointF.Empty(), layout)# 保存新PDF文档
newPdf.SaveToFile("自定义PDF页面大小.pdf")
newPdf.Close()

生成文件(此处自定义尺寸为180mm×225mm):


通过以上两段示例代码,我们可以根据需求将PDF页面调整为想要的尺寸。除此之外,Spire.PDF for Python库还支持调整PDF页边距、纸张方向等。使用过程中遇到任何问题,都可以前往论坛交流。

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

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

相关文章

Linux--网络通信(一)概述

网络通信概述 网络通信本质上是一种进程间通信,是位于网络中不同主机上的进程之间的通信,属于 IPC 的一种, 通常称为 socket IPC。所以网络通信是为了解决在网络环境中,不同主机上的应用程序之间的通信问题。 大概可以分为三个层…

23种设计模式之一————外观模式详细介绍与讲解

外观模式详细讲解 一、概念二、 外观模式结构核心思想及解释模式的UML类图模式角色应用场景模式优点模式缺点 三、实例演示图示代码展示运行结果 一、概念 外观模式(Facade Pattern)是一种结构型设计模式,它提供了一个统一的接口&#xff0c…

【问题解决】Android Studio Jellyfish新建Kotlin项目后Gradle Sync及Maven下载很慢

创建新项目之后,Gradle Sync和Build都很慢,因为下载Gradle和Maven等工具。 代码默认配置 settings.gradle.kts pluginManagement {repositories {google {content {includeGroupByRegex("com\\.android.*")includeGroupByRegex("com\\.g…

Android Activity 设计详解

文章目录 Android Activity 设计说明1. Activity 的生命周期2. Activity 的启动模式3. Activity 的通信4. Activity 的布局和视图管理5. Activity 的配置变化处理6. Activity 的保存和恢复状态7. Activity 的任务和返回栈 总结 Android Activity 设计说明 在 Android 中&#…

Ansible01-Ansible的概述、实验环境初始化、Inventory

目录 写在前面1. Ansible是什么1.1 简介与来历1.2 Ansible的特点1.3Ansible的架构与工作流程1.3.1 ansible 任务执行模式1.3.2 ansible 执行流程1.4 Ansible的模块 2. Ansible实验初始化2.1 实验环境2.2Ansible的安装2.2.1 Ansible的程序结构 2.3 修改Ansible配置文件2.3.1 配置…

【408精华知识】页、页面、页框、页帧、内存块、物理块、物理页面还傻傻分不清?

在做题过程中,我们经常能看到页、页框、块等概念,初接触时,常感觉傻傻分不清,这篇文章将简洁地介绍它们之间的联系与区别。 这些概念之间的根本区别,在于是物理上的概念还是逻辑上的概念,也即是虚地址还是实…

汇聚荣:新手做拼多多应该注意哪些事项?

新手在拼多多开店,面临的是竞争激烈的市场和复杂的运营规则。要想在这个平台上脱颖而出,必须注意以下几个关键事项。 一、市场调研与定位 深入了解市场需求和竞争对手情况是新手开店的首要步骤。选择有潜力的细分市场,并针对目标消费者群体进…

华为云服务培训

一、存储类服务实践 是什么: 云硬盘( Elastic Volume Service )是一种为 ECS(弹性云服务器)、BMS(裸金属服务器) 等计算服务提供持久性存储的服务。 作用: 它通过数据冗余和缓存加速等多项技术&#xf…

Spring系列-03-BeanFactory和Application接口和相关实现

BeanFactory BeanFactory和它的子接口们 BeanFactory 接口的所有子接口, 如下图 BeanFactory(根容器)-掌握 BeanFactory是根容器 The root interface for accessing a Spring bean container. This is the basic client view of a bean container; further interfaces such …

windows 11上自带时间管理-番茄工作法

在 Windows 11 中,你可以使用 专注 功能来最大程度地减少干扰,帮助你保持专注。 专注的工作原理 专注时段打开后,将会出现以下情况: 专注计时器将显示在屏幕上 请勿打扰将打开 任务栏中的应用不会闪烁发出提醒 任务栏中应用的…

SpringCloud系列(23)--手写实现负载轮询算法

前言:在上一篇文章中我们介绍了关于负载轮询算法的原理以及看了源代码,而本章节内容则是着重于我们自己手写一个负载轮询算法 1、分别编写provider-payment8001、provider-payment8002这两个子项目的PaymentController类,增加一个/payment/lb…

Py之llama-parse:llama-parse(高效解析和表示文件)的简介、安装和使用方法、案例应用之详细攻略

Py之llama-parse:llama-parse(高效解析和表示文件)的简介、安装和使用方法、案例应用之详细攻略 目录 llama-parse的简介 llama-parse的安装和使用方法 1、安装 2、使用方法 第一步,获取API 密钥 第二步,安装LlamaIndex、LlamaParse L…

<string.h>中部分库函数的模拟实现

前言 嗨&#xff0c;我是firdawn&#xff0c;本章将简单介绍&#xff0c;<string.h>中部分库函数的模拟实现&#xff0c;如strncpy&#xff0c;strncat&#xff0c;memcpy&#xff0c;memmove。在本文片末&#xff0c;还讲简单介绍判断机器大小端的函数实现&#xff0c;…

VSCode SAP Systems配置HTTPS访问SAP

第一次访问提示&#xff0c;Self-Signed 证书 解决办法&#xff1a;https访问SAP Fiori网站&#xff0c;导出SSL证书为DER格式保存到硬盘上 双击DER文件&#xff0c;导入到系统 退出VSCode&#xff0c;再次启动 Test Connection, 提示 The system URL is using a hostname …

服务器攻防-中间件安全,weblogic(没怎么搞懂)

1.weblogic-工具 jboss 1.弱口令 直接输入admin就就去了 2.反序列化&#xff08;不是很懂java) jenkins glassfish 读密码文件 读取 就可以知道它的密码 我们就可以写脚本

使用DataGrip连接跳板机后再连接远程服务器的mysql数据库

相比配置本地数据库就是多了一步SSH/SSL配置。 添加新的mysql连接&#xff0c;选择SSH/SSL&#xff0c;勾选Use SSH tunnel&#xff1a; 点击右边的…配置跳板机连接&#xff0c;输入账号密码&#xff0c;然后保存&#xff1a; 接着配置General&#xff0c;里面填上要连接的数…

一款数字化管理平台源码:云MES系统(附架构图、流程)技术架构:springboot + vue-element-plus-admin

制造生产企业打造数字化生产管控的系统&#xff0c;从原材料、生产报工、生产过程、质检、设备、仓库等整个业务流程的管理和控制&#xff0c;合理安排生产计划、实时监控生产、优化生产工艺、降低不良产出和运营成本&#xff1b; 技术架构&#xff1a;springboot vue-elemen…

DHT11获取数据传输到PC端

1.DHT11的时序数据 a : dht 1 b &#xff1a;dht 0延时30ms c&#xff1a; dht 1 卡d点&#xff1b;while(dht1); 卡e点 while(!dht) 卡f点&#xff1a;while(dht) 卡g点&#xff1a;while(!dht) 有效数据都是高电平&#xff0c;持续时间不一样&#xff0c;50us读&#…

Go语言实现人脸检测(Go的OpenCV绑定库)

文章目录 OpenCVGithub官网安装环境变量 Go的OpenCV绑定库Github文档安装搜索视频设备ID显示视频检测人脸 OpenCV Github https://github.com/opencv/opencv/ 官网 https://opencv.org/ 安装 brew install opencv brew upgrade opencv安装目录 cd /usr/local/opt/opencv…

子比主题ACG美化插件[全开源]

WordPress插件是一种可以扩展和增强WordPress网站功能的应用程序。子比主题ACG美化插件听起来像是一个专门为ACG&#xff08;动画、漫画、游戏&#xff09;爱好者设计的美化插件&#xff0c;它可能包含多种功能来改善网站的外观和用户体验。 内置功能开关100意味着这个插件提供…