一个pdf转docx的Python库 pdf转换work
liuian 2024-12-29 04:28 53 浏览
前言
将pdf文件转换成word文件是一个非常常见的操作,我相信,大部分人的免费解决方案是使用一些在线的转换服务,但是这里会有个数据泄露的问题。本文介绍一个开源免费的本地转换工具,pdf2docx。
安装pdf2docx
安装方法非常简单,使用pip指令,执行
pip install pdf2docx
安装成功后,除了基础的库之外,pdf2docx还为我们提供了可执行文件pdf2docx。
日常使用的话,直接使用可执行文件就能够进行pdf到docx的转换;如果需要在python代码中使用,那么,使用其提供的api也能够达到目的。
命令行的使用
通过pdf2docx --help可以查看命令行的具体帮助信息
INFO: Showing help with the command 'pdf2docx -- --help'.
NAME
pdf2docx - Command line interface for ``pdf2docx``.
SYNOPSIS
pdf2docx COMMAND | -
DESCRIPTION
Command line interface for ``pdf2docx``.
COMMANDS
COMMAND is one of the following:
convert
Convert pdf file to docx file.
debug
Convert one PDF page and plot layout information for debugging.
gui
Simple user interface.
table
Extract table content from pdf pages.
上述帮助列出了pdf2docx支持的指令,这里我们主要了解下convert和gui
- convert
- 这是它的核心功能,convert本身也提供了很多的参数,可以通过pdf2docx convert --help来查看,这样的写法同样适用于其它指令,后面的我们就不再详细列出了
(base) PS C:\Users\Administrator> pdf2docx.exe convert --help
INFO: Showing help with the command 'pdf2docx convert -- --help'.
NAME
pdf2docx convert - Convert pdf file to docx file.
SYNOPSIS
pdf2docx convert PDF_FILE <flags>
DESCRIPTION
Convert pdf file to docx file.
POSITIONAL ARGUMENTS
PDF_FILE
Type: str
PDF filename to read from.
FLAGS
--docx_file=DOCX_FILE
Type: Optional[str]
Default: None
docx filename to write to. Defaults to None.
--password=PASSWORD
Type: Optional[str]
Default: None
Password for encrypted pdf. Default to None if not encrypted.
--start=START
Type: int
Default: 0
First page to process. Defaults to 0.
--end=END
Type: Optional[int]
Default: None
Last page to process. Defaults to None.
--pages=PAGES
Type: Optional[list]
Default: None
Range of pages. Defaults to None.
Additional flags are accepted.
Configuration parameters.
.. note
NOTES
You can also use flags syntax for POSITIONAL ARGUMENTS
由上可知,要转换pdf里所有的页面,只需执行
pdf2docx.exe convert test.pdf test.docx
从第3页开始,直到结束
pdf2docx.exe convert test.pdf test.docx --start=2
从开始到第10页
pdf2docx.exe convert test.pdf test.docx --end=10
从第2页到第5页
pdf2docx.exe convert test.pdf test.docx --start=1 --end=5
要特别注意,这里的start和end都是从0开始的
当然,不连续的页面也是可以一次性转换,比如
pdf2docx.exe convert test.pdf test.docx --pages=0,2,4
如果pdf是加密的,可以这样转换
pdf2docx.exe convert test.pdf test.docx --password=PASSWORD
- gui 如果你不习惯用命令行,pdf2docx也提供了一个简单的图形界面,在cmd中敲入pdf2docx gui就可以调出来。真的是很粗糙,按钮的文字都没有显示全,不过功能还是ok的。
- pdf2docx
API的使用
如果要在python中实现pdf到docx的转换,pdf2docx为我们提供了完整的api,来看一个最简单的示例
from pdf2docx import Converter
if __name__ == "__main__":
pdf_file = "test.pdf"
docx_file = "test.docx"
conv = Converter(pdf_file)
conv.convert(docx_file, start=0, end=None)
conv.close()
更详细的API文档,可以参考链接 https://dothinking.github.io/pdf2docx/modules.html
局限性
目前的pdf2docx版本,仅适用于基于文本的pdf,阅读习惯是从左到右。大家在使用的时候需要注意。
参考资料
- https://github.com/dothinking/pdf2docx
相关推荐
- Python 中 必须掌握的 20 个核心函数——items()函数
-
items()是Python字典对象的方法,用于返回字典中所有键值对的视图对象。它提供了对字典完整内容的高效访问和操作。一、items()的基本用法1.1方法签名dict.items()返回:字典键...
- Python字典:键值对的艺术_python字典的用法
-
字典(dict)是Python的核心数据结构之一,与列表同属可变序列,但采用完全不同的存储方式:定义方式:使用花括号{}(列表使用方括号[])存储结构:以键值对(key-valuepair)...
- python字典中如何添加键值对_python怎么往字典里添加键
-
添加键值对首先定义一个空字典1>>>dic={}直接对字典中不存在的key进行赋值来添加123>>>dic['name']='zhangsan'>>...
- Spring Boot @ConfigurationProperties 详解与 Nacos 配置中心集成
-
本文将深入探讨SpringBoot中@ConfigurationProperties的详细用法,包括其语法细节、类型转换、复合类型处理、数据校验,以及与Nacos配置中心的集成方式。通过...
- Dubbo概述_dubbo工作原理和机制
-
什么是RPCRPC是RemoteProcedureCall的缩写翻译为:远程过程调用目标是为了实现两台(多台)计算机\服务器,互相调用方法\通信的解决方案RPC的概念主要定义了两部分内容序列化协...
- 再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配
-
在微服务项目中,如果我们想实现服务间调用,一般会选择Feign。之前介绍过一款HTTP客户端工具Retrofit,配合SpringBoot非常好用!其实Retrofit不仅支持普通的HTTP调用,还能...
- SpringGateway 网关_spring 网关的作用
-
奈非框架简介早期(2020年前)奈非提供的微服务组件和框架受到了很多开发者的欢迎这些框架和SpringCloudAlibaba的对应关系我们要知道Nacos对应Eureka都是注册中心Dubbo...
- Sentinel 限流详解-Sentinel与OpenFeign服务熔断那些事
-
SentinelResource我们使用到过这个注解,我们需要了解的是其中两个属性:value:资源名称,必填且唯一。@SentinelResource(value="test/get...
- 超详细MPLS学习指南 手把手带你实现IP与二层网络的无缝融合
-
大家晚上好,我是小老虎,今天的文章有点长,但是都是干货,耐心看下去,不会让你失望的哦!随着ASIC技术的发展,路由查找速度已经不是阻碍网络发展的瓶颈。这使得MPLS在提高转发速度方面不再具备明显的优势...
- Cisco 尝试配置MPLS-V.P.N从开始到放弃
-
本人第一次接触这个协议,所以打算分两篇进行学习和记录,本文枯燥预警,配置命令在下一篇全为定义,其也是算我毕业设计的一个小挑战。新概念重点备注为什么选择该协议IPSecVPN都属于传统VPN传统VP...
- MFC -- 网络通信编程_mfc编程教程
-
要买东西的时候,店家常常说,你要是真心买的,还能给你便宜,你看真心就是不怎么值钱。。。----网易云热评一、创建服务端1、新建一个控制台应用程序,添加源文件server2、添加代码框架#includ...
- 35W快充?2TB存储?iPhone14爆料汇总,不要再漫天吹15了
-
iPhone14都还没发布,关于iPhone15的消息却已经漫天飞,故加紧整理了关于iPhone14目前已爆出的消息。本文将从机型、刘海、屏幕、存储、芯片、拍照、信号、机身材质、充电口、快充、配色、价...
- SpringCloud Alibaba(四) - Nacos 配置中心
-
1、环境搭建1.1依赖<!--nacos注册中心注解@EnableDiscoveryClient--><dependency><groupI...
- Nacos注册中心最全详解(图文全面总结)
-
Nacos注册中心是微服务的核心组件,也是大厂经常考察的内容,下面我就重点来详解Nacos注册中心@mikechen本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。微服务注册中...
- 网络技术领域端口号备忘录,受益匪浅 !
-
你好,这里是网络技术联盟站,我是瑞哥。网络端口是计算机网络中用于区分不同应用程序和服务的标识符。每个端口号都是一个16位的数字,范围从0到65535。网络端口的主要功能是帮助网络设备(如计算机和服务器...
- 一周热门
-
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
- 最近发表
-
- Python 中 必须掌握的 20 个核心函数——items()函数
- Python字典:键值对的艺术_python字典的用法
- python字典中如何添加键值对_python怎么往字典里添加键
- Spring Boot @ConfigurationProperties 详解与 Nacos 配置中心集成
- Dubbo概述_dubbo工作原理和机制
- 再见 Feign!推荐一款微服务间调用神器,跟 SpringCloud 绝配
- SpringGateway 网关_spring 网关的作用
- Sentinel 限流详解-Sentinel与OpenFeign服务熔断那些事
- 超详细MPLS学习指南 手把手带你实现IP与二层网络的无缝融合
- Cisco 尝试配置MPLS-V.P.N从开始到放弃
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)