20211020学习总结

一、PDF文件提取文字

import PyPDF2
from PyPDF2.pdf import PageObject

reader = PyPDF2.PdfFileReader(r'resources\XGBoost.pdf')
page = reader.getPage(0)  # type:PageObject
print(page.extractText())

二、将PDF文件转成PNG图片

def get_filename(file_path):
    """
    提取文件名
    :param file_path: 文件
    :return: 文件名
    """
    _, fullname = os.path.split(file_path)
    filename, _ = os.path.splitext(fullname)
    return fullname


def pdf_image(pdf_file, img_file, zoom_x=10, zoom_y=10, rotation_angle=0):
    """
    将PDF文件转成PNG图片
    :param pdf_file: PDF文件路径
    :param img_file: 保存图片的路径
    :param zoom_x: 缩放比例(横向)
    :param zoom_y: 缩放比例(纵向)
    :param rotation_angle: 旋转角度
    """
    # 打开PDF文件
    pdf = fitz.open(pdf_file)
    # 逐页读取PDF
    for page_num in range(0, pdf.pageCount):
        page_obj = pdf[page_num]
        # 设置缩放和旋转系数
        trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotation_angle)
        pm = page_obj.getPixmap(matrix=trans, alpha=False)
        temp = get_filename(pdf_file)
        # 开始写图像
        pm.writePNG(f'{img_file}{temp}_{page_num +1}.png')
    pdf.close()

if not os.path.exists('resources/'):
    os.makedirs('resources/')
pdf_image(r"resources\XGBoost.pdf", r"resources/", 2, 2)

三、在PDF文件中添加水印

import PyPDF2
from PyPDF2.pdf import PageObject
reader = PyPDF2.PdfFileReader(r'resources\watermark.pdf')
wm_page = reader.getPage(0)

reader = PyPDF2.PdfFileReader(r'resources\XGBoost.pdf')
writer = PyPDF2.PdfFileWriter()
# 拿到文件的每一页
for page_num in range(reader.getNumPages()):
    page_obj = reader.getPage(page_num)  # type: PageObject
    # 合并PDF
    page_obj.mergePage(wm_page)
    writer.addPage(page_obj)
with open(r'resources\XGBoost_watermarked.pdf', 'wb')as file:
    writer.write(file)

四、制作水印

from reportlab.lib.pagesizes import A4
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.ttfonts import TTFont
from reportlab.pdfgen import canvas

pdf_canvas = canvas.Canvas('resources/demo.pdf', pagesize=A4)
width, height = A4

# 绘图
image = canvas.ImageReader('resources/guido.jpg')
pdf_canvas.drawImage(image, 20, height - 395, 250, 375)

# 显示当前页
pdf_canvas.showPage()

# 注册字体文件
pdfmetrics.registerFont(TTFont('Font1', 'resources/fonts/Vera.ttf'))
pdfmetrics.registerFont(TTFont('Font2', 'resources/fonts/青呱石头体.ttf'))

# 写字
pdf_canvas.setFont('Font2', 40)
# 字体颜色:三原色-红绿蓝 透明度
pdf_canvas.setFillColorRGB(0.9, 0.5, 0.3, 1)
pdf_canvas.drawString(width // 2 - 120, height // 2, '你好,世界!')
pdf_canvas.setFont('Font1', 40)
pdf_canvas.setFillColorRGB(0, 1, 0, 0.5)
pdf_canvas.rotate(18)
pdf_canvas.drawString(250, 250, 'hello, world!')

# 保存
pdf_canvas.save()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值