📜  使用Python编辑 PDF(1)

📅  最后修改于: 2023-12-03 14:49:50.841000             🧑  作者: Mango

使用Python编辑PDF

PDF(Portable Document Format)文档是一种常见的文档类型,用于在几乎任何设备和操作系统上以一致的格式和样式显示文档。Python提供了多种库来编辑和生成PDF文档,这些库可以使您以编程方式生成PDF文档,添加文本、图像和其他元素,以及从其他文件格式转换为PDF。

PyPDF2

PyPDF2库是Python编辑PDF文档的一种灵活而强大的方式,可以读取、拆分、合并、旋转页面和加密PDF文件,还可以添加文本、图片和水印。

import PyPDF2
 
# 打开PDF文件
pdf_file = open('sample.pdf', 'rb')
 
# 读取PDF内容
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
 
# 获取PDF文件的总页数
page_count = pdf_reader.getNumPages()
print(f'There are {page_count} pages in this PDF document.')
 
# 获取特定页面的内容
page = pdf_reader.getPage(0)
print(page.extractText())
 
# 添加水印
watermark_file = open('watermark.pdf', 'rb')
watermark_reader = PyPDF2.PdfFileReader(watermark_file)
watermark_page = watermark_reader.getPage(0)
 
pdf_writer = PyPDF2.PdfFileWriter()
 
for page_num in range(page_count):
    page = pdf_reader.getPage(page_num)
    page.mergePage(watermark_page)
    pdf_writer.addPage(page)
 
# 输出到新的PDF文件
output_file = open('sample_watermarked.pdf', 'wb')
pdf_writer.write(output_file)
 
# 关闭文件句柄
pdf_file.close()
watermark_file.close()
output_file.close()
ReportLab

ReportLab是一种Python编辑PDF文档的流行选择,它可以生成PDF文档、图形、条形码和图表,以及添加文本、图像和表格。它还可以与其他库(如Django)完美集成,提供了一些高级的排版功能。

# 必须先安装reportlab
!pip install reportlab
 
from reportlab.pdfgen import canvas
 
# 新建PDF流
pdf_stream = canvas.Canvas('sample_reportlab.pdf')
 
# 添加文本
pdf_stream.drawString(10, 800, 'Hello ReportLab!')
 
# 添加图形
pdf_stream.setStrokeColorRGB(0.2, 0.5, 0.3)
pdf_stream.rect(50, 50, 100, 100)
 
# 输出PDF文件
pdf_stream.save()
WeasyPrint

WeasyPrint是一种使用HTML和CSS生成PDF文档的Python库,特别适合需要使用从Web生成的数据创建PDF的项目。

# 必须先安装weasyprint
!pip install weasyprint
 
import weasyprint
 
# 从URL加载网页
url = 'https://www.baidu.com'
pdf_file = weasyprint.HTML(url).write_pdf()
 
# 从HTML文件加载网页
html_string = '<h1>Hello WeasyPrint!</h1>'
pdf_file = weasyprint.HTML(string=html_string).write_pdf()
 
# 从CSS文件加载样式
pdf_file = weasyprint.HTML(url).write_pdf(stylesheets=['style.css'])
 
# 输出PDF文件
with open('sample_weasyprint.pdf', 'wb') as f:
    f.write(pdf_file)
Conclusion

Python是一种功能强大的语言,可以使您更轻松地编辑和生成PDF文档。本文介绍了三种库PyPDF2、ReportLab和WeasyPrint,它们提供了不同的功能和方法,可以根据您的需要选择最适合您的库。