在处理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页边距、纸张方向等。使用过程中遇到任何问题,都可以前往论坛交流。

Python 调整PDF页面尺寸大小的更多相关文章

  1. 批量统一调整PDF页面尺寸大小

    先合并所有PDF页面到同一个文件 使用福昕PDF编辑版打开合并后的文件,选择打印功能,选择福昕虚拟打印机,打印处理器选择"比例"模式 打印并保存文件 检查新文件各页面是否大小一致并 ...

  2. Linux下分割、合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具

    Linux下分割.合并PDF(pdftk),用于Linux系统的6款最佳PDF页面裁剪工具 Linux下分割.合并PDF(pdftk) pdftk http://www.pdflabs.com/doc ...

  3. 【转】如何调整visio绘图区域尺寸大小

    原文网址:http://jingyan.baidu.com/article/948f5924033870d80ff5f9f1.html 在使用microsoft visio软件绘图时,为了绘图的质量和 ...

  4. C#+ItextSharp 查看pdf文件页面尺寸

    1# Nuget下载itextSharp,下载到本地 pm>Install-Package iTextSharp -Version 5.5.10 2# 引用dll,添加命名空间 using iT ...

  5. PDF 补丁丁 0.4.1.820 测试版发布:统一PDF的页面尺寸

    之前删掉了统一页面尺寸功能,在这个版本给搬回来了. 调整页面留白的功能还没实现,请无视相关选项.

  6. 移动端H5页面的设计稿尺寸大小规范-转载自http://www.chinaz.com/design/2015/1103/465670.shtml

    机屏幕尺寸,设计稿应该按照哪一个尺寸作为标准尺寸.现在已经有2K分辨率的手机屏幕了,设计稿是不是也要把宽高跟着最大分辨率来设计.显然不是. 请注意:(以下所有讨论内容和规范均将viewport设定为c ...

  7. 批量改变图片的尺寸大小 python opencv

    我目标文件夹下有一大批图片,我要把它转变为指定尺寸大小的图片,用pthon和opencv实现的. 以上为原图片. import cv2 import os # 按指定图像大小调整尺寸 def resi ...

  8. 基于rem的移动端响应式适配方案(详解) 移动端H5页面的设计稿尺寸大小规范

    基于rem的移动端响应式适配方案(详解) : https://www.jb51.net/article/118067.htm 移动端H5页面的设计稿尺寸大小规范 http://www.tuyiyi.c ...

  9. PyQt(Python+Qt)学习随笔:通过QMainWindow的resizeDocks方法调整QDockWidget停靠窗大小

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 QMainWindow的resizeDocks用于将QMainWind ...

  10. Python+Selenium自动化-设置浏览器大小、刷新页面、前进和后退

    Python+Selenium自动化-设置浏览器大小.刷新页面.前进和后退   1.设置浏览器大小 maximize_window():设置浏览器大小为全屏 set_window_size(500,5 ...

随机推荐

  1. KubeMeet|聊聊新锐开源项目与云原生新的价值聚焦点

    ​简介: 10 月 16 日上海,OAM/KubeVela.OpenKruise.OCM 三大开源项目的社区负责人.核心贡献者和企业用户将齐聚 KubeMeet,和现场 100 名开发者聊聊新的技术环 ...

  2. 顺丰科技 Hudi on Flink 实时数仓实践

    ​简介: 介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi 来优化整个 job 状态的实践细节,以及未来的一些规划. 本文作者为刘杰,介绍了顺丰科技数仓的架构,趟过的一些问题.使用 Hudi ...

  3. Apache Flink 在汽车之家的应用与实践

    ​简介: 汽车之家如何基于 Flink 上线了 AutoStream 平台并持续打磨. 本文整理自汽车之家实时计算平台负责人邸星星在 Flink Forward Asia 2020 分享的议题< ...

  4. [Caddy2] Caddyfile 使用其它 DNS provider

    安装 caddy 的 dns provider 模块. https://github.com/caddy-dns/cloudflare 如果是在 Docker 中 build 模块按文档进行,通过 c ...

  5. dotnet C# 基于 INotifyPropertyChanged 实现一个 CLR 属性绑定辅助类

    习惯了 WPF 或 UWP 等的依赖属性的绑定机制之后,我在写 CLR 属性时,有时也期望将两个 CLR 属性给绑定到一起.在 dotnet 里,提供了 System.ComponentModel.I ...

  6. ESP32 多线程入门实验

    一.线程创建函数 函数 void xTaskCreate ( pdTASK_CODE pvTaskCode, const portCHAR * const pcNane, unsigned portS ...

  7. 基于FPGA的二进制转BCD

    BCD码(nary-Coded Decimal‎)又称二-十进制代码,亦称二进码十进数.是一种二进制的数字编码形式,用二进制编码的十进制代码.这种编码形式利用了四个位元来储存一个十进制的数码. 在数字 ...

  8. Solution Set - NOI级别真题选做

    [NOI2007] 社交网络 Link&Submission. key:Floyd Floyd求出任意两点间最短路,以及最短路的条数.求点 \(k\) 的答案时枚举所有点对 \(i,j\),若 ...

  9. PHP游戏线下线上陪玩平台APP小程序H5源码开发多少钱?可用于家政,陪诊,陪伴服务等

    做陪玩app项目,不少创业者们都比较头疼该如何去选择软件系统!目前软件市场上,陪玩app平台的软件系统五花八门,价位也是参差不齐.创业者们都比较纠结是定制开发,还是选择开元源码二次开 发? 前两天成都 ...

  10. kibana-6.2.4-amd64的安装

    ubuntu系统 kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D 找到6.2.4的下载连接 方法一: 下载tar包,解压即可: ...