PyMuPDF`庫實現PDF旋轉功能

本文介紹了一個簡單的Python應用程序,用于將PDF文件轉換為旋轉90度的PDF文件。主要用于csdn網站中導出的博客pdf是橫向的,看起來不是很方便,才想到用python編制一個將pdf從橫向轉為縱向的功能。

功能

該PDF轉換工具具有以下功能:

  1. 選擇PDF文件:通過點擊“選擇文件”按鈕,用戶可以選擇要轉換的PDF文件。
  2. 轉換PDF:點擊“轉換PDF”按鈕后,工具將打開所選的PDF文件,并對每個頁面進行處理。
    • 如果頁面的朝向是正常方向(0度),工具將將頁面旋轉90度。
    • 如果頁面已經順時針旋轉90度(90度),工具將跳過該頁面。
    • 其他朝向角度的頁面將被忽略。
  3. 保存轉換后的PDF:轉換完成后,工具將保存轉換后的PDF文件,并在原始文件名后面添加"_converted"。
  4. 提示消息:工具會顯示轉換完成的提示消息,以向用戶確認轉換已成功完成。
    C:\pythoncode\blog\pdfconvertoriginal.py
    在這里插入圖片描述
    在這里插入圖片描述

安裝依賴庫

在運行該工具之前,需要安裝以下依賴庫:

  • wxPython:用于創建GUI界面。
  • PyMuPDF:用于處理PDF文件。

可以使用以下命令使用pip安裝這兩個庫:

pip install wxPython PyMuPDF

代碼實現

下面是完整的Python代碼實現:

運行工具

保存上述代碼為pdf_convert_tool.py文件,然后運行該文件。將會打開一個窗口,窗口中有"選擇文件"和"轉換PDF"兩個按鈕。

  1. 點擊"選擇文件"按鈕,選擇要轉換的PDF文件。
  2. 點擊"轉換PDF"按鈕,工具將打開所選的PDF文件,并將頁面旋轉90度。
  3. 轉換后的PDF文件將保存在原始文件名后面添加"_converted"的形式。

總結

本文介紹了一個簡單的Python應用程序,用于將PDF文件轉換為旋轉90度的PDF文件。通過使用`wx很抱歉,Markdown格式在當前聊天界面無法顯示。我將為您提供純文本格式的博客內容,您可以將其復制到Markdown編輯器中進行格式化。

PDF轉換工具本文介紹了一個簡單的Python應用程序,用于將PDF文件轉換為旋轉90度的PDF文件。該工具使用了wxPython和PyMuPDF庫。功能該PDF轉換工具具有以下功能:1. 選擇PDF文件:通過點擊“選擇文件”按鈕,用戶可以選擇要轉換的PDF文件。
2. 轉換PDF:點擊“轉換PDF”按鈕后,工具將打開所選的PDF文件,并對每個頁面進行處理。- 如果頁面的朝向是正常方向(0度),工具將將頁面旋轉90度。- 如果頁面已經順時針旋轉90度(90度),工具將跳過該頁面。- 其他朝向角度的頁面將被忽略。
3. 保存轉換后的PDF:轉換完成后,工具將保存轉換后的PDF文件,并在原始文件名后面添加"_converted"。
4. 提示消息:工具會顯示轉換完成的提示消息,以向用戶確認轉換已成功完成。安裝依賴庫在運行該工具之前,需要安裝以下依賴庫:- wxPython:用于創建GUI界面。
- PyMuPDF:用于處理PDF文件。可以使用以下命令使用pip安裝這兩個庫:pip install wxPython PyMuPDF代碼實現下面是完整的Python代碼實現:```python
import wx
import fitzclass MainFrame(wx.Frame):def __init__(self, parent, title):super(MainFrame, self).__init__(parent, title=title, size=(400, 200))self.panel = wx.Panel(self)self.file_path = Noneself.select_file_btn = wx.Button(self.panel, label="選擇文件", pos=(20, 20))self.select_file_btn.Bind(wx.EVT_BUTTON, self.on_select_file)self.convert_btn = wx.Button(self.panel, label="轉換PDF", pos=(20, 60))self.convert_btn.Bind(wx.EVT_BUTTON, self.on_convert)def on_select_file(self, event):dlg = wx.FileDialog(self, "選擇文件", wildcard="PDF files (*.pdf)|*.pdf", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)if dlg.ShowModal() == wx.ID_OK:self.file_path = dlg.GetPath()dlg.Destroy()def on_convert(self, event):if self.file_path is None:wx.MessageBox("請先選擇文件!", "錯誤", wx.OK | wx.ICON_ERROR)returnself.convert_pdf(self.file_path)wx.MessageBox("轉換完成!", "提示", wx.OK | wx.ICON_INFORMATION)# def convert_pdf(self, pdf_path):#     doc = fitz.open(pdf_path)#     for page in doc:#         pix = page.get_pixmap()#         if pix.width > pix.height:#             pix = pix.rotate(90)#             page.set_pixmap(pix)#         watermark = page.search_for("watermark")#         for mark in watermark:#             page.delete_mark(mark)def convert_pdf(self, pdf_path):doc = fitz.open(pdf_path)for page in doc:if page.rotation == 0:# 當前頁面朝向為正常方向,需要旋轉page.set_rotation(90)elif page.rotation == 90:# 當前頁面朝向已經是順時針旋轉90度,不需要旋轉continueelse:# 其他朝向角度,暫不處理continue# doc.save(output_path)# doc.close()output_path = pdf_path.replace(".pdf", "_converted.pdf")doc.save(output_path)doc.close()if __name__ == "__main__":app = wx.App()frame = MainFrame(None, "PDF轉換工具")frame.Show()app.MainLoop()

運行工具

保存上述代碼為pdf_convert_tool.py文件,然后運行該文件。將會打開一個窗口,窗口中有"選擇文件"和"轉換PDF"兩個按鈕。

  1. 點擊"選擇文件"按鈕,選擇要轉換的PDF文件。
  2. 點擊"轉換PDF"按鈕,工具將打開所選的PDF文件,并將頁面旋轉90度。
  3. 轉換后的PDF文件將保存在原始文件名后面添加"_converted"的形式。

總結

本文介紹了一個簡單的Python應用程序,用于將PDF文件轉換為旋轉90度的PDF文件。通過使用wxPython和PyMuPDF庫,我們能夠創建一個具有簡單用戶界面的工具,方便用戶選擇和轉換PDF文件。您可以根據實際需求對代碼進行修改和擴展,以滿足更多功能和需求。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39996.shtml

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

相關文章

信息安全:防火墻技術原理與應用.

信息安全:防火墻技術原理與應用. 防火墻是網絡安全區域邊界保護的重要技術。為了應對網絡威脅,聯網的機構或公司將自己的網絡與公共的不可信任的網絡進行隔離,其方法是根據網絡的安全信任程度和需要保護的對象,人為地劃分若干安全…

C#工程建立后修改工程文件名與命名空間

使用之前的項目做二次開發,項目快結束的時候,需要把主項目的名稱修改成我們想要的。 之前從來沒有這么干過,記錄一下。 步驟如下: 1:打開vs2010項目解決方案,重命名,如下圖所示: …

SDP協議是什么,詳解SDP協議

一、SDP協議簡介 SDP(Session Description Protocol)是一種會話描述協議,用于描述多媒體會話的參數。它是一種文本協議,通常用于VoIP(Voice over Internet Protocol)和視頻會議等應用中。SDP協議定義了一種…

Vue項目(購物車)

目錄 購物車效果展示: 購物車代碼: 購物車效果展示: 此項目添加、修改、刪除數據的地方都寫了瀏覽器都會把它存儲起來 下次運行項目時會把瀏覽器數據拿出來并在頁面展示 Video_20230816145047 購物車代碼: 復制完代碼&#xff0…

leetcode每日一題_2682.找出轉圈游戲輸家

2682.找出轉圈游戲輸家 題目: n 個朋友在玩游戲。這些朋友坐成一個圈&#xff0c;按 順時針方向 從 1 到 n 編號。從第 i 個朋友的位置開始順時針移動 1 步會到達第 (i 1) 個朋友的位置&#xff08;1 < i < n&#xff09;&#xff0c;而從第 n 個朋友的位置開始順時針移…

設計模式之原型模式Prototype的C++實現

1、原型模式提出 在軟件功能設計中&#xff0c;經常面臨著“某些結構復雜的對象”的創建工作&#xff0c;且創建的對象想擁有其他對象在某一刻的狀態&#xff0c;則可以使用原型模型。原型模型是通過拷貝構造函數來創建對象&#xff0c;并且該對象擁有其他對象在某一刻的狀態。…

Docker基礎入門:鏡像、容器導入導出與私有倉庫搭建

Docker基礎入門&#xff1a;鏡像導入導出與私有倉庫搭建 一、 Docker鏡像、容器的導入和導出1.1、Docker鏡像的導出1.2、Docker鏡像的載入1.3、Docker容器的導出1.4、Docker容器的導入 二、 鏡像和容器導出和導入的區別:三、commit操作_本地鏡像發布到阿里云3.1、commit操作有關…

ppt中線材相交接的地方,如何繪畫

ppt中線材相交接的地方&#xff1a; 在ppt中繪畫線材相互交接的地方&#xff1a; 1.1繪圖工具中的“弧形” 1.2小技巧 “弧形”工具點一下&#xff0c;在ppt中如下 1.3拖動活動點進行調整圖形 1.4繪畫圓弧 1.5調整“圓弧”的大小&#xff0c;鼠標放在“黃色點”位置&#xf…

【JVM】垃圾回收算法

目錄 一、判斷對象已“死” 1.1、引用計數算法 1.2、可達性分析算法 1.3、引用的概念 二、垃圾收集算法理論 2.1、分代收集理論 三、垃圾收集算法 3.1、標記--清除算法 3.2、標記--復制算法 3.3、標記--整理算法 一、判斷對象已“死” 在堆里面存放著Java世界中幾乎所…

【數據結構】二叉搜索樹

&#x1f680; 作者簡介&#xff1a;一名在后端領域學習&#xff0c;并渴望能夠學有所成的追夢人。 &#x1f40c; 個人主頁&#xff1a;蝸牛牛啊 &#x1f525; 系列專欄&#xff1a;&#x1f6f9;數據結構、&#x1f6f4;C &#x1f4d5; 學習格言&#xff1a;博觀而約取&…

億賽通電子文檔安全管理系統任意文件上傳漏洞復現

0x01 產品簡介 億賽通電子文檔安全管理系統&#xff08;簡稱&#xff1a;CDG&#xff09;是一款電子文檔安全加密軟件&#xff0c;該系統利用驅動層透明加密技術&#xff0c;通過對電子文檔的加密保護&#xff0c;防止內部員工泄密和外部人員非法竊取企業核心重要數據資產&…

excel隔行取數求和/均值

問題描述 如圖有好多組數據&#xff0c;需要求每組數據對應位置的平均值 解決方法 SUM(IF(MOD(ROW(C$2:C$81), 8) MOD(ROW(C2), 8), C$2:C$81, 0))/10然后下拉右拉擴充即可&#xff0c;其中需要根據自身需要修改一些數據 SUM(IF(MOD(ROW(起始列$起始行:結束列$結束行), 每…

MATLAB圖論合集(一)基本操作基礎

本帖總結一些經典的圖論問題&#xff0c;通過MATLAB如何計算答案。近期在復習考研&#xff0c;以此來鞏固一下相關知識——雖然考研肯定不能用MATLAB代碼哈哈&#xff0c;不過在實際應用中解決問題還是很不錯的&#xff0c;比C易上手得多~ 圖論中的圖&#xff08;Graph&#xf…

FOSSASIA Summit 2023 - 開源亞洲行

作者 Ted 致歉&#xff1a;本來這篇博客早就該發出&#xff0c;但是由于前幾個月頻繁差旅導致精神不佳&#xff0c;再加上后續我又參加了 Linux 基金會 7/27 在瑞士日內瓦舉辦的 Open Source Congress&#xff0c;以及 7/29-30 臺北的 COSCUP23&#xff0c;干脆三篇連發&#x…

儀表板展示 | DataEase看中國:2023年中國電影市場分析

背景介紹 隨著《消失的她》、《變形金剛&#xff1a;超能勇士崛起》、《蜘蛛俠&#xff1a;縱橫宇宙》、《我愛你》等國內外影片的上映&#xff0c;2023年上半年的電影市場也接近尾聲。據國家電影專資辦初步統計&#xff0c;上半年全國城市院線票房達262億元&#xff0c;已經超…

一、計算機網絡體系結構

Content 1. 計算機網絡的組成2. 計算機網絡的功能3. 計算機網絡的分類4. 計算機網絡的性能指標5. 計算機網絡分層結構OSI模型TCP/IP模型互聯網五層模型共同點&#xff1a; 6. 計算機網絡提供的服務按三種方式分類面向連接服務和無連接服務可靠服務和不可靠服務有連接服務和無連…

服務器卡頓了該如何處理

服務器卡頓了該如何處理 當Windows系統的服務器出現卡頓問題時&#xff0c;以下是一些常見的故障排除步驟&#xff1a; 1.檢查網絡連接&#xff1a;確保服務器的網絡連接正常。檢查網絡設備、交換機、防火墻等設備&#xff0c;確保它們正常運行。嘗試通過其他計算機訪問服務器…

Flink SQL TopN

Flink SQL 對于批處理&#xff08;Batch&#xff09;和流處理&#xff08;streaming&#xff09;模式的SQL&#xff0c;都支持 Top-N 查詢。Top-N 查詢可以根據指定列排序后獲得前 N 個最小或最大值。并且該結果集還可用于進一步分析。Flink 使用 OVER 窗口子句和過濾條件的組合…

近 2000 臺 Citrix NetScaler 服務器遭到破壞

Bleeping Computer 網站披露在某次大規模網絡攻擊活動中&#xff0c;一名攻擊者利用被追蹤為 CVE-2023-3519 的高危遠程代碼執行漏洞&#xff0c;入侵了近 2000 臺 Citrix NetScaler 服務器。 研究人員表示在管理員安裝漏洞補丁之前已經有 1200 多臺服務器被設置了后門&#x…