偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

用Python實現(xiàn)一款永久免費的PDF編輯工具

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

 前言:

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

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

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

曾經(jīng),為了替換PDF中的一頁,我?guī)缀踉嚤榱怂惺忻嫔现髁鞯腜DF工具,最終還是不得不選擇使用付費工具來解決問題。

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

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

有請主角登場 PyPDF2 和 pdfminer3k

PyPDF2

簡介:由純 Python 構(gòu)建的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 的頁數(shù) 
  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. # 循環(huán)刪除 
  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]) 
  • 旋轉(zhuǎn)
  1. # 旋轉(zhuǎn)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 相關(guān)的工具不同,它完全側(cè)重于獲取和分析文本數(shù)據(jù)。PDFMiner 允許獲取頁面中文本的確切位置,以及其他信息,如字體或線條。它包括一個 PDF 轉(zhuǎn)換器,可以將 PDF 文件轉(zhuǎn)換為其他文本格式(如 HTML)。它有一個可擴展的PDF解析器,可用于其他目的,而不是文本分析

    • 能夠準確獲取文本的位置和布局信息;
    • 可以將PDF轉(zhuǎn)換為HTML/XML等格式;
    • 可以提取目錄;
    • 可以提取標簽內(nèi)容;
    • 支持各種字體類型(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. # 創(chuàng)建一個與文檔關(guān)聯(lián)的解析器 
  16. parser = PDFParser(fp) 
  17.  
  18. # PDF文檔對象 
  19. doc = PDFDocument() 
  20.  
  21. #創(chuàng)建pdf文檔對象,存儲文檔結(jié)構(gòu) 
  22. document = PDFDocument(parser, password) 
  23.  
  24. # 鏈接解析器和文檔對象 
  25. parser.set_document(doc) 
  26. doc.set_parser(parser) 
  27.  
  28. # 初始化文檔 
  29. doc.initialize(""
  30.  
  31. # 創(chuàng)建DPF資源管理器 
  32. resource = PDFResourceManager() 
  33.  
  34. # 參數(shù)分析器 
  35. laparam = LAParams() 
  36.  
  37. # 聚合器 
  38. device = PDFPageAggregator(resource, laparams=laparam) 
  39.  
  40. # 創(chuàng)建頁面解析器 
  41. interpreter = PDFPageInterpreter(resource, device) 
  42.  
  43. # 使用文檔對象從pdf中讀取內(nèi)容 
  44. for page in doc.get_pages(): 
  45.     # 使用頁面解析器 
  46.     interpreter.process_page(page) 
  47.  
  48.     # 使用聚合器獲取內(nèi)容 
  49.     layout = device.get_result() 
  50.  
  51.     for text_obj in layout: 
  52.         # 判斷是否有g(shù)et_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 對象'

詳細的操作可參考 官網(wǎng):https://github.com/canserhat77/pdfminer3k

總結(jié)

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

 

 

 

責任編輯:張燕妮 來源: 今日頭條
相關(guān)推薦

2011-01-11 13:45:20

2020-12-22 10:30:47

Nagios工具監(jiān)控

2020-05-26 14:15:09

開源網(wǎng)盤 免費

2011-01-18 14:51:48

2011-01-11 13:38:21

CPU-Z系統(tǒng)檢測

2024-08-16 08:31:05

2022-09-30 13:09:32

VSLookVS Code工具

2016-03-15 12:27:54

WireEdit可視化編輯工具網(wǎng)絡數(shù)據(jù)包編輯器

2025-04-21 01:00:00

DbGate數(shù)據(jù)庫開源

2015-08-07 09:44:36

開源數(shù)據(jù)中心

2020-02-28 10:10:07

開源技術(shù) 工具

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開發(fā)工具編程語言

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技術(shù)棧公眾號