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文档的页面上。主要实现步骤为:
- 加载原始PDF文档,然后创建一个新的PDF文档;
- 循环遍历原始PDF文档中的每一页;
- 使用方法在新的PDF文档中添加指定大小的页面;
- 基于原始PDF文档中页面的内容来创建模板;
- 将模板绘制到新 PDF 文档的页面上;
- 保存新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页边距、纸张方向等。使用过程中遇到任何问题,都可以前往论坛交流。
Python 调整PDF页面尺寸大小的更多相关文章
- 批量统一调整PDF页面尺寸大小
先合并所有PDF页面到同一个文件 使用福昕PDF编辑版打开合并后的文件,选择打印功能,选择福昕虚拟打印机,打印处理器选择"比例"模式 打印并保存文件 检查新文件各页面是否大小一致并 ...
- Linux下分割、合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具
Linux下分割.合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具 Linux下分割.合并PDF(pdftk) pdftk http://www.pdflabs.com/doc ...
- 【转】如何调整visio绘图区域尺寸大小
原文网址:http://jingyan.baidu.com/article/948f5924033870d80ff5f9f1.html 在使用microsoft visio软件绘图时,为了绘图的质量和 ...
- C#+ItextSharp 查看pdf文件页面尺寸
1# Nuget下载itextSharp,下载到本地 pm>Install-Package iTextSharp -Version 5.5.10 2# 引用dll,添加命名空间 using iT ...
- PDF 补丁丁 0.4.1.820 测试版发布:统一PDF的页面尺寸
之前删掉了统一页面尺寸功能,在这个版本给搬回来了. 调整页面留白的功能还没实现,请无视相关选项.
- 移动端H5页面的设计稿尺寸大小规范-转载自http://www.chinaz.com/design/2015/1103/465670.shtml
机屏幕尺寸,设计稿应该按照哪一个尺寸作为标准尺寸.现在已经有2K分辨率的手机屏幕了,设计稿是不是也要把宽高跟着最大分辨率来设计.显然不是. 请注意:(以下所有讨论内容和规范均将viewport设定为c ...
- 批量改变图片的尺寸大小 python opencv
我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的. 以上为原图片. import cv2 import os # 按指定图像大小调整尺寸 def resi ...
- 基于rem的移动端响应式适配方案(详解) 移动端H5页面的设计稿尺寸大小规范
基于rem的移动端响应式适配方案(详解) : https://www.jb51.net/article/118067.htm 移动端H5页面的设计稿尺寸大小规范 http://www.tuyiyi.c ...
- PyQt(Python+Qt)学习随笔:通过QMainWindow的resizeDocks方法调整QDockWidget停靠窗大小
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMainWindow的resizeDocks用于将QMainWind ...
- Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退
Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退 1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...
随机推荐
- CF1857B Maximum Rounding 题解
题目描述 给定一个自然数 \(n\),可以对任意一位进行四舍五入,可以进行任意次,求能得到的最大数.(这里的 \(n\) 没有前导零) 思路 首先我们发现,如果我们将其中一位进位了,那后面的所有位都会 ...
- 阿里云发布第四代神龙架构,提供业界首个大规模弹性RDMA加速能力
简介:10月20日,2021年杭州云栖大会上,阿里云发布第四代神龙架构,升级至全新的eRMDA网络架构,是业界首个大规模弹性RDMA加速能力. 10月20日,2021年杭州云栖大会上,阿里云发布第四 ...
- 21克:仅需3天,我们就用Quick BI搭建起数据驾驶舱
简介:数智化并不仅仅是大型企业才需要去思考的课题,而是摆在所有企业面前的一个可选项.借助Quick BI搭建的数据分析体系,21克实现了销售.财务.供应链等多部门业务的数据化支撑,从一份份本地化的E ...
- kubernetes pv-controller 解析
简介:pv controller是 kcm 的组件之一,它负责处理集群中的pvc/pv对象,对pvc/pv 对象进行状态转换.本文将基于 kubernetes 1.23进行解析. 作者 | 牧琦 ...
- 10个Bug环环相扣,你能解开几个?
简介:由阿里云云效主办的2021年第3届83行代码挑战赛已经收官.超2万人围观,近4000人参赛,85个团队组团来战.大赛采用游戏闯关玩儿法,融合元宇宙科幻和剧本杀元素,让一众开发者玩得不亦乐乎. ...
- 2019-4-12-VisualStudio-好用插件集合
title author date CreateTime categories VisualStudio 好用插件集合 lindexi 2019-04-12 09:37:47 +0800 2019-0 ...
- 基于FPGA的二进制转BCD
BCD码(nary-Coded Decimal)又称二-十进制代码,亦称二进码十进数.是一种二进制的数字编码形式,用二进制编码的十进制代码.这种编码形式利用了四个位元来储存一个十进制的数码. 在数字 ...
- 随机化Tricks
参阅: https://zh.cppreference.com/w/cpp/numeric/random https://zh.cppreference.com/w/cpp/header/random ...
- Mybatis学习四(分页助手pagehelper)
Mybatis学习过程中有一个很重要的插件分页助手(pagehelper) 能够运用这个插件也非常简单 1.导入jar包 [jsqlparser-2.0.jar包] [点击下载https://gith ...
- 2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k。 要进行分割操作,直到字符串s为空: 选择s的最长前缀,该前缀最多包含k个不同字符; 删除该前缀,递增分割计数。如果有剩余
2024-05-04:用go语言,给定一个起始索引为0的字符串s和一个整数k. 要进行分割操作,直到字符串s为空: 选择s的最长前缀,该前缀最多包含k个不同字符: 删除该前缀,递增分割计数.如果有剩余 ...