使用 Python 操作 PDF

在前面的教程中,我們已經討論了使用 Python 編程語言的不同包和模塊可以對 PDF 文件執行的各種操作。我們已經學習了不同 Python 庫的工作原理,這些庫可以用來操作 PDF 文件。此外,我們已經理解了使用 Python 提取文本、圖像、表格和網址。

下面的教程將介紹操作 PDF 文件的一些其他操作,包括創建 PDF 文件、在 PDF 文件上添加文本、圖像和表格等等。

那麼,讓我們開始吧。

使用 Python 創建 PDF 文件

Python 提供了一個功能,程序員也可以直接從代碼中創建一個 PDF 文件。我們可以將 Python 代碼中的文本、圖像、表格和表單直接插入到 PDF 文件中。為了實現同樣的目的,Python 編程語言提供了一個名為 reportlab 的庫。

但是在我們開始使用庫之前,我們有必要安裝它。

安裝 reportlab 庫

我們可以使用 pip 安裝程序使用以下命令安裝 reportlab 庫:

語法:


$ pip install reportlab

現在,讓我們從實現部分開始;我們可以執行以下操作:

示例:


from reportlab.lib.pagesizes import LETTER
from reportlab.pdfgen.canvas import Canvas 
# creating a new pdf file
my_canvas = Canvas("newfile.pdf", pagesize = LETTER)
my_canvas.save()

說明:

在上面的代碼片段中,我們已經從它們各自的模塊中導入了所需的函數。然後我們創建了一個名為newfile.pdf 的 PDF 文件。在畫布()功能中,我們將 PDF 頁面的大小設置為字母大小,這是由 reportlab 庫提供的預定義大小。然後,我們使用保存()功能保存了創建的 PDF 文件。

使用 Python 在 PDF 上添加文本

藉助 reportlab 庫,我們可以輕鬆添加一個 PDF 文件。讓我們考慮下面的例子來理解這一點:

示例:


from reportlab.lib.pagesizes import LETTER
from reportlab.lib.units import inch
from reportlab.pdfgen.canvas import Canvas
from reportlab.lib.colors import purple
# creating the pdf file
my_canvas = Canvas("textfile.pdf", pagesize = LETTER)
# setting up the font and the font size
my_canvas.setFont("Courier", 18)
# setting up the color of the font as red
my_canvas.setFillColor(purple)
# writing this text on the PDF file 
my_canvas.drawString(2 * inch, 8 * inch, "Welcome to Javatpoint for Python Tutorial")
my_canvas.save()

輸出:

說明:

在上面的代碼片段中,我們再次從它們各自的模塊中導入了函數。然後我們創建了一個名為 textfile.py. 的 PDF 文件,我們正在設置字體和字體大小,因為我們要在 PDF 文件上寫一些文本。藉助 reportlab 的預定義功能,我們將 PDF 大小設置為 LETTER,字體設置為 Courier,字體設置為 18 字體。然後我們藉助設置填充顏色功能為文本選擇了紫色顏色。在這之後,我們在 PDF 文件上寫了一些文本,指定了文本在 PDF 頁面上的位置。最後,我們使用 save() 功能保存了創建的 PDF 文件。因此,我們成功地創建了一個 PDF 文件。

使用 Python 在 PDF 上添加圖像

我們也可以利用 Python reportlab 庫在 PDF 文件中插入圖像。與在 PDF 文件中插入文本相比,插入圖像可能是一項乏味的工作。圖像有其獨特的大小,PDF 文件也是如此。因此,管理圖像的大小和找到圖像的最佳位置可能是一項乏味的工作。

讓我們考慮以下示例來理解在 PDF 文件中添加圖像:

示例:


from reportlab.lib.pagesizes import LETTER
from reportlab.pdfgen.canvas import Canvas
my_canvas = Canvas("imgfile.pdf", pagesize = LETTER)
my_canvas.drawInlineImage("my_image.jpg", 100, 450)
my_canvas.save()

輸出:

說明:

在上面的代碼片段中,我們已經導入了所需的函數。然後我們使用 Canvas() 函數創建一個新的 PDF 文件。然後,我們使用了drawinliningimage()函數,以便將圖像插入到創建的 PDF 文件中。我們已經指定了圖像在目錄中的位置以及圖像的位置,即要在 PDF 文件上設置的 (100,450) 。 reportlab 庫將 PDF 文件的左下方位置視為 (0,0) ,並以類似的方式管理圖像的位置。字母大小的 PDF 尺寸為 612×792、和 (100,450) 將是圖像在 PDF 文件上的位置。

使用 Python 在 PDF 上添加表格

我們也可以使用 reportlab 庫向 PDF 文件添加表格。讓我們考慮下面的例子來理解在 PDF 文件中添加表格。

示例:


from reportlab.lib import colors
from reportlab.lib.pagesizes import letter, inch
from reportlab.platypus import SimpleDocTemplate, Table, TableStyle 
# creating a pdf file to add tables
my_doc = SimpleDocTemplate("table.pdf", pagesize = letter)
my_obj = []
# defining Data to be stored on table
my_data = [
   ["ID", "1234"],
   ["Name", "Den Arthur"],
   ["Profession", "Software Developer"],
   ["Age", "28"],
   ["Sex", "Male"]
]
# Creating the table with 5 rows
my_table = Table(my_data, 1 * [1.6 * inch], 5 * [0.5 * inch])
# setting up style and alignments of borders and grids
my_table.setStyle(
   TableStyle(
       [
           ("ALIGN", (1, 1), (0, 0), "LEFT"),
           ("VALIGN", (-1, -1), (-1, -1), "TOP"),
           ("ALIGN", (-1, -1), (-1, -1), "RIGHT"),
           ("VALIGN", (-1, -1), (-1, -1), "TOP"),
           ("INNERGRID", (0, 0), (-1, -1), 1, colors.black),
           ("BOX", (0, 0), (-1, -1), 2, colors.black),
       ]
   )
)
my_obj.append(my_table)
my_doc.build(my_obj)

輸出:

說明:

在上面的代碼片段中,我們創建了一個新的帶有字母大小的 PDF 文件。要存儲在表格中的數據在列表「我的數據」中提供。這裡列表的形狀是 5×2。五排兩列。因此,這是將在 PDF 文件上形成的表格。之後,我們定義了表格的邊距、網格線、它們的大小和形狀。我們還使用了設置樣式功能。也可以參考 reportlab 庫的官方文檔來創建表格。如果這些網格線沒有被定義,那麼在 PDF 上就會有一個排列順序的細節;然而,沒有被網格線或邊界分開。

使用 Python 突出顯示 PDF 上的文本

Python 還為我們提供了在名為「fitz」的 PDF 文件中突出顯示文本內容的功能順序。Fitz 是我們可以用來對 PDF 文件進行文本高亮顯示的最簡單的庫。由於我們已經討論了 fitz 庫的安裝過程,讓我們直接進入 fitz 庫的實現,以便突出 PDF 上的文本。

示例:


import fitz   
# opening the pdf file
my_pdf = fitz.open("my_file.pdf")    
# input text to be highlighted
my_text = "Boring"  
# iterating through pages for highlighting the input phrase
for n_page in my_pdf:
    matchWords = n_page.search_for(my_text)    
    for word in matchWords:
        my_highlight = n_page.add_highlight_annot(word)
        my_highlight.update()   
# saving the pdf file as highlighted.pdf
my_pdf.save("highlighted_text.pdf")

輸出:

說明:

在上面的代碼片段中,我們已經導入了 fitz 庫。然後我們使用了 open() 功能來載入將要突出顯示的 PDF 文件 my_file.pdf,。要突出顯示的短語在文本變數中給出。我們在突出這個詞「無聊」。然後,我們遍歷每一頁,看看是否有與該單詞匹配的潛在內容。如果找到匹配的單詞,我們已經使用了 fitz 中的 add_highlight_annot 函數來突出顯示它們。因此,通過這種方式,我們獲得了 PDF 文件上的高亮文本。

使用 Python 調整 PDF 頁面的大小

調整頁面大小是使用 Python 操作 PDF 文件的另一個例子。有時,在 PDF 頁面上調整大小可能是必要的,Python 提供了一個名為 PyPDF2、的庫,程序員可以使用它來執行頁面調整大小的功能。讓我們考慮下面的例子來理解這一點:

示例:


import PyPDF2 
myPDF = "my_file.pdf"
myPDF = PyPDF2.PdfFileReader(myPDF)
my_page = myPDF.getPage(0)
# Resizing the first page
my_page.scaleBy(0.5)
my_resized = PyPDF2.PdfFileWriter()
my_resized.addPage(my_page) 
with open("resizedFile.pdf", "wb+") as f:
    my_resized.write(f)

輸出:

說明:

在上面的代碼片段中,我們已經導入了所需的庫。然後,我們開始讀取需要調整大小的輸入 PDF 文件。然後,我們讀了它的頁面。這裡我們只調整了第一頁的大小,所以 getPage 函數被提供了值 0,代表初始頁面。現在,為了調整頁面大小,我們使用了縮放比功能,並將第 0 頁縮放了 0.5。因此,第一頁減少了頁面實際尺寸的一半。然後我們將頁面保存到一個新的 PDF 文件resizedFile.pdf。通過這種方式,我們成功地使用 Python 執行了頁面調整。

使用 Python 將 PDF 文件轉換為 CSV

有時,表格數據也以 PDF 格式呈現。但是,這些類型的信息不能直接解析。例如,我們不能直接使用Pandas庫處理帶有數據幀的 PDF 文件,在處理之前必須將其轉換為 CSV 或 Excel 格式。由於這是一個相當重要的過程,我們將了解如何將 PDF 文件轉換為 CSV 格式。

讓我們從安裝名為「白板」的 Python 庫開始

安裝白板庫

我們可以使用 pip 安裝程序使用以下命令安裝白板庫:

語法:


$ pip3 install tabula-py

現在,讓我們藉助下面的例子來理解白板庫在將 PDF 文件轉換為 CSV 格式中的實現:

示例:


import tabula
tabula.convert_into(
    "tableFile.pdf",
    "tableFile.csv",
    output_format = "csv",
    pages = "all"
    )

說明:

在下面的代碼片段中,我們已經導入了白板庫。然後,我們使用了一個名為「轉換成」的單行函數,指定參數為輸入 PDF 文件的路徑、文件必須轉換到的路徑、輸出文件的格式以及我們想要轉換的頁數。通過這種方式,我們可以輕鬆有效地將 PDF 文件轉換為 CSV 格式。

使用像 Python 這樣的編程語言,我們可以對 PDF 文件執行許多其他功能。也可以參考官方文件進行參考。


原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/247942.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:24
下一篇 2024-12-12 13:24

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論