python 在pdf指定位置添加公章或者照片

news/2024/11/30 0:44:44/

python 在pdf指定位置添加公章或者照片

-- coding: utf-8 --

import fitz
import os
from django.conf import settings
from PIL import Image as pilImage

author = ‘JayChen’

class ProcessPDF:
def init(self, pdf_path, pdf_name, pdf_out_path, pdf_out_name, seal, clarity=1.34):
self.pdf_path = pdf_path
self.pdf_name = pdf_name
self.pdf_out_path = pdf_out_path
self.pdf_out_name = pdf_out_name
self.clarity = clarity
self.pdf = r"D:\2-python\8-河源\90、PDF添加公章\temp\宗地图.pdf"
self.pdf_out = r"D:\2-python\8-河源\90、PDF添加公章\temp\宗地图1.pdf"
self.seal = seal

def merge_img(self):"""图片叠加"""img1 = pilImage.open(self.img_path)  # PDF图片seal_img = pilImage.open(self.seal)  # 公司印章图片layer = pilImage.new('RGBA', img1.size, (0, 0, 0, 0))print(img1.size[0] - 200, img1.size[1] - 250)layer.paste(seal_img, (0, 500))out = pilImage.composite(layer, img1, layer)self.merge_path = os.path.join(self.pdf_path, 'out.png')out.save(self.merge_path)def pdf_to_img(self):"""PDF转化为图片"""doc = fitz.open(self.pdf)for pg in range(doc.pageCount):page = doc[pg]rotate = int(0)zoom_x = self.clarityzoom_y = self.claritytrans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)pm = page.getPixmap(matrix=trans, alpha=False)path = r"D:\2-python\8-河源\90、PDF添加公章\1.png"pm.writePNG(path)self.img_path = r"D:\2-python\8-河源\90、PDF添加公章\1.png"def img_to_pdf(self):"""图片转化为PDF"""doc = fitz.open()imgdoc = fitz.open(self.merge_path)pdfbytes = imgdoc.convertToPDF()  # 使用图片创建单页的 PDFimgpdf = fitz.open("pdf", pdfbytes)doc.insertPDF(imgpdf)  # 将当前页插入文档doc.save(self.pdf_out)  # 保存pdf文件doc.close()def out(self):self.pdf_to_img()  # PDF转化为图片self.merge_img()  # 合并图片self.img_to_pdf()  # 图片转化为PDF

def run():
“”"
pdf_path: PDF文件的路径
pdf_name:PDF文件名
pdf_out_path:PDF输出路径
pdf_out_name:PDF输出文件名
seal: 公章路径
clarity:可选参数,可以调整pdf清晰度,默认1.34,数值越大,清晰度越高
“”"
pdf_path = r"D:\2-python\8-河源\90、PDF添加公章\temp"
pdf_name = ‘宗地图.pdf’
pdf_out_path = r"D:\2-python\8-河源\90、PDF添加公章\temp\宗地图1.pdf"
pdf_out_name = ‘out.pdf’
seal = r"D:\2-python\8-河源\90、PDF添加公章\aaa.png"
pdf = ProcessPDF(pdf_path=pdf_path,
pdf_name=pdf_name,
pdf_out_path=pdf_out_path,
pdf_out_name=pdf_out_name,
seal=seal,
clarity=1.34)
pdf.out()

if name == ‘main’:
run()


http://www.ppmy.cn/news/94655.html

相关文章

【蓝桥杯选拔赛真题57】Scratch计数游戏 少儿编程scratch图形化编程 蓝桥杯选拔赛真题讲解

目录 scratch计数游戏 一、题目要求 编程实现 二、案例分析 1、角色分析

MIT6824——lab4(实现一个分片kv存储)的一些实现,问题,和思考

Part A 分片控制器 1. 整体思路 和lab3A一样,shardctler也是一个服务,由客户端调用。这个服务建立在raft集群上,保证容错。 shardctler也应该保证线性一致性和重复请求的问题,因此也需要记录clientid和messageid。 shardctler保…

Python数据分析案例28——西雅图交通事故预测(不平衡样本处理)

本次案例适合机器学习数据科学方向的同学。 引言(废话集) 交通事故是一个严重的公共安全问题,在全球范围内每年都有成千上万的人死于交通事故。随着交通运输的发展和城市化进程的加速,交通事故已成为制约城市发展和人民幸福的主要因素之一。因此&#x…

STM32F4_I2C(从机EEPROM/MPU-6050)协议详解

目录 1. I2C是什么 2. I2C物理层介绍 3. I2C协议层介绍 3.1 I2C基本读写过程 3.1.1 通讯复合格式 3.2 通讯的起始和停止信号 3.3 数据有效性 3.4 地址及数据方向 3.5 响应 4. STM32的I2C特性及架构 4.1 I2C架构剖析 5. I2C通讯过程 5.1 主发送器 5.2 主接收器 6…

中间件篇2:中间件交付云原生之Operator

为什么我们需要Operator? 编写Operator其目的是将部署从文档化转为代码化,从人工部署转为自动化部署,即“部署即代码”,但还不是纯粹的部署即代码,因为基础设施依然需要手动去申请。 例如部署网络接入器(我司基于百度开源BFE二次开发的七层流量代理网关),我们需要先部…

攫取 RGB图像 和 PCM音频 数据

一、获取源码 1. 下载地址 Github: https://github.com/Gaaagaa/MediaGrabber 2. 编译提醒 这个测试程序,是使用 QtCreator 写的 Qt 界面程序,调用我封装好的 vlc_mgrabber_t 类实现了一个简单的播放器。MFC的我也写过相应的测试程序,这里…

games103——作业4

实验四主要使用 Shallow Wave 模拟流体 完整项目已上传至github。 文章目录 Height Feild(高度场)更新高度场更新速度场 Shallow Wave EquationDiscretization(离散化)一阶导数二阶导数 Discretized Shallow Wave EquationSolution 1Solution 2Pressure(压强)Viscosity(粘滞) 算…

深度探索:使用FFmpeg实现视频Logo的添加与移除

深度探索:使用FFmpeg实现视频Logo的添加与移除 前言一、FFmpeg简介(Introduction to FFmpeg)1.1 FFmpeg的定义(Definition of FFmpeg)1.2 FFmpeg的功能(Functions of FFmpeg)1.3 FFmpeg的安装&a…