关于Python 向pdf添加印章效果的思考及实现

我的环境是anaconda python3.6 和 其他的都是按照参考文章pip install 的环境

思路历程第一阶段

1.首先,肯定是想有一个函数可以直接实现,因为印章图片已经是去掉背景后的png图片了,即32bit(也就是RGBA格式),所以就想直接把图片放到指定位置不就可以了,然后去百度python中的做法,最后没有发现可用的库和函数(可能是我没有找到吧,有知道的也可以留言)
2.既然一步做不成我们就分两部做,然后有去百度,发现可以先将印章图片转为pdf,然后在和目标pdf进行合并,然后又开始上手,发现因为我是RGBA的图片,所以在直接转pdf的时候,图片的Alpha通道无一起写到pdf中,这个方法就又失败了。但是这里要说的是,24bit以下的图片就可以实现,因为他们都没有A通道,所以可以直接实现。
3.虽然上边的方法不行,但至少提供了思路,就是我可不可以先把目标pdf转图片,然后再把印章图片与其进行叠加,这样不就有了我要的效果,然后去百度,发现了2中方法,一种是用opencv 在python中就是cv2 库,另外一种用的PIL,这些都可以百度出来,不再细说,然后实现了带透明背景的印章和目标文件图片的叠加,效果不错,这个方法主要参考了下边这个博主的做法。

链接: 基于python的两张图片RGBA alpha 透明度混合实现.
有兴趣的可以参考参考,我也有在下边的评论提问,估计新手也会碰到我问的问题。

思路历程第二阶段

第一阶段确定了我们是先把目标pdf转为图片后再和印章图片合成,然后再把图片写回pdf中的总体思路,下边就是分步实现了,这里放一个关于python将pdf转图片的参考,用这个方法前百度了还有种用imagemagic做的,但是我的imagemagic安装后有问题,所以又找到了下边这种方法。

链接: windows下用Python把pdf文件转化为图片(png高清).
这里我在自己的需求上又加上了路径的拼接
代码如下

import fitz
import os

def run(target_file):
   #  打开PDF文件,生成一个对象
   doc = fitz.open(target_file)
   pic_path = r'E:\PythonFormat\pdf2image\all_pages' #这里的文件路径看你自己的项目路径,
   #我的项目是E:\PythonFormat\pdf2image 这个是我的项目路径,后边是要创建的文件夹路径
   # 判断路径文件夹是否存在,如果不存在我们就创建一个 好吧
   if not os.path.exists(pic_path):
       os.mkdir(pic_path)
     # 这里就是参考的上边连接的方法了,你们看人家的代码很容易明白
   for pg in range(doc.pageCount):
       page = doc[pg]
       rotate = int(0)
       # 每个尺寸的缩放系数为2,这将为我们生成分辨率提高四倍的图像。
       zoom_x = 2.0
       zoom_y = 2.0
       trans = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
       pm = page.getPixmap(matrix=trans, alpha=False)
       # pm.writePNG('%s.png' % pg)
       # 这里因为我要写入我上边创建的文件加下,所以我要进行路径的拼接,
       # 注意不要直接在这里去改pic_path,否则他会在原有path基础上向后追加新的字段,产生新的路径,一定要重新写的新的变量存储路径
       temppic_path = os.path.join(pic_path, (str(pg) + '.png'))
       print(temppic_path)
       pm.writePNG(temppic_path)
       print('done@@@')
   # 这里是因为我后边需要在最后一页加盖章,所以我要返回个关于页数的图片索引,去进行图片的寻找 
   # 这里减1是因为 pageCount 得到的是从1 开始的pdf页数,而我后边要索引的时候是从0 进行查查找的,所以先在这里 -1 
   return str(doc.pageCount -1)

好了,这里大概讲完了我的思路,因为图片的合成,基本就是用的我给的连接的方法,就不放代码了。

这里因为我不太会ps就不放我的图片了,我用的图片涉及个人信息了

补充:关于imagemagic实现将pdf转png图片的方法,可以参考下边这个博主的方法,安装不了imagemagic的请去留言中找地址,那里的地址是更新的

链接: 通过ImageMagick将pdf转为图片的方法.
有兴趣的可以参考参考,我也有在下边的评论提问,估计新手也会碰到我问的问题。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

songrx_it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值