python中提取pdf文件某些页_付费?是不可能的!处理 PDF 只需几行代码,彻底解放双手!...

本文介绍了如何使用Python免费处理PDF文件,包括使用PyPDF2、ReportLab等库实现选取指定页、删除指定页、合并PDF、添加水印和PDF加密等功能,旨在帮助读者掌握PDF文档的高效处理技巧。
摘要由CSDN通过智能技术生成

e270f1c162d2a55a34d006270179cbf2.png

在日常工作中,PDF (Portable Document Format的简称,意为"可携带文档格式") 是我们比较常用的电子文档格式。PDF文件以 PostScript 语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果。

市面上的 PDF 工具,文档阅读基本是免费的,但是文档编辑很多都是需要收费的。面对PDF文档处理,是时候思考如何利用 Python 免费高效地处理任务了。想诱导我下载付费使用,是不可能的!今天我给大家分享一些免费高效的处理方法,彻底解放双手!

处理PDF的Python库

处理PDF的库比较多,有时也需要多种配合使用,今天我就介绍一下常用的库:

  • 1、PyPDF2:一个纯 python PDF库,能够分割,合并,裁剪和转换PDF文件的页面。它还可以向PDF文件添加自定义数据,查看选项和密码。它可以从PDF中检索文本和元数据,以及将整个文件合并在一起。
  • 2、ReportLab:它能快速创建PDF 文档。一款超好用的开源项目,用于创建复杂的、数据驱动的PDF文档和自定义矢量图形
  • 3、PDFMiner:一个从PDF文档中提取信息的工具。与其他PDF相关工具不同,它完全专注于获取和分析文本数据。
  • 4、pdfplumber,它是一个可以处理pdf格式信息的库,可以查找关于每个文本字符、矩阵、和行的详细信息,也可以对表格进行提取并进行可视化调试。

PDF 实操

1、选取指定页

可以利用 Python 从众多 PDF 页中,选择指定页

from PyPDF2 import PdfFileWriter, PdfFileReader

input1 = PdfFileReader("Python数据分析.pdf") 
writer = PdfFileWriter()

def choose_pdf(index):
    pages = input1.getNumPages()
    
    for page_num in range(pages):
        if page_num+1 not in index:
            continue
        page = input1.getPage(page_num)
        writer.addPage(page)
    out_file = open('out.pdf', 'wb')
    writer.write(out_file)
    out_file.close()
    
choose_pdf([1,2,3,4,5,6])

2、删除指定页

对于不需要的页,我们可以利用 Python 一键删除

from PyPDF2 import PdfFileWriter, PdfFileReader

input1 = PdfFileReader("source.pdf") 
writer = PdfFileWriter()

def delete_pdf(index):
    pages = input1.getNumPages()
    
    for page_num in range(pages):
        if page_num+1 in index:
            continue
        page = input1.getPage(page_num)
        writer.addPage(page)
    out_file = open('delete_out.pdf', 'wb')
    writer.write(out_file)
    out_file.close()
    
delete_pdf([2,3,4])

3、合并PDF

对于多个PDF 文件,我们可以利用 Python 一键合并

from PyPDF2 import PdfFileReader, PdfFileWriter

# 创建两个pdf文件对应的PdfFileReader对象
pdf_reader1 = PdfFileReader('source.pdf')
pdf_reader2 = PdfFileReader('delete_out.pdf')

# 创建PdfFileWriter对象
writer = PdfFileWriter()

# 遍历将第一个pdf文件中的每一页取出来
for page_num in range(pdf_reader1.getNumPages()):
    # 取出每一页对应的PageObject对象
    page = pdf_reader1.getPage(page_num)
    # 将当前取出来的页面添加到writer中
    writer.addPage(page)

# 遍历将第二个pdf文件中的每一页取出来
for page_num in range(pdf_reader2.getNumPages()):
    # 取出每一页对应的PageObject对象
    page = pdf_reader2.getPage(page_num)
    # 将当前取出来的页面添加到writer中
    writer.addPage(page)

# write(stream)  - 将添加到此对象的页面集合写入 PDF 文件 ,这儿的stream必须是以写的方式打开的文件对象
out_file = open('add_out.pdf', 'wb')
writer.write(out_file)
out_file.close()

4、添加水印

对于多个PDF 文件,我们可以利用 Python 一键合并

def add_watermark2pdf(input_pdf,output_pdf,watermark_pdf):
    watermark = PdfFileReader(watermark_pdf)
    watermark_page = watermark.getPage(0)
    pdf = PdfFileReader(input_pdf,strict=False)
    pdf_writer = PdfFileWriter()
    for page in range(pdf.getNumPages()):
        pdf_page = pdf.getPage(page)
        pdf_page.mergePage(watermark_page)
        pdf_writer.addPage(pdf_page)
    pdfOutputFile = open(output_pdf,'wb')   
#    pdf_writer.encrypt(user_pwd="1234",owner_pwd="01234")#设置pdf密码
    pdf_writer.write(pdfOutputFile)
    pdfOutputFile.close()
    
create_watermark("""更多内容关注公众号:Python学习与数据挖掘""")
input_pdf= 'source.pdf'
output_pdf= 'water_result.pdf'
watermark_pdf='water_mark.pdf' 
add_watermark2pdf(input_pdf,output_pdf,watermark_pdf)

5、PDF加密

我们可以设置用户和owner加密功能

pdf_writer.encrypt(user_pwd="12324",owner_pwd="021234")#设置pdf密码

推荐阅读

  • 就是这么牛!三行Python代码,让数据处理速度提高2到6倍
  • 方法论|这才是一个完整版的渠道落地页数据分析案例!
  • Python办公自动化|10个方法,是时候对Excel下手了
  • 8个好用到爆炸的Jupyter Notebook小技巧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值