使用Python操作PDF

使用Python操作PDF

在之前的教程中,我们讨论了使用Python编程语言的不同包和模块可以对PDF文件进行的各种操作。我们学习了使用Python提取文本、图像、表格和URL的方法。

接下来的教程将涵盖一些其他操作来操作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文件。 在 Canvas() 函数中,我们将PDF页面的大小设置为 LETTER 大小,这是由 reportlab 库提供的预定义大小。然后,我们使用 save() 函数保存创建的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()

输出:

使用Python操作PDF

解释:

在上面的代码片段中,我们再次从各自的模块中导入函数。然后,我们创建了一个名为 textfile.py 的PDF文件。我们正在设置字体和字体大小,因为我们即将在PDF文件上写入一些文本。我们使用 reportlab 库的预定义函数设置了PDF的大小为 LETTER, 字体为 Courier, 字体大小为 18 。然后,我们使用 setFillColor 函数选择了 紫色 作为文本的颜色。之后,我们在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()

输出:

使用Python操作PDF

说明:

在上面的代码片段中,我们导入了所需的函数。然后我们使用 Canvas() 函数创建了一个新的PDF文件。然后我们使用 drawInlineImage() 函数来插入图像到创建的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)

输出:

使用Python操作PDF

解释:

在上述代码片段中,我们创建了一个新的PDF文件,尺寸为信纸大小。要存储在表格上的数据在列表 “my_data” 中提供。在这里,列表的形状是 5×2 。有五行和两列。因此,这是将在PDF文件上形成的表格。之后,我们定义了表格的边距、网格线、它们的大小和形状。我们还使用了 setStyle 函数。您也可以参考 reportlab 库的官方文档来创建表格。如果没有定义这些网格线,PDF上将只有按照顺序排列的详细信息,但没有通过网格线或边框进行分隔。

使用Python在PDF上突出显示文本

Python还为我们提供了一种突出显示PDF文件中文本内容的功能,称为 “fitz” 。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")

输出:

使用Python操作PDF

解释:

在上面的代码片段中,我们导入了 fitz 库。然后,我们使用 open() 函数加载PDF文件 my_file.pdf ,该文件需要进行高亮显示。要高亮显示的短语在text变量中给出。我们正在突出显示单词 “Boring” 。然后,我们遍历每个页面,查找是否存在与该词匹配的潜在结果。如果找到与该词匹配的结果,我们使用 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)

输出:

使用Python操作PDF

解释:

在上述的代码片段中,我们导入了所需的库。然后,我们开始读取需要调整大小的输入PDF文件。然后,我们读取了它的页面。在这里,我们只调整了第一页,所以getPage函数提供了值0,代表初始页面。现在,为了调整页面大小,我们使用了scaleBy函数,并将第0页按0.5进行了缩放。因此,第一页的尺寸缩小了实际页面尺寸的一半。然后,我们将页面保存到了一个新的PDF文件”resizedFile.pdf”中。通过这种方式,我们成功地使用Python进行了页面调整大小。

使用Python将PDF文件转换为CSV格式

有时,表格数据也以PDF格式存在。然而,这些类型的信息不能直接解析。例如,我们无法直接使用pandas库处理带有数据框的PDF文件,因此必须在处理之前将它们转换为CSV或Excel格式。由于这是一个相当重要的过程,我们将了解如何将PDF文件转换为CSV格式。

让我们开始安装Python库称为tabula。

安装tabula库

我们可以使用以下命令使用pip安装tabula库:

语法:

$ pip3 install tabula-py

现在,让我们通过以下示例了解在将PDF文件转换为CSV格式中使用 tabula 库的实现:

示例:

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

解释:

在下面的代码片段中,我们导入了 tabula 库。然后,我们使用了一个名为 “convert_into” 的一行函数,指定了参数:输入PDF文件的路径、要转换文件的路径、输出文件的格式以及要转换的页面数。通过这种方式,我们可以轻松有效地将PDF文件转换为CSV格式。

使用像Python这样的编程语言,我们可以执行许多其他操作来处理PDF文件。可以参考官方文档以获取更多信息。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程