在前面的教程中,我們已經討論了使用 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