亲爱的读者们,👋 在日常工作中,PDF文件无处不在,从文档共享到合同签署,它几乎覆盖了所有行业。而Python,作为强大的编程语言,提供了丰富的库来帮助我们轻松处理PDF文件。今天,我将分享10个实用的Python脚本,涵盖PDF的创建、编辑、提取信息以及转换等操作,让你在处理PDF文件时游刃有余。🌟
代码示例
1. PDF文件合并
from PyPDF2 import PdfMerger``def merge_pdfs(paths, output):` `merger = PdfMerger()` `for pdf in paths:` `merger.append(pdf)` `merger.write(output)` `merger.close()``merge_pdfs(["doc1.pdf", "doc2.pdf"], "merged.pdf")
2. PDF页面分割
from PyPDF2 import PdfReader, PdfWriter``def split_pdf(input_pdf, start_page, end_page, output_pdf):` `reader = PdfReader(input_pdf)` `writer = PdfWriter()` `for i in range(start_page, end_page + 1):` `writer.add_page(reader.pages[i])` `with open(output_pdf, "wb") as fp:` `writer.write(fp)``split_pdf("large_document.pdf", 10, 20, "pages_10_to_20.pdf")
3. 文本提取
from PyPDF2 import PdfReader``def extract_text(pdf_path):` `reader = PdfReader(pdf_path)` `text = ""` `for page in reader.pages:` `text += page.extract_text()` `return text``text = extract_text("example.pdf")``print(text)
4. 创建PDF
from fpdf import FPDF``def create_pdf(output):` `pdf = FPDF()` `pdf.add_page()` `pdf.set_font("Arial", size=12)` `pdf.cell(200, 10, txt="Hello, world!", ln=True)` `pdf.output(output)``create_pdf("hello_world.pdf")
5. 添加水印
from PyPDF2 import PdfReader, PdfWriter, PdfMerger``def add_watermark(input_pdf, watermark_pdf, output_pdf):` `base = PdfReader(input_pdf).pages[0]` `watermark = PdfReader(watermark_pdf).pages[0]` `packet = io.BytesIO()` `can = canvas.Canvas(packet, pagesize=letter)` `can.saveState()` `can.translate(cmmtopage[0], cmmtopage[1])` `can.drawInlineImage(watermark, 0, 0, width=watermark.mediabox.getWidth(), height=watermark.mediabox.getHeight())` `can.restoreState()` `can.save()` `packet.seek(0)` `new_pdf = PdfReader(packet)` `output = PdfMerger()` `output.append(base)` `output.merge(1, new_pdf)` `output.write(output_pdf)``add_watermark("original.pdf", "watermark.pdf", "watermarked.pdf")
请注意,上述add_watermark函数中的水印添加逻辑使用了PyPDF2的底层方法,这可能需要进一步调整以适应具体需求。
6. PDF转图片
from pdf2image import convert_from_path``def pdf_to_images(pdf_path, output_folder):` `images = convert_from_path(pdf_path)` `for i, image in enumerate(images):` `image.save(f"{output_folder}/page_{i}.jpg", "JPEG")``pdf_to_images("example.pdf", "images")
7. 图片转PDF
from PIL import Image``def images_to_pdf(image_paths, output_pdf):` `images = [Image.open(x) for x in image_paths]` `images[0].save(output_pdf, save_all=True, append_images=images[1:])``images_to_pdf(["image1.jpg", "image2.jpg"], "images.pdf")
8. 旋转PDF页面
from PyPDF2 import PdfWriter, PdfReader``def rotate_pages(pdf_path, output_pdf):` `pdf_writer = PdfWriter()` `pdf = PdfReader(pdf_path)` `for page in pdf.pages:` `page.rotate(90)` `pdf_writer.add_page(page)` `with open(output_pdf, "wb") as out:` `pdf_writer.write(out)``rotate_pages("example.pdf", "rotated.pdf")
9. PDF元数据修改
from PyPDF2 import PdfWriter, PdfReader``def modify_metadata(input_pdf, output_pdf, title="New Title"):` `pdf = PdfReader(input_pdf)` `pdf.Writer = PdfWriter()` `info = pdf.Writer._info` `info.title = title` `pdf.Writer.write(output_pdf)``modify_metadata("example.pdf", "modified.pdf", "Updated Title")
10. 密码保护PDF
from PyPDF2 import PdfWriter, PdfReader``def encrypt_pdf(input_pdf, output_pdf, password):` `pdf = PdfReader(input_pdf)` `pdf_writer = PdfWriter()` `pdf_writer.append_pages_from_reader(pdf)` `pdf_writer.encrypt(user_pwd=password, owner_pwd=None, use_128bit=True)` `with open(output_pdf, "wb") as fh:` `pdf_writer.write(fh)``encrypt_pdf("example.pdf", "protected.pdf", "mysecretpassword")
总结
以上就是今天的分享,这10个脚本涵盖了PDF处理的各个方面,从基本的文本提取到复杂的页面旋转和密码保护。无论你是初学者还是经验丰富的开发者,掌握这些技巧都将极大地提升你处理PDF文件的能力。🚀
在实际应用中,记得根据自己的需求对脚本进行适当的调整和优化。Python的强大之处在于其灵活性和可扩展性,这意味着你可以基于这些基础脚本创建更复杂、更个性化的PDF处理工具。🌟
注意:上述脚本使用了多个不同的Python库,包括PyPDF2, fpdf, pdf2image, 和Pillow。在运行之前,请确保已经通过pip安装了这些库。
黑客&网络安全如何学习
今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。
1.学习路线图
攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
3.技术文档和电子书
技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
4.工具包、面试题和源码
“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。
还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取
CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享
最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。
这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。
参考解析:深信服官网、奇安信官网、Freebuf、csdn等
内容特点:条理清晰,含图像化表示更加易懂。
内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…
因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取