pdf常用字体包 -baijiahao_【Python】用 Python 来实现PDF 的各种操作(附网站和操作指导)...

news/2024/5/15 19:55:51/文章来源:https://blog.csdn.net/weixin_39671631/article/details/111178631

导言

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
958a4c4526b700c2756fa803cd8acfb7.png

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

PyMuPDF  的导入是这样子的

import fitz
aad23fbe16f90287ae359de7b41c6f39.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:\提取结果'
8be616252998e40482af47a1fbc0412a.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 度的结果
8e2ea546d402cfccd9371b0823b7e216.png

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

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

参考:

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

90379f327fb4aac2d17681b2069df34a.png

往期精彩回顾

适合初学者入门人工智能的路线及资料下载

机器学习及深度学习笔记等资料打印

机器学习在线手册

深度学习笔记专辑

《统计学习方法》的代码复现专辑

AI基础下载

机器学习的数学基础专辑

获取一折本站知识星球优惠券,复制链接直接打开:

https://t.zsxq.com/yFQV7am

本站qq群1003271085。

加入微信群请扫码进群:

372ac66a416889e0971080d73a2327a6.png

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

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

相关文章

优化上传速度慢怎么办_常用的网站图片优化方法有哪些呢?

当用户通过搜索引擎搜索相关内容,进入到相关网站或者企业官网时,发现网站打开很慢随即就关闭了该网站了。网站打开速度慢,不仅会影响用户体验,甚至会导致我们丢失大量的客户,所以优化网站制作提高网站打开速度&#xf…

php 网站响应时间_php 怎么修改响应时间

php修改响应时间的方法:首先找到并打开“php.ini”配置文件;然后找到“max_execution_time”及“max_input_time”参数进行修改即可。本文操作环境:Windows7系统、PHP7.1、Dell G3电脑。修改php上传文件尺寸、响应时间、时区时间等设置修改ph…

牛津3000释义词典_颤抖吧!最好用的在线英语词典网站良心大推荐

学英语很难,但学习很快乐。--- 学英语那点事你知道,出来学英语,在线词典早晚用得到。今天就来推荐学姐经常使用的免费在线英语词典网站。让我看到泥萌的小手手好嘛!韦氏在线词典 https://www.merriam-webster.com/学姐点评&#x…

python爬虫爬取下一页_【Python爬虫】如何爬取翻页url不变的网站

点击蓝字“python教程”关注我们哟! 之前打算爬取一个图片资源网站,但是在翻页时发现它的url并没有改变,无法简单的通过request.get()访问其他页面。据搜索资料,了解到这些网站是通过ajax动态加载技术实现。即可以在不重新加载整…

php建站目,PHP小项目:轻松创建gif图在线制作网站

原标题:PHP小项目:轻松创建gif图在线制作网站各位朋友,大家下午好!今天给大家带来的教学是 轻松创建gif图在线制作网站!这里就需要用到一个 GIF动画的PHP类库!下面我把类库代码分享给大家由于源码比较长&am…

nginx 1.14.2 php,CentOS7上安装Nginx1.14.2并部署PHP静态网站

我这里以CentOS7.4 x64服务器为例记录如何安装Nginx并且部署一个php静态网站,无数据的。先从Nginx的安装开始:1、先安装Nginx所依赖的软件:安装gcc:输入命令:yum install gcc-c 回车,中间会出现选择,输入…

lamp cacti 点击php下载,lamp 环境下装cacti网站流量监控工具

接下来我是介绍搭建 apache,mysql php 这三种 整合关系关闭SELINUX [rootmoyea ~]# vi /etc/selinux/config#SELINUXenforcing #注释掉#SELINUXTYPEtargeted #注释掉SELINUXdisabled #增加:wq 保存,关闭shutdown -r now #重启系统…

linux关机保护,linux中的关机敕令有什么区别_网站服务器运转保护

linux中关机敕令的区别是:实行shutdown敕令时,体系会关照一切登录的用户体系将要封闭;实行halt敕令时,文件体系写操纵完成后,内核住手;init敕令用于切换体系的运转级别,【init 0】示意关机。Lin…

php mysql 网站性能分析工具_大型网站调试工具之一(php性能优化分析工具XDebug)...

一、安装配置1、下载PHP的XDebug扩展,网址:http://xdebug.org/2、在Linux下编译安装XDebug引用tar -xzf xdebug-2.0.0RC3.gzcd xdebug-2.0.0RC3/usr/local/php/bin/phpize./configure --enable-xdebugcp modules/xdebug.so /usr/local/php/lib/php/exten…

php内容管理网站源码,DirCMS PHP内容管理系统 v6.0

DirCMS内容管理系统,是国内自主研发的一款功能强大而又不失小巧简洁的由PHPMysql架构的内容管理系统。DirCMS代码全部开源,便于使用者二次开发或定制;并采用简洁的模板标签技术,使制作模板更加容易,一般情况下&#xf…

linux中不保存的命令是,vim退出不保存的命令是什么?_网站服务器运行维护,vim,linux...

linux下如何用iptables开放指定端口_网站服务器运行维护linux下用iptables开放指定端口的方法是:1、执行【/sbin/iptables -I INPUT -p tcp –dport 8000 -j ACCEPT】命令开启端口;2、重启服务;3、查看端口是否已经开放。vim退出不保存的命令…

网站服务器响应网页浏览请求的运作流程,301重定向的运作流程

301重定向的运作流程(2014-10-17 14:15:25)标签:it网站服务器响应网页浏览请求的运作流程让我们先来了解一下用户/搜索引擎和网站一开始的交互流程。当用户或搜索引擎向一个网站服务器发出网页浏览请求时,该服务器将:通过域名服务器(DNS)将域…

河南2021高考成绩查询系统入口,2021河南省高考成绩查询网站入口

2021河南省高考三天,之后成绩什么时候出来可以查询呢,河南省高考成绩在什么平常查询分数,大家以查询分数来预估大学填报志愿。河南省高考成绩将于6月25日零时起通知考生。2021河南省高考成绩查询网站入口高考成绩查询过后应该做什么参照分数找…

基于springboot的音乐网站_开源分享springboot+vue.js音乐推荐系统

需求分析系统研究的主要角色是在线音乐系统,如何实现用户的在线听歌系统,如何实现管理员管理网站歌曲内容。本系统分为用户和管理员两个角色,两个角色的功能要求如下:用户角色:1.用户打开网站,在未注册或未…

abaqus结构工程分析及实例详解pdf_推荐一个学习疲劳分析的网站

网址:http://fatiguetoolbox.org网站上提供开源的疲劳寿命分析软件Fatlab下载,该软件基于MATLAB开发。另有若干分析实例,金属疲劳理论介绍,更多相关疲劳方面的软件、资源的链接。。作者提供了其收集和研究的疲劳数据以及疲劳方面的…

seo建设者_SEO优化|网站文章更新的频率对其优化效果存在影响吗?

关于网站文章的更新,主要要求是讲清的是,内容的不断更新是网站生存和发展的最基本条件。无论用户还是搜索引擎,都不可能过多地关注长时间不更新的网站。有无必要扔掉这些死亡或准死亡的站点也只是时间问题。内容更新的频率表示网站的活跃度。…

内网https需要ssl证书_网站HTTPS之路——安装、配置SSL证书及强制开启HTTPS

从2018年年底开始,谷歌浏览器Chrome对于http://站点将显示不安全的标志。所以最近终于开始琢磨SSL证书的事,让自己的网站不再显示不安全。一、证书申请对于个人站点而言,当然首选免费的SSL证书,毕竟财力有限,况且用户和…

php手机网站支付宝_支付宝支付-手机网站支付接口(H5手机站)

1:支付宝官方文档和demo,大家可以去下载学习我也是看文档,然后自己摸索查资料最后才搞定的,全程下来确实学到不少东西;2:签名方式及语言版本选择我的这个H5支付功能是嵌入到thinkphp框架里的,现…

seo提交工具_SEO:教您新网站的优化方法有哪些?

今天小龙教您新网站的优化方法有哪些?新站上线之初如果有备案,新站2个月的扶持期内,只做一个事情:提交大量优质原创内容,且内容为不间断提交。个人认为这个点是做新站优化的核心点,其余的seo优化技巧可概括…

android 怎么实现手机网站支付_手机网站怎么做竞价推广,你们知道吗?

百度移动推广是百度竞价推出的一个非常重要的新产品,它跟搜索推广存在一定程度上的不同,并且随着移动互联网市场的发展和扩大,移动竞价必将成为未来市场竞争的有力武器。因此,如何运用好百度移动推广就变得非常重要,下…