5 python 页面说明_PDF 的各种操作,我用 Python 来实现(附网站和操作指导)

news/2024/5/10 4:30:14/文章来源:https://blog.csdn.net/weixin_31856057/article/details/112740858

导言

PDF 处理是日常工作中的常见需求,包括 PDF 合并、删除、提取等。更复杂的任务如:将 PDF 转换成 图像。

下面通过几个简单的例子和一份代码,帮助大家解决上面的需求,操作非常简单。

在文末我会提供一份源码和一个神奇的 PDF 处理网站帮你解决 PDF 处理的烦恼。

PyMuPDF 介绍

为什么使用 Python,那还不是 Python 有着强大的第三方工具包,我们想要的功能兴许就有。

PyMuPDF 就是我们需要的工具,官方文档对他的简介是

PyMuPDF 是针对 MuPDF 的 Python 绑定,它是一个轻量级 PDF 和 XPS 查看器。MuPDF 可以访问 PDF,XPS,OpenXPS,CBZ(漫画书档案),FB2 和 EPUB(电子书)格式的文件。这些是扩展名为.pdf,.xps,.oxps,.cbz,.fb2 或.epub 的文件(因此您可以使用 Python 开发电子书查看器)。

官方文档:https://pymupdf.readthedocs.io/en/latest/intro.html

这里有个细节需要说明的是,Python 的第三方包一般是安装的名称和导入的名称是一样的,比如 numpy 的安装和使用是

pip install numpy # numpy 包的安装

import numpy  # numpy 包的导入

但是对于 PyMuPDF  这个包就不一样了,安装和使用的包名是不一样的,这个是历史遗留下来的原因,知道有这回事就行。

PyMuPDF  的安装是这样子的

pip install PyMuPDF
ed6e4269a78bf82b30177018cabdcbb0.png

PyPI 源:https://pypi.org/project/PyMuPDF/

PyMuPDF  的导入是这样子的

import fitz
9e67bd405bdee5efb70fdf4354721492.png

PDF 各种处理

拆分与提取

拆分与提取 PDF 文件的,使用的是 clean 命令,同时该命令也可以用于文档加密,压缩、删除页面等操作,基本说明如下:

python -m fitz clean -h
usage: fitz clean [-h] [-password PASSWORD]
                [-encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256}]
                [-owner OWNER] [-user USER] [-garbage {0,1,2,3,4}]
                [-compress] [-ascii] [-linear] [-permission PERMISSION]
                [-sanitize] [-pretty] [-pages PAGES]
                input output

-------------- optimize PDF or create sub-PDF if pages given --------------

positional arguments:
input                 PDF filename
output                output PDF filename

optional arguments:
-h, --help            show this help message and exit
-password PASSWORD    password
-encryption {keep,none,rc4-40,rc4-128,aes-128,aes-256}
                      encryption method
-owner OWNER          owner password
-user USER            user password
-garbage {0,1,2,3,4}  garbage collection level
-compress             compress (deflate) output
-ascii                ASCII encode binary data
-linear               format for fast web display
-permission PERMISSION
                      integer with permission levels
-sanitize             sanitize / clean contents
-pretty               prettify PDF structure
-pages PAGES          output selected pages, format: 1,5-7,50-N

以下命令只需在终端运行即可:

参数:2-N 代表去除第一页

python -m fitz clean -sanitize -pages 2-N F:\视觉工程师必须知道的工业相机50问.pdf F:\去除第一页.pdf

其他功能请自行尝试

提取字体和图像(非 PDF 页面)

将字体或图像从选定的 PDF 页面提取到所需目录,基本说明如下:

python -m fitz extract -h
usage: fitz extract [-h] [-images] [-fonts] [-output OUTPUT] [-password PASSWORD]
                    [-pages PAGES]
                    input

--------------------- extract images and fonts to disk --------------------

positional arguments:
input                 PDF filename

optional arguments:
-h, --help            show this help message and exit
-images               extract images
-fonts                extract fonts
-output OUTPUT        output directory, defaults to current
-password PASSWORD    password
-pages PAGES          only consider these pages, format: 1,5-7,50-N

视觉工程师必须知道的工业相机50问.pdf 文件中的图片和字体提取到 提取结果 文件夹中

python -m fitz extract -images -fonts -output F:\提取结果 F:\视觉工程师必须知道的工业相机50问.pdf
saved 9 fonts to 'F:\提取结果'
saved 6 images to 'F:\提取结果'
ae5e58a5c002950de49fb7b14a2f04a3.png

合并多份文档

合并多份 PDF 文档,使用的是 join 命令,可以指定页面进行合并,同时需要关注 PDF 是否需要密码才能打开,基本说明如下:

python -m fitz join -h
usage: fitz join [-h] -output OUTPUT [input [input ...]]

---------------------------- join PDF documents ---------------------------

positional arguments:
input           input filenames

optional arguments:
-h, --help      show this help message and exit
-output OUTPUT  output filename

specify each input as 'filename[,password[,pages]]'

以下命令只需在终端运行即可:合并两份文档的全部

python -m fitz join -output "F:\合并两份文档.pdf" "F:\视觉工程师必须知道的工业相机50问.pdf" "F:\Modern CMake文档.pdf"

合并两份文档的部分,选择 视觉工程师必须知道的工业相机50问 文件的第一页和  Modern CMake文档.pdf 的 5 到最后一页进行合并,下面语句中有两个 ,, 是因为要合并的文档不需要密码,如果需要密码,就把两个逗号替换成 密码即可。

  • 5-N 代表第五页开始到文档的末尾
python -m fitz join -output F:\合并两份文档.pdf F:\视觉工程师必须知道的工业相机50问.pdf,,1 "F:\Modern CMake文档.pdf",,5-N

PDF 转换成图片

这个功能没办法像上面那样一个命令就能解决,不过通过查看文档,我们也不难写出代码

import sys, fitz, os, datetime

def pyMuPDF_fitz(pdfPath, imagePath):
    startTime_pdf2img = datetime.datetime.now()#开始时间

    print("imagePath="+imagePath)
    pdfDoc = fitz.open(pdfPath) # 打开文件
    for pg in range(pdfDoc.pageCount): # 遍历所有页面
        page = pdfDoc[pg]
        rotate = int(0) # 页面旋转角度
        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        zoom_x = 1.33333333 #(1.33333333-->1056x816)   (2-->1584x1224)
        zoom_y = 1.33333333
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pix = page.getPixmap(matrix=mat, alpha=False)

        if not os.path.exists(imagePath):#判断存放图片的文件夹是否存在
            os.makedirs(imagePath) # 若图片文件夹不存在就创建

        pix.writePNG(imagePath+'/'+'images_%s.png' % pg)#将图片写入指定的文件夹内

    endTime_pdf2img = datetime.datetime.now()#结束时间
    print('pdf2img时间=',(endTime_pdf2img - startTime_pdf2img).seconds)

if __name__ == "__main__":
    pdfPath = './视觉工程师必须知道的工业相机50问.pdf'
    imagePath = './提取结果'
    pyMuPDF_fitz(pdfPath, imagePath)
旋转 10 度的结果
06c2e92a220e7d660614d0e9cc57f70d.png

神奇的网站明天再放出,哈哈哈~~~

以上就是 PDF 处理的几个常用功能,希望能够帮到你,喜欢的朋友感谢三连~~~

参考:

  • https://pymupdf.readthedocs.io/en/latest/index.html
  • https://www.jianshu.com/p/f57cc64b9f5e

End

码农升级

85fd7fe56bc5d8926012c9eb0830bc52.png

长按二维码关注

c4bc7f57369468da50c2ab7e1051581c.png你点的每个在看,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_739193.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用CSS3制作网站常用的小三角形

现在在前端开发中,经常会看到一些小三角形,如一些导航的下拉菜单,还有一些聊天信息的气泡模式,很多时候我们都是通过切图片的方法来制作,今天零度给大家分享一个完全通过css3实现的小三角效果。 先上html代码&#xff…

java建立本地网站,Eclipse搭建本地动态网站环境

准备Eclipse和Tomcat完成Web容器的配置在Eclipse中配置Tomcat (web容器)1、选择window->show view->other->servers 下面出现了servers点击 no servers are available click this link to create a new server -> 选择Tomcat7(下载的是7)->点击下一步->browe…

ecshop lbi替换为html,ecshop商城网站首页幻灯片替换成自定义js轮播方法

ecshop商城网站的首页都会有一个首页主广告位,可以不停的播放网站的一些图片。但是程序自带的首页幻灯片样式特别单一,而且首页幻灯片还带有黑色边框,不是很好看。下面学做网站论坛总结的将ecshop商城网站首页幻灯片替换成自定义js轮播方法和…

tp5限制地址栏直接访问_教你如何限制访问视频网站的方法

寝室所在的局域网里网速极慢,原因很简单,隔壁寝室的那几位老兄一天到晚开着土豆、酷六看电视剧,本来带宽就不够,还几个人同时看在线视频,网速简直让人崩溃。如果知道路由器的管理账号密码,那么要限制他们看…

资讯交流网站设计与实现_干货 | 室内设计师必备的10个网站!

大家好我是你们又美又瘦的小助打完这行字手抖了抖在我还小的时候曾经天真地幻想长大以后一定要成为 高逼格令人艳羡 的室内设计师直到我长大 通过自己不懈努力最终当上了和室内设计师八竿子打不到一块儿的 运营但是小助深知作为一名室内设计师最痛苦的莫过于缺少灵感以及素材来…

如何匿名访问网站

最近论坛上有网友提出了一些关于匿名访问的问题,趁此机会做一个总结,呵呵。先说说对于网站的匿名访问。 设置网站的匿名访问一般有三种情况:一是从已开始创建Web应用程序的时候进行匿名访问设置;二是对于已经建立的网站修改为匿名…

调优 网站性能指标

curl -o /dev/null -s -w %{time_total}"\n" www.yy.com -w %{option} //指定要获取的指标 可获取的指标,如下所示: time_total //完成请求所用的时间 time_namelookup //解析完成的时间 time_connect //建立到服务器的…

如何对网站进行压力测试 Apache ab和jmeter 的使用

本文档为个人博客文档系统的备份版本、作者:小游、作者博客:点击访问 这里压力测试我们使用的是Apache ab或者jmeter 我们先来安装Apache ab 安装地址:http://httpd.apache.org/download.cgi 然后我们再选下面这个 我们下载下面这个即可 下载…

OSINT系列:网站信任评估WOT

2019独角兽企业重金招聘Python工程师标准>>> OSINT系列:网站信任评估WOT Web of Trust(WOT)是芬兰的一家网站信任评估服务公司。它通过收集用户对网站的评价,来评估网站的可信任度。在该公司网站www.mywot.com&#xf…

大型网站技术架构-核心原理与案例分析

2021年01月26日 本地初略读了一遍,接下来还需要细致的研读; 牵涉技术点待进一步查询理解:集群、分布式、缓存、分布式缓存、消息队列、预发布、灰度 等 思考: 淘宝网-起初也是买的别人的开源现有网站做的业务需求更改就上线服务了; 在互联网公…

jmh气象传真图网站_风云激荡智慧气象

▶ 省气象台预报员通过分析风云气象云图和新一代天气雷达资料等信息预测未来天气。▼ 过去的黄山气象站气象工作人员在工作。(资料图片)上世纪50年代,气象信息传输主要依靠电话、传真和纸张。如今,安徽气象事业已迈入高质量发展的新时期,气象…

九度搜索引擎点击优化_SEO揭秘:常见的SEO优化策略有哪些?

很多朋友可能有这样的疑问,为什么有的网站能在搜索引擎上排名很好,而有的却连找到都找不到呢?这里面有什么秘密或者窍门吗?第一页SEO提醒你:要想网站有好的排名,有五个因素你是必须铭记于心的,它…

301跳转 https_谷歌SEO:如何正确理解301、302重定向

今天我们来探讨一下几个比较容易混淆的页面跳转标签:301,302,relcanonial。在谷歌SEO里面,我们比较容易常见的是第一个301,而302和canonial出现的比较少,但是不代表不存在,我会尝试从以下几个方…

本地服务器缓存网站文件,本地服务器缓存

本地服务器缓存 内容精选换一换磁盘增强型弹性云服务器自带高存储带宽和IOPS的本地盘,具有高存储IOPS以及读写带宽的优势。同时,本地盘的价格更加低廉,在海量数据存储场景下,具备更高的性价比。磁盘增强型弹性云服务器具备如下特点…

php仿携程网站,vue模拟携程官网的搭建

仿造携程官网题外话:刚开始学前端的时候,有一天看到携程官网.就希望有一天能模拟搭出来.自己拖拖拉拉的一直没整, 但是但是麻麻我终于完成了!!(曾经亲爱的同事把传送门删掉了不感谢他了 fk)感谢叶师兄拯救了我携程携程 源码仿携程源码目录结构基于vueless进行开发,配合强行在携…

流量排名前一千万网站,三分之一使用 WordPress

百度智能云域名服务,.com新用户首购仅需25元 WordPress 在官博发文,庆祝它在流量排名前一千万网站中的市场占有率达到了三分之一。据 W3Techs 的数据,WordPress 在前一千万网站的市场份额从一年前的 29.9% 上升到了现在的 33.4%。WordPress…

控制台的左侧显示证书树形列表_产品速递|SSL 证书共享功能上线,赋能网站协同运维...

为了更好的服务 QingCloud 用户,我们推出了『产品速递』栏目,帮助大家梳理青小云家最近上线的新功能和新产品,供大家从中快速选择,得以应用。1SSL 证书共享功能QingCloud SSL 证书管理功能是青云为企业和个人用户提供的一站式 SSL…

Tomcat实现session保持的三种方式、使用msm方式搭建jsp网站

Tomcat简单的来说类似于php的功能,主要实现java程序的编译,最后呈现给用户的是html格式的代码,使用用户可以在浏览器中访问。Tomcat是Java语言研发的,所以依赖于java的虚拟机(jvm)。 一、使用前端调度器实现…

基于SpringBoot婚纱影楼摄影预约网站

管理员账号/密码:admin/admin 用户账号/密码: matou/123456 ps:管理员登录地址在页面最下面,这个程序是一个很好的模板源码,在不修改一行代码的情况下可以轻松的修改为类似健身俱乐部的网站。 效果截图: 数据库…

基于SpringBoot旅游信息管理系统网站

精美的旅游信息管理系统网站 可以在线预订酒店和景点 部分功能登录后才可以使用 设置的端口号是80端口 启动后访问的网址:http://localhost/travel/ 有会员中心和管理员后台 会员可以注册 管理员账号:admin 密码:admin 修改数据库连接…