Python玩转PDF:几招搞定的高效操作方法

2023-12-13 20:52

本文主要是介绍Python玩转PDF:几招搞定的高效操作方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

更多资料获取

📚 个人网站:ipengtao.com


当在Python中操作PDF时,有几种常见的方法,每种方法都有其独特的优点和用例。在本文中,我们将深入探讨这些方法,并提供丰富的示例代码,以帮助大家更好地理解如何使用这些技术。

1. 使用PyPDF2库进行PDF操作

PyPDF2是一个流行的Python库,用于处理PDF文件。它允许你合并、拆分、旋转和提取PDF文档的内容。

以下是一些基本的示例代码:

import PyPDF2# 合并两个PDF文件
def merge_pdfs(file1, file2, output):pdf_writer = PyPDF2.PdfFileWriter()pdf_reader1 = PyPDF2.PdfFileReader(file1)pdf_reader2 = PyPDF2.PdfFileReader(file2)for page_num in range(pdf_reader1.numPages):page = pdf_reader1.getPage(page_num)pdf_writer.addPage(page)for page_num in range(pdf_reader2.numPages):page = pdf_reader2.getPage(page_num)pdf_writer.addPage(page)with open(output, 'wb') as merged_file:pdf_writer.write(merged_file)# 拆分PDF文件
def split_pdf(input_file, output_folder):pdf_reader = PyPDF2.PdfFileReader(input_file)for page_num in range(pdf_reader.numPages):pdf_writer = PyPDF2.PdfFileWriter()page = pdf_reader.getPage(page_num)pdf_writer.addPage(page)output_file = f'{output_folder}/page_{page_num + 1}.pdf'with open(output_file, 'wb') as single_page_file:pdf_writer.write(single_page_file)# 调用示例
merge_pdfs('document1.pdf', 'document2.pdf', 'merged_document.pdf')
split_pdf('large_document.pdf', 'output_folder')

2. 使用reportlab库创建PDF

reportlab是一个强大的PDF生成库,它允许从头开始创建PDF文档,包括文本、图形和表格。

以下是一个简单的例子:

from reportlab.pdfgen import canvasdef create_pdf(output_file):c = canvas.Canvas(output_file)c.drawString(72, 800, "Hello, this is a sample PDF created with reportlab.")c.showPage()c.save()# 调用示例
create_pdf('sample_reportlab.pdf')

3. 使用PyMuPDF库进行PDF渲染

PyMuPDF是一个用于渲染PDF文件的库,可以用于提取文本和图像信息。

以下是一个简单的示例:

import fitz  # PyMuPDF的Python绑定def extract_text_images(pdf_file):doc = fitz.open(pdf_file)for page_num in range(doc.page_count):page = doc[page_num]# 提取文本text = page.get_text("text")print(f"Text on page {page_num + 1}:\n{text}\n")# 提取图像for img_index, img in enumerate(page.get_images(full=True)):img_index += 1base_image = doc.extract_image(img)image_bytes = base_image["image"]image_name = f"page_{page_num + 1}_image_{img_index}.png"with open(image_name, "wb") as image_file:image_file.write(image_bytes)# 调用示例
extract_text_images('document.pdf')

4. 使用PDFMiner库提取文本信息

PDFMiner是一个用于提取PDF文本的强大库,它支持高级的文本提取和布局分析。

以下是一个简单的示例:

from pdfminer.high_level import extract_textdef extract_text_from_pdf(pdf_file):text = extract_text(pdf_file)print(f"Text extracted from the PDF:\n{text}")# 调用示例
extract_text_from_pdf('document.pdf')

5. 使用FPDF库创建PDF文档

FPDF是一个轻量级的Python库,用于在PDF文档中添加文本、图形和页面。

以下是一个简单的创建PDF文档的示例:

from fpdf import FPDFclass PDFGenerator(FPDF):def header(self):self.set_font('Arial', 'B', 12)self.cell(0, 10, 'My PDF Document', 0, 1, 'C')def chapter_title(self, num, label):self.set_font('Arial', 'B', 12)self.cell(0, 10, 'Chapter %d : %s' % (num, label), 0, 1, 'L')def chapter_body(self, body):self.set_font('Arial', '', 12)self.multi_cell(0, 10, body)# 创建PDF文档
pdf = PDFGenerator()
pdf.add_page()
pdf.chapter_title(1, 'Introduction')
pdf.chapter_body('This is the introduction to my PDF document.')
pdf.chapter_title(2, 'Chapter 1')
pdf.chapter_body('This is the content of chapter 1.')# 保存PDF文档
pdf.output('generated_document.pdf')

6. 使用PDFKit库将HTML转换为PDF

PDFKit是一个基于wkhtmltopdf工具的Python库,可以将HTML内容转换为PDF文档。这在需要动态生成报告或将网页内容保存为PDF时非常有用。

以下是一个简单的例子:

import pdfkitdef html_to_pdf(html_content, output_pdf):pdfkit.from_string(html_content, output_pdf)# 调用示例
html_content = "<html><body><h1>Hello, PDFKit!</h1><p>This is a sample HTML content.</p></body></html>"
html_to_pdf(html_content, 'html_to_pdf_output.pdf')

7. 使用PyPDF2旋转PDF页面

PyPDF2不仅可以用于合并和拆分PDF,还可以用于对PDF页面进行旋转。

以下是一个旋转PDF页面的简单示例:

import PyPDF2def rotate_pdf(input_pdf, output_pdf, rotation_angle):pdf_writer = PyPDF2.PdfFileWriter()pdf_reader = PyPDF2.PdfFileReader(input_pdf)for page_num in range(pdf_reader.numPages):page = pdf_reader.getPage(page_num)page.rotateClockwise(rotation_angle)pdf_writer.addPage(page)with open(output_pdf, 'wb') as rotated_file:pdf_writer.write(rotated_file)# 调用示例
rotate_pdf('document.pdf', 'rotated_document.pdf', 90)

8. 使用PDFMerger库进行PDF合并

PDFMerger是一个简单易用的库,专门用于合并PDF文件。

以下是一个示例:

from PyPDF2 import PdfMergerdef merge_pdfs_with_pdfmerger(files, output_file):merger = PdfMerger()for pdf_file in files:merger.append(pdf_file)merger.write(output_file)merger.close()# 调用示例
pdf_files = ['file1.pdf', 'file2.pdf', 'file3.pdf']
merge_pdfs_with_pdfmerger(pdf_files, 'merged_files.pdf')

总结

在本文中,我们分享了Python中操作PDF的多种方法,涵盖了PyPDF2、reportlab、PyMuPDF、PDFMiner、FPDF、PDFKit、PyPDF2、PDFMerger等库的应用。通过丰富的示例代码,学习了合并、拆分、文本提取、HTML转换、页面旋转和PDF合并等常见操作。这些工具和技术为处理PDF文件提供了灵活而强大的手段,能够根据具体需求选择适当的方法。

无论是生成报告、处理文档还是转换HTML内容,Python的生态系统都提供了多样化的解决方案。通过阅读本文,不仅可以了解每种方法的基本原理,还能够通过示例代码深入理解其实际应用。在处理PDF的日常任务中,选择适当的工具和技术将极大地提高工作效率。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

这篇关于Python玩转PDF:几招搞定的高效操作方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/489919

相关文章

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

SpringBoot操作spark处理hdfs文件的操作方法

《SpringBoot操作spark处理hdfs文件的操作方法》本文介绍了如何使用SpringBoot操作Spark处理HDFS文件,包括导入依赖、配置Spark信息、编写Controller和Ser... 目录SpringBoot操作spark处理hdfs文件1、导入依赖2、配置spark信息3、cont

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

使用Python绘制可爱的招财猫

《使用Python绘制可爱的招财猫》招财猫,也被称为“幸运猫”,是一种象征财富和好运的吉祥物,经常出现在亚洲文化的商店、餐厅和家庭中,今天,我将带你用Python和matplotlib库从零开始绘制一... 目录1. 为什么选择用 python 绘制?2. 绘图的基本概念3. 实现代码解析3.1 设置绘图画

Python pyinstaller实现图形化打包工具

《Pythonpyinstaller实现图形化打包工具》:本文主要介绍一个使用PythonPYQT5制作的关于pyinstaller打包工具,代替传统的cmd黑窗口模式打包页面,实现更快捷方便的... 目录1.简介2.运行效果3.相关源码1.简介一个使用python PYQT5制作的关于pyinstall

使用Python实现大文件切片上传及断点续传的方法

《使用Python实现大文件切片上传及断点续传的方法》本文介绍了使用Python实现大文件切片上传及断点续传的方法,包括功能模块划分(获取上传文件接口状态、临时文件夹状态信息、切片上传、切片合并)、整... 目录概要整体架构流程技术细节获取上传文件状态接口获取临时文件夹状态信息接口切片上传功能文件合并功能小