成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

用Python實現一款永久免費的PDF編輯工具

新聞 開發工具
PDF(Portable Document Format),中文名稱便攜文檔格式是我們經常會接觸到的一種文件格式,文獻、文檔...很多都是PDF格式。它以格式穩定的優勢,使得我們在打印、分享、傳輸過程中能夠最優的保持原有色彩和格式。

 前言:

PDF(Portable Document Format),中文名稱便攜文檔格式是我們經常會接觸到的一種文件格式,文獻、文檔...很多都是PDF格式。它以格式穩定的優勢,使得我們在打印、分享、傳輸過程中能夠最優的保持原有色彩和格式。

[[338709]]永久免費的PDF編輯工具">

但是在可編輯性方面卻為使用者引入了另外一個困擾。

曾經,為了替換PDF中的一頁,我幾乎試遍了所有市面上主流的PDF工具,最終還是不得不選擇使用付費工具來解決問題。

事后想了想,既然這些商業化軟件不靠譜,為什么不考慮自己動手開發一款工具呢?明明幾十行代碼能夠解決的問題,為什么要費那么多勁去下載、安裝那些沒有節操的軟件呢?

本文就來介紹一下利用Python輕松開發一款PDF編輯工具,可以用于PDF轉TxT、分割、合并、剪切、轉換。

有請主角登場 PyPDF2 和 pdfminer3k

PyPDF2

簡介:由純 Python 構建的PDF 工具包。它能夠:

  • 提取文檔信息(標題、作者等)
  • 一頁拆分文檔
  • 按頁合并文檔
  • 裁剪頁面
  • 將多個頁面合并到單個頁面中
  • 加密和解密 PDF 文件

安裝

直接使用pip安裝

  1. pip install PyPDF2 

代碼操作

  • 簡單的讀寫PDF操作
  1. from PyPDF2 import PdfFileReader, PdfFileWriter 
  2. infn = 'infn.pdf' 
  3. outfn = 'outfn.pdf' 
  4. # 獲取一個 PdfFileReader 對象 
  5. pdf_input = PdfFileReader(open(infn, 'rb')) 
  6. # 獲取PDF 的基本信息 
  7. information =pdf_input.getDocumentInfo() 
  8. print(information) 
  9. # 獲取 PDF 的頁數 
  10. page_count = pdf_input.getNumPages() 
  11. print(page_count) 
  12. # 返回一個 PageObject 
  13. page = pdf_input.getPage(i) 
  14.  
  15. # 獲取一個 PdfFileWriter 對象 
  16. pdf_output = PdfFileWriter() 
  17. # 將一個 PageObject 加入到 PdfFileWriter 中 
  18. pdf_output.addPage(page) 
  19. # 輸出到文件中 
  20. pdf_output.write(open(outfn, 'wb')) 
  • 刪除PDF頁
  1. from PyPDF2 import PdfFileWriter,  PdfFileReader 
  2.  
  3. # 實例化一個輸出的PDF實例 
  4. output = PdfFileWriter() 
  5. #  讀取一個PDF文件 
  6. input1 = PdfFileReader(open("example.pdf""rb"))  
  7.  
  8. # 要刪除的操作 
  9. def delete_pdf(index): 
  10.             pages = input1.getNumPages()  
  11. # 循環刪除 
  12.      for i in range(pages): 
  13.       if i+1 in index: 
  14.        continue 
  15.       output.addPage(input1.getPage(i))  
  16.  
  17.      outputStream = open("PyPDF2-output.pdf""wb"
  18.      output.write(outputStream)   
  19.  
  20. delete_pdf([2,3,4]) 
  • 合并PDF
  1. from PyPDF2 import PdfFileWriter, PdfFileReader 
  2.  
  3. output = PdfFileWriter() 
  4. input1 = PdfFileReader(open("example.pdf""rb")) 
  5. input2 = PdfFileReader(open("simple2.pdf""rb")) // 1 
  6.  
  7. def merge_pdf(add_index, origin_index): 
  8.          pages = input1.getNumPages() 
  9.          k = 0 
  10.          for i in range(pages): 
  11.           if i+1 in add_index: 
  12.                output.addPage(input2.getPage(origin_index[k])) // 2 
  13.                pages += 1 
  14.                k += 1 
  15.               output.addPage(input1.getPage(i)) 
  16.  
  17.          outputStream = open("PyPDF2-output.pdf""wb"
  18.          output.write(outputStream) 
  19.  
  20. merge_pdf([2,3,4], [000]) 
  • 旋轉
  1. # 旋轉90度 
  2. input1.getPage(1).rotateClockwise(90
  • 添加水印
  1. page = input1.getPage(3
  2. watermark = PdfFileReader(open("watermark.pdf""rb")) 
  3. page.mergePage(watermark.getPage(0)) 
  • 加密
  1. password = "secret" 
  2. output.encrypt(password) 
  • 解密
  1. print(output.decrypt('secret'))# secret==正確口令顯示1,其他顯示0 
  2. page_obj= output.getPage(0)# 這樣才能正確讀取 
  3. print(page_obj.extractText()) 

pdfminer3k

  • 簡介

pdfminer3k 是一個 Python 3 端口的 pdfminer 。PDFMiner 是一個從 PDF 文檔中提取信息的工具。與其他與 PDF 相關的工具不同,它完全側重于獲取和分析文本數據。PDFMiner 允許獲取頁面中文本的確切位置,以及其他信息,如字體或線條。它包括一個 PDF 轉換器,可以將 PDF 文件轉換為其他文本格式(如 HTML)。它有一個可擴展的PDF解析器,可用于其他目的,而不是文本分析

    • 能夠準確獲取文本的位置和布局信息;
    • 可以將PDF轉換為HTML/XML等格式;
    • 可以提取目錄;
    • 可以提取標簽內容;
    • 支持各種字體類型(Type1、TrueType、Type3和CID);
    • 支持中、日、韓語言和垂直書寫文本;
  • 安裝
  1. pip install pdfminer3k 
  • 文件的操作
  1. from urllib.request import urlopen 
  2.  
  3. from pdfminer.converter import PDFPageAggregator 
  4. from pdfminer.layout import LAParams 
  5. from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterpreter 
  6. from pdfminer.pdfparser import PDFParser, PDFDocument 
  7.  
  8. logging.Logger.propagate = False 
  9. logging.getLogger().setLevel(logging.ERROR) 
  10.  
  11. fp = open('template/pdftest.pdf''rb'
  12. # 在線 
  13. # fp = urlopen('http://---/---.pdf'
  14.  
  15. # 創建一個與文檔關聯的解析器 
  16. parser = PDFParser(fp) 
  17.  
  18. # PDF文檔對象 
  19. doc = PDFDocument() 
  20.  
  21. #創建pdf文檔對象,存儲文檔結構 
  22. document = PDFDocument(parser, password) 
  23.  
  24. # 鏈接解析器和文檔對象 
  25. parser.set_document(doc) 
  26. doc.set_parser(parser) 
  27.  
  28. # 初始化文檔 
  29. doc.initialize(""
  30.  
  31. # 創建DPF資源管理器 
  32. resource = PDFResourceManager() 
  33.  
  34. # 參數分析器 
  35. laparam = LAParams() 
  36.  
  37. # 聚合器 
  38. device = PDFPageAggregator(resource, laparams=laparam) 
  39.  
  40. # 創建頁面解析器 
  41. interpreter = PDFPageInterpreter(resource, device) 
  42.  
  43. # 使用文檔對象從pdf中讀取內容 
  44. for page in doc.get_pages(): 
  45.     # 使用頁面解析器 
  46.     interpreter.process_page(page) 
  47.  
  48.     # 使用聚合器獲取內容 
  49.     layout = device.get_result() 
  50.  
  51.     for text_obj in layout: 
  52.         # 判斷是否有get_text屬性 
  53.         if hasattr(text_obj, 'get_text'): 
  54.             print(text_obj.get_text()) 

 

  1. # 處理包含在文檔中的每一頁 
  2. for page in PDFPage.create_pages(document): 
  3.           interpreter.process_page(page) 
  4.           layout = device.get_result() 
  5.           for x in layout: 
  6.               # 獲取文本對象 
  7.               if isinstance(x, LTTextBox): 
  8.                   print(x.get_text().strip()) 
  9.               # 獲取圖片對象 
  10.               if isinstance(x,LTImage): 
  11.                   print('這里獲取到一張圖片'
  12.               # 獲取 figure 對象 
  13.               if isinstance(x,LTFigure): 
  14.                   print('這里獲取到一個 figure 對象'

詳細的操作可參考 官網:https://github.com/canserhat77/pdfminer3k

總結

通過上述2款Python庫,就可以實現從頁面到文本元數據的編輯,本文只是簡單的介紹了每項的基本用法。關于詳細的用法和函數列表,可以閱讀官方文檔,或者閱讀GitHub上項目源碼進行了解。

 

 

 

責任編輯:張燕妮 來源: 今日頭條
相關推薦

2011-01-11 13:45:20

2020-12-22 10:30:47

Nagios工具監控

2020-05-26 14:15:09

開源網盤 免費

2011-01-18 14:51:48

2011-01-11 13:38:21

CPU-Z系統檢測

2024-08-16 08:31:05

2022-09-30 13:09:32

VSLookVS Code工具

2016-03-15 12:27:54

WireEdit可視化編輯工具網絡數據包編輯器

2025-04-21 01:00:00

DbGate數據庫開源

2015-08-07 09:44:36

開源數據中心

2020-02-28 10:10:07

開源技術 工具

2021-01-27 13:16:39

ScreenLinux命令

2021-02-16 10:58:50

ScreenLinux命令

2021-07-07 06:52:17

云圖word-cloud工具

2018-11-26 14:30:08

Python開發工具編程語言

2024-02-23 08:13:25

Excalidraw白板工具開源

2011-05-10 09:55:14

2025-04-07 08:10:00

2021-03-25 16:15:24

SQL工具慢查詢

2025-01-22 16:13:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 成人中文字幕av | 激情婷婷 | 丁香久久| 免费黄色日本 | 欧洲精品在线观看 | 天天影视色综合 | 成人午夜av | 国产日韩视频在线 | 中文字幕精品视频在线观看 | 国产精品美女久久久 | 国产成人免费网站 | 日本a视频 | 男女羞羞视频免费看 | 伊人伊人伊人 | www.一区二区 | 狠狠狠干 | 热久色| 日韩亚洲欧美一区 | 夜夜av | 97国产超碰 | 成人免费视频在线观看 | 日本啊v在线 | 欧美高清视频 | 欧美午夜精品 | 超碰97在线免费 | 国产美女永久免费无遮挡 | 久久久久久av | 一区在线播放 | 国产在线一区二区三区 | 97国产在线视频 | 久久精选| 国产一区二区久久 | 久久久久久久久99 | 91在线视频播放 | 99re在线播放 | av黄色国产| www.日日夜夜 | 日韩av啪啪网站大全免费观看 | 中文字幕av免费 | 久久久久国产一区二区三区 | 国产一区三区在线 |