当前位置: 首页 > news >正文

dede网站地图标签大学生实训网站建设心得

dede网站地图标签,大学生实训网站建设心得,wowslider wordpress,网站推荐免费的给PDF附件加“受控”水印的完整Python实现 功能需求 在实际工作中#xff0c;许多文件需要添加水印以标识其状态#xff0c;例如“受控”“机密”等。对于PDF文件#xff0c;添加水印不仅可以增强文件的可识别性#xff0c;还可以防止未经授权的使用。本代码的功能需求是…给PDF附件加“受控”水印的完整Python实现 功能需求 在实际工作中许多文件需要添加水印以标识其状态例如“受控”“机密”等。对于PDF文件添加水印不仅可以增强文件的可识别性还可以防止未经授权的使用。本代码的功能需求是 修复PDF文件在添加水印之前确保PDF文件是完整且可读的避免因文件损坏导致操作失败。 添加水印在PDF的每一页上添加指定的水印图像或文字水印可以设置位置、角度和透明度。 保存输出将添加水印后的PDF文件保存到指定路径并返回其二进制数据以便后续处理。 实现过程 修复PDF文件 使用PyMuPDF库打开PDF文件并尝试修复。如果文件损坏PyMuPDF可以尝试修复并保存为一个新的二进制流。 如果修复失败则直接返回原始的PDF二进制数据。 Python复制 def repair_pdf(self, input_pdf_binary):try:# 使用 PyMuPDF 打开并修复 PDFdoc fitz.open(streaminput_pdf_binary, filetypepdf)repaired_pdf_binary BytesIO()doc.save(repaired_pdf_binary)doc.close()repaired_pdf_binary.seek(0)return repaired_pdf_binary.read()except Exception as e:print(fError repairing PDF: {e})return input_pdf_binary 添加水印 使用reportlab库创建一个临时的PDF文件作为水印。水印可以是图像或文字支持设置位置、角度和透明度。 使用PyPDF2库将水印PDF与原始PDF合并。通过merge_page方法将水印添加到每一页。 Python复制 def add_watermark(self, input_pdf_binary, output_pdf, watermark_image, x_position30, y_position50, opacity1):# 尝试修复 PDFrepaired_pdf_binary self.repair_pdf(input_pdf_binary)input_pdf_obj PdfReader(BytesIO(repaired_pdf_binary)) # 从二进制数据中读取 PDFoutput_pdf_obj PdfWriter()output_buffer BytesIO()# 创建一个临时的 PDF 作为水印page_width, page_height A4[1], A4[0]c canvas.Canvas(output_buffer, pagesize(page_width, page_height))try:c.setFillColor(colors.white) # 将背景设置为白色c.setFillColor(colors.red) # 设置字体颜色为红色c.setFont(Helvetica, 12) # 设置字体和字体大小c.setFillAlpha(opacity) # 设置透明度c.setStrokeColor(colors.transparent) # 设置笔触颜色为透明img ImageReader(watermark_image)if x_position is not None and y_position is not None:c.saveState()c.translate(x_position, y_position)c.rotate(20)c.drawImage(img, 0, 0, width60, height25)c.restoreState()else:x (page_width - 60) / 2y (page_height - 25) / 2c.saveState()c.translate(x, y)c.rotate(20)c.drawImage(img, 0, 0, width60, height25)c.restoreState()except Exception as e:raise ValueError(fError drawing image: {e})c.showPage()c.save()# 将水印 PDF 与原始 PDF 合并watermark_pdf PdfReader(output_buffer)for page in input_pdf_obj.pages:page.merge_page(watermark_pdf.pages[0])output_pdf_obj.add_page(page)# 保存输出 PDFfinal_output_buffer BytesIO()output_pdf_obj.write(final_output_buffer)binary_data final_output_buffer.getvalue()with open(output_pdf, wb) as f:output_pdf_obj.write(f)return binary_data 调用示例 准备一个PDF文件和一个水印图像文件。 调用add_watermark方法指定输入PDF、输出路径、水印图像路径等参数。 Python复制 if __name__ __main__:from io import BytesIOfrom PyPDF2 import PdfReader, PdfWriterfrom reportlab.pdfgen import canvasfrom reportlab.lib.pagesizes import A4from reportlab.lib import colorsfrom reportlab.lib.utils import ImageReaderimport fitzclass WatermarkPDF:def repair_pdf(self, input_pdf_binary):try:doc fitz.open(streaminput_pdf_binary, filetypepdf)repaired_pdf_binary BytesIO()doc.save(repaired_pdf_binary)doc.close()repaired_pdf_binary.seek(0)return repaired_pdf_binary.read()except Exception as e:print(fError repairing PDF: {e})return input_pdf_binarydef add_watermark(self, input_pdf_binary, output_pdf, watermark_image, x_position30, y_position50, opacity1):repaired_pdf_binary self.repair_pdf(input_pdf_binary)input_pdf_obj PdfReader(BytesIO(repaired_pdf_binary))output_pdf_obj PdfWriter()output_buffer BytesIO()page_width, page_height A4[1], A4[0]c canvas.Canvas(output_buffer, pagesize(page_width, page_height))try:c.setFillColor(colors.white)c.setFillColor(colors.red)c.setFont(Helvetica, 12)c.setFillAlpha(opacity)c.setStrokeColor(colors.transparent)img ImageReader(watermark_image)if x_position is not None and y_position is not None:c.saveState()c.translate(x_position, y_position)c.rotate(20)c.drawImage(img, 0, 0, width60, height25)c.restoreState()else:x (page_width - 60) / 2y (page_height - 25) / 2c.saveState()c.translate(x, y)c.rotate(20)c.drawImage(img, 0, 0, width60, height25)c.restoreState()except Exception as e:raise ValueError(fError drawing image: {e})c.showPage()c.save()watermark_pdf PdfReader(output_buffer)for page in input_pdf_obj.pages:page.merge_page(watermark_pdf.pages[0])output_pdf_obj.add_page(page)final_output_buffer BytesIO()output_pdf_obj.write(final_output_buffer)binary_data final_output_buffer.getvalue()with open(output_pdf, wb) as f:output_pdf_obj.write(f)return binary_data# 示例调用watermark_pdf WatermarkPDF()with open(example.pdf, rb) as f:input_pdf_binary f.read()watermark_image watermark.pngoutput_pdf output_with_watermark.pdfwatermark_pdf.add_watermark(input_pdf_binary, output_pdf, watermark_image) 实现总结 本代码通过PyMuPDF修复PDF文件使用reportlab创建水印PDF并通过PyPDF2将水印合并到原始PDF中。整个过程支持自定义水印的位置、角度和透明度能够灵活地满足不同场景的需求。代码结构清晰易于扩展和维护适合在实际项目中使用。 让转型不迷航——邹工转型手札
http://www.hkea.cn/news/14273555/

相关文章:

  • 创建网站宝典广州市网站建设科技公司
  • 企业网站建设费用会计科目php中网站搜索功能实现
  • 局域网做网站 内网穿透wordpress模板 简约
  • 企业网站本身应该就是企业( )的一部分软件界面设计素材
  • 网站开发管理过程千库网素材免费下载官方
  • 建设银行北海分行网站免费做logo网站
  • 青海省住房和城乡建设部网站免费的网站软件下载
  • 贵阳网站制作方舟网络软件界面设计ui培训班
  • 网站建设招聘兼职县文化馆网站建设方案
  • 校园网站建设调研ui交互设计做什么
  • 地信网站建设做网站的销售好做吗
  • 全球搜网站结构优化
  • 开发网站的空间分录和嗲囡囡和做的网站
  • 建设厅考试网站在线h5制作工具
  • 青岛手机端建站模板wordpress 添加语言
  • 上海外贸网站推广哪家好html简单网页模板
  • 广东省建设八大员网站湖南省建设厅证件查询
  • 乐都企业网站建设公司做淘宝优惠券推广网站
  • 兰州易天网站建设公司有哪些?好的交互设计网站
  • 织梦栏目页不显示网站描述网络营销建设
  • 番禺吧关键词优化包含
  • 好看的网站的导航怎么做平昌县住房和城乡建设局网站
  • 长沙大型网站建设房产中介网站源码
  • 实用网站建设建设网站哪专业
  • 房地产培训网站建设不干净的软件下载网站
  • 做国外单的网站叫什么广告设计与制作课程
  • 网站开发结语qq炫舞开发公司
  • 域名备案成功怎么做网站重庆可视化网站制作
  • 别人做网站要把什么要过来网站开发工具的功能包括HTML或
  • 有没有做网页的网站wordpress 餐饮主题