日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

Python添加pdf水印

發(fā)布時(shí)間:2025/6/16 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python添加pdf水印 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

0、用到兩個(gè)擴(kuò)展模塊:ReportLab、PyPDF2。

1、創(chuàng)建水印PDF。

1)、創(chuàng)建文字水印pdf文件

代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #encoding=utf-8 #author:?walker #date:?2014-03-17 #function:?創(chuàng)建文字水印pdf from?reportlab.pdfgen?import?canvas from?reportlab.lib.units?import?cm def?create_watermark(content): ????#默認(rèn)大小為21cm*29.7cm ????c?=?canvas.Canvas("mark.pdf",?pagesize?=?(30*cm,?30*cm)) ????#移動(dòng)坐標(biāo)原點(diǎn)(坐標(biāo)系左下為(0,0)) ????c.translate(10*cm,?5*cm) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????#設(shè)置字體 ????c.setFont("Helvetica",?80) ????#指定描邊的顏色 ????c.setStrokeColorRGB(0,?1,?0) ????#指定填充顏色 ????c.setFillColorRGB(0,?1,?0) ????#畫一個(gè)矩形 ????c.rect(cm,?cm,?7*cm,?17*cm,?fill=1) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????#旋轉(zhuǎn)45度,坐標(biāo)系被旋轉(zhuǎn) ????c.rotate(45) ????#指定填充顏色 ????c.setFillColorRGB(0.6,?0,?0) ????#設(shè)置透明度,1為不透明 ????c.setFillAlpha(0.3) ????#畫幾個(gè)文本,注意坐標(biāo)系旋轉(zhuǎn)的影響 ????c.drawString(3*cm,?0*cm,?content) ????c.setFillAlpha(0.6) ????c.drawString(6*cm,?3*cm,?content) ????c.setFillAlpha(1) ????c.drawString(9*cm,?6*cm,?content) ???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? ????#關(guān)閉并保存pdf文件 ????c.save() create_watermark('walker')

效果圖:

2)、創(chuàng)建圖片水印pdf。

代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #encoding=utf-8 #author:?walker #date:?2014-03-17 #function:?創(chuàng)建圖片水印pdf from?reportlab.pdfgen?import?canvas from?reportlab.lib.units?import?cm def?create_watermark(f_jpg): ????f_pdf?=?'mark.pdf' ????w_pdf?=?20*cm ????h_pdf?=?20*cm ??????????????????????????????????????????????????????????????????????????????????????????? ????c?=?canvas.Canvas(f_pdf,?pagesize?=?(w_pdf,?h_pdf)) ????c.setFillAlpha(0.3)?#設(shè)置透明度 ????print?c.drawImage(f_jpg,?7*cm,?7*cm,?6*cm,?6*cm)????#這里的單位是物理尺寸 ????c.save() create_watermark('eg.png')

效果圖:


2、添加水印。

代碼:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #encoding=utf-8 #author:?walker #date:?2014-03-18 #function:給pdf添加水印 from?PyPDF2?import?PdfFileWriter,?PdfFileReader from?reportlab.pdfgen?import?canvas #所有路徑為絕對(duì)路徑 def?add_watermark(pdf_file_in,?pdf_file_mark,?pdf_file_out): ????pdf_output?=?PdfFileWriter() ????input_stream?=?file(pdf_file_in,?'rb') ????pdf_input?=?PdfFileReader(input_stream) ???????????????????????????????????????????????????????????????????????????????? ????#?PDF文件被加密了 ????if?pdf_input.getIsEncrypted(): ????????print?'該P(yáng)DF文件被加密了.' ????????#?嘗試用空密碼解密 ????????try: ????????????pdf_input.decrypt('') ????????except?Exception,?e: ????????????print?'嘗試用空密碼解密失敗.' ????????????return?False ????????else: ????????????print?'用空密碼解密成功.' ????#?獲取PDF文件的頁(yè)數(shù) ????pageNum?=?pdf_input.getNumPages() ????#讀入水印pdf文件 ????pdf_watermark?=?PdfFileReader(file(pdf_file_mark,?'rb')) ????#?給每一頁(yè)打水印 ????for?i?in?range(pageNum): ????????page?=?pdf_input.getPage(i) ????????page.mergePage(pdf_watermark.getPage(0)) ????????page.compressContentStreams()???#壓縮內(nèi)容 ????????pdf_output.addPage(page)

效果圖:


3、這種方式唯一的缺點(diǎn)就是效率極低,不適合大批量文件處理。用PDFlib處理效率會(huì)比這種方式高幾十倍??蓞⒖?#xff1a;用PDFlib給PDF添加水印(Python)



***?walker?***

本文轉(zhuǎn)自walker snapshot博客51CTO博客,原文鏈接http://blog.51cto.com/walkerqt/1378142如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者


RQSLT

總結(jié)

以上是生活随笔為你收集整理的Python添加pdf水印的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。