📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
合并多个PDF文件
from PyPDF2 import PdfMerger
def merge_pdfs(paths, output):
merger = PdfMerger()
for pdf in paths:
merger.append(pdf)
merger.write(output)
merger.close()
paths = ['/path/to/file1.pdf', '/path/to/file2.pdf']
output = '/path/to/merged.pdf'
merge_pdfs(paths, output)
拆分PDF文件
from PyPDF2 import PdfReader, PdfWriter
def split_pdf(input_path, start_page, end_page, output_path):
with open(input_path, 'rb') as file:
pdf = PdfReader(file)
writer = PdfWriter()
for i in range(start_page - 1, end_page):
writer.add_page(pdf.pages[i])
with open(output_path, 'wb') as output:
writer.write(output)
input_path = '/path/to/input.pdf'
start_page = 1
end_page = 5
output_path = '/path/to/output.pdf'
split_pdf(input_path, start_page, end_page, output_path)
加密PDF文件
from PyPDF2 import PdfWriter, PdfReader
def encrypt_pdf(input_path, output_path, password):
with open(input_path, 'rb') as file:
pdf = PdfReader(file)
writer = PdfWriter()
for page in pdf.pages:
writer.add_page(page)
writer.encrypt(password)
with open(output_path, 'wb') as output:
writer.write(output)
input_path = '/path/to/input.pdf'
output_path = '/path/to/encrypted.pdf'
password = 'mysecretpassword'
encrypt_pdf(input_path, output_path, password)
解密PDF文件
from PyPDF2 import PdfReader, PdfWriter
def decrypt_pdf(input_path, output_path, password):
with open(input_path, 'rb') as file:
pdf = PdfReader(file)
if not pdf.is_encrypted or pdf.decrypt(password) == 0:
raise ValueError("Password incorrect or file not encrypted.")
writer = PdfWriter()
for page in pdf.pages:
writer.add_page(page)
with open(output_path, 'wb') as output:
writer.write(output)
input_path = '/path/to/encrypted.pdf'
output_path = '/path/to/decrypted.pdf'
password = 'mysecretpassword'
decrypt_pdf(input_path, output_path, password)
提取PDF中的文本
from PyPDF2 import PdfReader
def extract_text_from_pdf(pdf_path):
with open(pdf_path, 'rb') as file:
pdf = PdfReader(file)
text = ''
for page in pdf.pages:
text += page.extract_text()
return text
pdf_path = '/path/to/input.pdf'
text = extract_text_from_pdf(pdf_path)
print(text)
将文本添加到PDF页面
from PyPDF2 import PdfWriter, PdfReader
from reportlab.lib.pagesizes import letter
from reportlab.pdfgen import canvas
def add_text_to_pdf(pdf_path, output_path, text, x, y):
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
can.drawString(x, y, text)
can.save()
packet.seek(0)
new_pdf = PdfReader(packet)
existing_pdf = PdfReader(open(pdf_path, "rb"))
output = PdfWriter()
page = existing_pdf.pages[0]
page.merge_page(new_pdf.pages[0])
output.add_page(page)
outputStream = open(output_path, "wb")
output.write(outputStream)
outputStream.close()
pdf_path = '/path/to/input.pdf'
output_path = '/path/to/output_with_text.pdf'
text = 'This is some text.'
x = 50
y = 750
add_text_to_pdf(pdf_path, output_path, text, x, y)
添加水印到PDF
from PyPDF2 import PdfReader, PdfWriter
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
def add_watermark(input_pdf, output_pdf, watermark_text):
watermark = canvas.Canvas("/tmp/watermark.pdf", pagesize=letter)
watermark.saveState()
watermark.setFont("Helvetica", 80)
watermark.rotate(45)
watermark.setFillAlpha(0.1)
watermark.drawString(150, 300, watermark_text)
watermark.restoreState()
watermark.save()
watermark_pdf = PdfReader(open("/tmp/watermark.pdf", "rb"))
input_pdf = PdfReader(open(input_pdf, "rb"))
output_pdf = PdfWriter()
watermark_page = watermark_pdf.pages[0]
for page in input_pdf.pages:
page.merge_page(watermark_page)
output_pdf.add_page(page)
outputStream = open(output_pdf, "wb")
output_pdf.write(outputStream)
outputStream.close()
input_pdf = '/path/to/input.pdf'
output_pdf = '/path/to/output_with_watermark.pdf'
watermark_text = 'Confidential'
add_watermark(input_pdf, output_pdf, watermark_text)
删除PDF页面
from PyPDF2 import PdfReader, PdfWriter
def remove_pages(input_pdf, output_pdf, page_numbers):
input_pdf = PdfReader(open(input_pdf, "rb"))
output_pdf = PdfWriter()
for i, page in enumerate(input_pdf.pages):
if i + 1 not in page_numbers:
output_pdf.add_page(page)
outputStream = open(output_pdf, "wb")
output_pdf.write(outputStream)
outputStream.close()
input_pdf = '/path/to/input.pdf'
output_pdf = '/path/to/output_without_pages.pdf'
page_numbers = [1, 3] # Pages to remove
remove_pages(input_pdf, output_pdf, page_numbers)
PDF页面旋转
from PyPDF2 import PdfReader, PdfWriter
def rotate_pages(input_pdf, output_pdf, page_numbers, angle):
input_pdf = PdfReader(open(input_pdf, "rb"))
output_pdf = PdfWriter()
for i, page in enumerate(input_pdf.pages):
if i + 1 in page_numbers:
page.rotate(angle)
output_pdf.add_page(page)
outputStream = open(output_pdf, "wb")
output_pdf.write(outputStream)
outputStream.close()
input_pdf = '/path/to/input.pdf'
output_pdf = '/path/to/output_rotated.pdf'
page_numbers = [2, 4] # Pages to rotate
angle = 90 # Rotation angle (90, 180, 270)
rotate_pages(input_pdf, output_pdf, page_numbers, angle)
将HTML转换为PDF
from weasyprint import HTML
def html_to_pdf(html_path, output_path):
HTML(html_path).write_pdf(output_path)
html_path = '/path/to/input.html'
output_path = '/path/to/output.pdf'
html_to_pdf(html_path, output_path)
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】