在日常工作中,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)
结果示例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-useP2p1B-1599984008623)(https://imgkr2.cn-bj.ufileos.com/ca460ace-b3b9-4cd2-b31d-c78cffa02192.png?UCloudPublicKey=TOKEN_8d8b72be-579a-4e83-bfd0-5f6ce1546f13&Signature=fCNUrEpBpPeE3sXysbvuvjcp2AQ%253D&Expires=1600069551)]
5、PDF加密完整项目代码地址获取
我们可以设置用户和owner加密功能
pdf_writer.encrypt(user_pwd="12324",owner_pwd="021234")#设置pdf密码
是不是很简单?你想学吗?
此文转载文,如有侵权联系小编删除,著作权归作者所有!
原文地址:https://blog.csdn.net/weixin_38037405/article/details