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

自己做网站有名江苏州 网站制作

自己做网站有名,江苏州 网站制作,本地推广最有效的方法,wordpress搭建单机版PyMuPDF 简介 PyMuPDF是一个用于处理PDF文件的Python库#xff0c;它提供了丰富的功能来操作、分析和转换PDF文档。这个库的设计目标是提供一个简单易用的API,使得开发者能够轻松地在Python程序中实现PDF文件的各种操作。 PyMuPDF的主要特点如下#xff1a; 跨平台兼容性它提供了丰富的功能来操作、分析和转换PDF文档。这个库的设计目标是提供一个简单易用的API,使得开发者能够轻松地在Python程序中实现PDF文件的各种操作。 PyMuPDF的主要特点如下 跨平台兼容性PyMuPDF支持多种操作系统如Windows、macOS和Linux,可以在这些平台上运行Python程序。强大的PDF处理能力PyMuPDF提供了丰富的功能来操作PDF文件如读取、写入、分割、合并、旋转、裁剪等。此外它还支持加密和解密PDF文档以及提取文本、图像和元数据等信息。易于使用PyMuPDF的API设计简洁明了易于学习和使用。开发者可以通过简单的函数调用来实现各种PDF操作而无需深入了解底层细节。 PyMuPDF 安装及其依赖第三方框架 pip 安装 PyMuPDF 模块 pip install pymupdf 验证pymupdf 模块是否安装成功 import fitz import PIL# 打印pymupdf模块:基本信息 from fitz import TextPageprint(fitz.__doc__) PyMuPDF 1.22.5: Python bindings for the MuPDF 1.22.2 library. Version date: 2023-06-21 00:00:01. Built for Python 3.10 on win32 (64-bit). PyMuPDF 依赖第三方框架  当使用Pixmap.pil_save()和 Pixmap.pil_tobytes() 需要 Pillow模块 当使用Document.subset_fonts()时需要  FontTools模块 PyMuPDF 核心类 在PyMuPDF 核心类演示涉及类 其他未使用到的其他类:Archive档案、Colorspace(色彩空间对象)、DisplayList(显示列表对象)、DocumentWriter(文档编辑对象)、Identity(身份对象)、 IRect(长方形对象)、linkDest(连接目的对象)、Matrix(矩阵对象)、Outline(大纲)、Quad(四边形对象)、Shape(形状对象)、 Story(章节对象)、TextPage(文本页面对象)、TextWriter(文本写入对象)、Tools(工具类)、Xml(xml 文档对象) PyMuPDF 核心类演示 加载PDF文件 # 加载pdf 文件 doc fitz.open(E:\doc\opencv 4.1中文官方文档v1.1版.pdf) 获取Document 属性和方法 # 获取Document 文档对象的属性和方法 # 1、获取pdf 页数 pageCount doc.page_count print(pdf 页数, pageCount)# 2、获取pdf 元数据 metaData doc.metadata print(pdf 元数据:, metaData)# 3、获取pdf 目录信息 toc doc.get_toc() print(pdf 目录, toc) Page 属性和方法 通过Page 对象实现以下功能: • 您可以将页面呈现为光栅或矢量SVG图像可以选择缩放、旋转、移动或剪切页面。 • 您可以提取多种格式的页面文本和图像并搜索文本字符串。 Page 加载方法 page doc.load_page(pno) # loads page number pno of the document (0-based) page doc[pno] # the short formDocumnet 迭代器加载Page 方法 for page in doc:# do something with page# ... or read backwards for page in reversed(doc):# do something with page# ... or even use slicing for page in doc.pages(start, stop, step):# do something with page# 获取Page 页面对象的属性和方法 page doc.load_page(1) # 默认加载第一页 print(page 对象:, page) 检查页面的链接、批注或表单字段 # 1、获取Page 页面的链接、批注或表单字段 links page.get_links() for link in links:# 涉及Link 对象print(链接:, link)annots page.annots() for annot in annots:# 涉及Annot 对象print(批注:, annot)widgets page.widgets() for widget in widgets:# 涉及表单字段print(表单字段:, widget) 页面展示/页面图像保存到文件中 # 2、Page 页面-光栅图像 pix page.get_pixmap() print(打印页面图像对象:, pix) # 保存光栅图像图像,需要依赖第三方框架:Pillow pix.pil_save(page-%i.png % page.number) Page.get_pixmap()提供了许多用于控制图像的变体分辨率、颜色空间例如生成灰度图像或具有减色方案的图像、透明度、旋转、镜像、移位、剪切等。 Pixmap包含以下引用的许多方法和属性。其中包括整数宽度、高度每个像素和跨距一个水平图像行的字节数。属性示例表示表示图像数据的矩形字节区域Python字节对象。 温馨提示:page.get_svg_image()创建页面的矢量图像。  提取文本和图像 # 3、Page 获取文本\图像\其他信息 # 温馨提示:涉及TextPage 常量类型定义 text page.get_text(text) print(指定页面文本内容:, text) 对opt使用以下字符串之一以获取不同的格式 text默认带换行符的纯文本。无格式、无文字位置详细信息、无图像- blocks生成文本块段落的列表- words生成单词列表不包含空格的字符串- html创建页面的完整视觉版本包括任何图像。这可以通过internet浏览器显示- dict/json与HTML相同的信息级别但作为Python字典或resp.JSON字符串。- rawdict/rawjsondict/json的超级集合。它还提供诸如XML之类的字符详细信息。- xhtml文本信息级别与文本版本相同但包含图像。- xml不包含图像但包含每个文本字符的完整位置和字体信息。使用XML模块进行解释。 搜索文本 # 4、Page 文本检索 search page.search_for(图像的基本操作) print(打印检索文本的位置:, search) 提供一个矩形列表每个矩形都包含一个字符串“mupdf”不区分大小写。 PDF操作  PDF是唯一可以使用PyMuPDF修改的文档类型。其他文件类型是只读的。但是您可以将任何文档包括图像转换为PDF然后将所有PyMuPDF功能应用于转换果,Document.convert_to_pdf()。 Document.save()始终将PDF以其当前可能已修改状态存储在磁盘上。 通常您可以选择是保存到新文件还是仅将修改附加到现有文件“增量保存”这通常要快得多。 # Document 操作PDF页面 # 1、PDF 页面删除 # doc.delete_page(1) # 1、PDF 页面拷贝和移动 doc.copy_page(1) # 第一页移动最后一页,温馨提示移动的页面还在元PDF 文件中。 # 1、 PDF 插入页面, 返回插入页面对象 new_page doc.new_page(pno-1, width595, height842) # 插入页面, 设置文本 text 你的文本 point fitz.Point(50, 50) # 这是一个下x,y 二维坐标系在这个区域内插入你的文本 new_page.insert_text(point, text, fontsize20) # 2、Document 保存 doc.save(opencv pdf文件调整.pdf) # 3、Documemt 销毁 doc.close() PDF 删除方法 Document.delete_page() Document.delete_pages() PDF移动拷贝方法 Document.copy_page() Document.fullcopy_page() Document.move_page() PDF插入Page 方法 Document.insert_page() Document.new_page() PyMuPDF 核心功能模块封装 PDF 分割 每一页单独保存为一个pdf def split_per_page(input, output):if not os.path.exists(output):os.makedirs(output)doc fitz.open(input)for page in range(doc.page_count):dst_doc fitz.open()dst_doc.insert_pdf(doc,from_pagepage,to_pagepage)dst_doc.save(os.path.join(output,f{page}.pdf))dst_doc.close()doc.close()# 把每一个页面保存为一个pdf并保存在test文件夹中 split_per_page(test.pdf,test)范围内的页面保存为pdf  def split_range_page(input, output, range):if not os.path.exists(output):os.makedirs(output)doc fitz.open(input)start range[0] - 1end range[1] - 1dst_doc fitz.open()dst_doc.insert_pdf(doc, from_pagestart, to_pageend)dst_doc.save(os.path.join(output,range_page.pdf))dst_doc.close()doc.close()# 把1-10也保存为pdf保存在test文件夹中 split_range_page(test.pdf,test, [1,10])任意的页面保存为pdf def split_selected_page(input, output, pages):if not os.path.exists(output):os.makedirs(output)doc fitz.open(input)result map(lambda x: x - 1, pages)doc.select(list(result))doc.save(os.path.join(output,selected_pages.pdf))doc.close()# 把第一、三、八页面保存为pdf并保存在test文件夹中 split_selected_page(test.pdf,test,[1,3, 8])PDF 合并 import fitzdoc_a fitz.open(a.pdf) # open the 1st document doc_b fitz.open(b.pdf) # open the 2nd documentdoc_a.insert_pdf(doc_b) # merge the docs doc_a.save(ab.pdf) # save the merged document with a new filename# 把b.pdf合并到a.pdf保存为ab.pdfPDF 中的图片提取 import fitzdoc fitz.open(test.pdf) # open a documentfor page_index in range(len(doc)): # iterate over pdf pagespage doc[page_index] # get the pageimage_list page.get_images()# print the number of images found on the pageif image_list:print(fFound {len(image_list)} images on page {page_index})else:print(No images found on page, page_index)for image_index, img in enumerate(image_list, start1): # enumerate the image listxref img[0] # get the XREF of the imagepix fitz.Pixmap(doc, xref) # create a Pixmapif pix.n - pix.alpha 3: # CMYK: convert to RGB firstpix fitz.Pixmap(fitz.csRGB, pix)pix.save(page_%s-image_%s.png % (page_index, image_index)) # save the image as pngpix NonePDF 保存为图片 def covert2pic(zoom):doc fitz.open(test.pdf)total doc.page_countfor pg in range(total):page doc[pg]zoom int(zoom) #值越大分辨率越高文件越清晰rotate int(0)trans fitz.Matrix(zoom / 100.0, zoom / 100.0).prerotate(rotate)pm page.get_pixmap(matrixtrans, alphaFalse)lurl.pdf/%s.jpg % str(pg1)pm.save(lurl)doc.close()covert2pic(200)PDF 添加水印 def add_watermark(input, watermark):doc fitz.open(input)for page in doc:page.insert_image(page.bound(),filenamewatermark, overlayFalse)doc.save(os.path.join(test,watermark.pdf))doc.close()add_watermark(test.pdf,watermark.png) PDF 加密 PDF加密有两种形式 用户加密需要输入密码才能打开pdf拥有者加密可以防止打印、复制、添加注释、添加删除页面等功能 def encrypt_pdf():perm int(fitz.PDF_PERM_ACCESSIBILITY # always use this| fitz.PDF_PERM_PRINT # permit printing| fitz.PDF_PERM_COPY # permit copying| fitz.PDF_PERM_ANNOTATE # permit annotations) # 可以打印复制添加注释owner_pass owner # owner passworduser_pass user # user passwordencrypt_meth fitz.PDF_ENCRYPT_AES_256 # strongest algorithmdoc fitz.open(test.pdf) # empty pdfdoc.save(encrypt.pdf,encryptionencrypt_meth,owner_pwowner_pass,permissionsperm,user_pwuser_pass) # 同时使用# 这两个加密方式可以单独使用也可以同时使用# 单独使用用户加密 doc.save(encrypt.pdf,encryptionencrypt_meth,owner_pwowner_pass)PyMuPDF 在PyQT5 运用 功能要求在PyQT-5 展示pdf 文件. 效果展示: PyQT-5 UI效果展示和源文件 pdfshow.ui ?xml version1.0 encodingUTF-8? ui version4.0classForm/classwidget classQWidget nameFormproperty namegeometryrectx0/xy0/ywidth400/widthheight300/height/rect/propertyproperty namewindowTitlestringForm/string/propertywidget classQLabel namelabelproperty namegeometryrectx130/xy70/ywidth54/widthheight12/height/rect/propertyproperty nametextstringPDF展示/string/property/widget/widgetresources/connections/ /uipdfshow.py 源码 # -*- coding: utf-8 -*-# Form implementation generated from reading ui file pdfshow.ui # # Created by: PyQt5 UI code generator 5.15.9 # # WARNING: Any manual changes made to this file will be lost when pyuic5 is # run again. Do not edit this file unless you know what you are doing. import sysfrom PyQt5 import QtCore, QtWidgets from PyQt5.QtGui import QImage, QPixmap, QTransform from PyQt5.QtWidgets import QWidget, QApplication # 添加PDF 文件操作依赖 import fitzclass Ui_Form(QWidget):def __init__(self):super().__init__()self.label Noneself.setupUi()self.image()def setupUi(self):self.setObjectName(Form)self.resize(400, 300)self.label QtWidgets.QLabel(self)self.label.setGeometry(QtCore.QRect(130, 70, 54, 12))self.label.setObjectName(label)self.retranslateUi()QtCore.QMetaObject.connectSlotsByName(self)def retranslateUi(self):_translate QtCore.QCoreApplication.translateself.setWindowTitle(_translate(Form, Form))self.label.setText(_translate(Form, PDF展示))def image(self):file E:\doc\opencv 4.1中文官方文档v1.1版.pdf# 打开文件doc fitz.open(file)# 读取一页 0代表第1页page_one doc.load_page(1)# 将第一页转换为Pixmappage_pixmap page_one.get_pixmap()# 将Pixmap转换为QImageimage_format QImage.Format_RGBA8888 if page_pixmap.alpha else QImage.Format_RGB888page_image QImage(page_pixmap.samples, page_pixmap.width,page_pixmap.height, page_pixmap.stride, image_format)width page_image.width()height page_image.height()# QImage 转为QPixmappix QPixmap.fromImage(page_image)trans QTransform()trans.rotate(90) # 这里设置旋转角度new pix.transformed(trans)# 设置标签宽和高self.label.setFixedSize(400, 350)# 设置图片大小自适应标签self.label.setScaledContents(True)# 给标签设置图像self.label.setPixmap(new)if __name__ __main__:app QApplication(sys.argv)w Ui_Form()w.show()sys.exit(app.exec_())解决思路 使用PyMuPDF模块打开文件。读取第一页pdf文件第一页。从第一页获取图像是Pixmap类。使用PyQt5的QImage将上面的Pixmap转换为QImage。将QImage转换为QPixmap。将QPixmap设置给Label。
http://www.ho-use.cn/article/10820508.html

相关文章:

  • 苏州做网站平台软件编程专业
  • 小企业网站建设服务学院门户网站建设
  • 电脑可以做网站服务器吗烟台网站制作工具
  • 网站开发实训结果分析及其心得体会电商网
  • 怎么自己做免费网站网站竞价开户
  • 网站换程序301手机网站开发公司哪家好
  • 网页版拼多多商家版网站建设优化加盟代理
  • 怎样建设有价值的网站建站助手官网
  • 一个服务器可以建几个网站做网站最好的网络公司
  • 制作单页网站教程酒店网站制作
  • 申请绿色网站云主机 网站 多个二级域名 seo优化
  • 深圳网站设计兴田德润放心改版
  • 企业网站内的问答模式怎么做无锡网站怎么优化排名
  • 做家教网站代理seo营销型网站
  • 浙江怎样做网站网站建设公司专业网站开发需求
  • wordpress搜索引擎温州seo品牌优化软件
  • 济南智能网站建设哪家便宜厦门企业做网站
  • 企业网站怎么查做后期的网站
  • 网站建设个人网站建网站卖阀门
  • 玉树营销网站建设公司塘沽手机网站建设
  • 个人备案的网站网站推广工具推荐
  • 女装网站功能的建设好用的做微信公众号的网站
  • 泰州做网站价格做网站深圳
  • 吉林沈阳网站建设织梦做网站简单吗
  • 娄底网站制作做软件营销网站怎么样
  • 企业被网站骗做会员上海早晨新闻今天
  • 电商网站备案流程wordpress 文件调用规则
  • 跨境电商网站模板旅游兼职网站建设
  • 需要做网站建设和推广wordpress火车头但存图片
  • 江苏泰州网站建设计算机应用技术