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.pswp.cn/web/14787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/14787.shtml
英文地址,請注明出處:http://en.pswp.cn/web/14787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Linux--網絡通信(一)概述

網絡通信概述 網絡通信本質上是一種進程間通信,是位于網絡中不同主機上的進程之間的通信,屬于 IPC 的一種, 通常稱為 socket IPC。所以網絡通信是為了解決在網絡環境中,不同主機上的應用程序之間的通信問題。 大概可以分為三個層…

優化關聯查詢

三個表的創建語句 CREATE TABLE test.afx_output_source_item (cheadguid INT NOT NULL,goodsid INT NULL,goodsno VARCHAR(45) NULL,goodsname VARCHAR(45) NULL,model VARCHAR(45) NULL,goodstaxno VARCHAR(45) NULL,PRIMARY KEY (cheadguid));CREATE TABLE test.afx_output…

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…

ASSM是Automatic Segment Space Management(自動段空間管理)解析

ASSM是Automatic Segment Space Management(自動段空間管理)的縮寫,是Oracle數據庫引入的一項重要特性,首次出現在Oracle 9i中。ASSM旨在簡化空間管理和提高數據庫性能,特別是對于表和索引段的空間分配和回收過程。 在…

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…

卷積報錯:AttributeError: ‘Conv2d‘ object has no attribute ‘total_ops‘ (已解)

AttributeError: ‘Conv2d’ object has no attribute ‘total_ops’ File "/home/...../..._encoder.py", line 34, in forwardx = self.conv(x)File "/home/...../python3.8/site-packages/torch/nn/modules/module.py", line 1511, in _wrapped_call_im…

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 中,你可以使用 專注 功能來最大程度地減少干擾,幫助你保持專注。 專注的工作原理 專注時段打開后,將會出現以下情況: 專注計時器將顯示在屏幕上 請勿打擾將打開 任務欄中的應用不會閃爍發出提醒 任務欄中應用的…

內網穿透原理解析

在互聯網信息時代的今天,我們經常會聽到“內網穿透”,卻有很多人對此并不了解,下面小編給大家介紹一下內網穿透的工作原理。 1. 什么是內網穿透? 在了解內網穿透原理之前,我們先說什么是內網穿透。內網,就是在公司或…

SpringCloud系列(23)--手寫實現負載輪詢算法

前言:在上一篇文章中我們介紹了關于負載輪詢算法的原理以及看了源代碼,而本章節內容則是著重于我們自己手寫一個負載輪詢算法 1、分別編寫provider-payment8001、provider-payment8002這兩個子項目的PaymentController類,增加一個/payment/lb…

C++中引用的全面解析與實戰應用

C中的引用作為一種強大的特性,不僅能夠提升代碼的效率和清晰度,還能在一定程度上保障數據的安全性。本文將深入探討引用的各個方面,包括其定義、使用場景、類型、與指針的區別,并通過實例加以說明。 引用的定義與基本概念 引用可…

探究Python中的元組:不可變性與多重用途

元組是 Python 中的另一種重要數據結構,與列表相似,但具有一些關鍵區別。讓我們來詳細了解一下 Python 中的元組,包括基本語法、常用命令、示例代碼、應用場景、注意事項和總結。 基本語法 創建元組 在 Python 中,元組使用圓括…

Py之llama-parse:llama-parse(高效解析和表示文件)的簡介、安裝和使用方法、案例應用之詳細攻略

Py之llama-parse:llama-parse(高效解析和表示文件)的簡介、安裝和使用方法、案例應用之詳細攻略 目錄 llama-parse的簡介 llama-parse的安裝和使用方法 1、安裝 2、使用方法 第一步,獲取API 密鑰 第二步,安裝LlamaIndex、LlamaParse L…

AI爆文寫作:經常做這四個小練習,讓你解鎖爆文標題的秘籍,讓你的標題炸裂吸晴!

文章目錄 一、無法吸引眼球的標題二、標題炸裂的秘籍練習1:洞察受眾的渴望與恐懼。練習2:運用感官語言,用生動的描述和具體細節,在讀者心中勾勒出一幅畫面。練習3:展示變化。練習4:用意外轉折激發好奇心。一、無法吸引眼球的標題 這樣的標題: [如何通過閱讀改變人生」「…

LeetCode 1542.找出最長的超贊子字符串:前綴異或和(位運算)

【LetMeFly】1542.找出最長的超贊子字符串:前綴異或和(位運算) 力扣題目鏈接:https://leetcode.cn/problems/find-longest-awesome-substring/ 給你一個字符串 s 。請返回 s 中最長的 超贊子字符串 的長度。 「超贊子字符串」需…