python pdf转word 表格_太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!

原标题:太赞了!Pdf转Word,我用Python 轻松搞定表格和水印!

继上一次为大家推出了将pdf转word之后(卧槽!Pdf转Word用Python轻松搞定!),引起了大家的热烈讨论,我也总结了大家的一些意见和建议,今天就进一步的为大家推出一个新的版本。

从pdf中提取表格数据,并保存到本地的excel文件当中,并且还为大家加入了添加水印和去除水印的功能。虽然在去除水印的效果上可能不如付费的项目那么好,但是也足够大家在日常生活中进行使用,下面我们就一起来看看吧。

01.如何提取表格

首先要面临的第一问题就是如何提取pdf中的表格,如下图所示:

我们需要将上述的表格进行提取,并保存到本地的excel文件之中,程序如下所示:

上述程序中,我们利用pdfplumber库来打开一个pdf文件,然后如果我们想要提取某几页的表格,可以在pageindexs这个形参中指明,否则我们就提取pdf文件中所有的表格信息,并保存到我们的本地excel表内,结果如下图所示,我们提取了pdf中所有的表格:

02.水印的处理

接下来就是水印的处理,我们先来进行添加水印,也就是给我们的pdf文件添加我们的专属logo,这里我们添加的是图片水印,效果如下所示:

我们的程序也很简单:

上述程序中,我们首先将水印图片利用word保存为pdf格式,然后通过PyPDF2库中的PdfFileReader类来读取图片水印并通过PdfFileWriter添加到我们指定的pdf中,完成图片水印的添加。

既然有图片水印的添加,那肯定有图片水印的去除,其达到的效果就是上述程序达到的相反效果,去除图片水印的程序如下图所示:

我们利用fitz库来打开pdf文件,并统计里面的图片文件,因为我们的图片水印也是图片,所以能够得到水印图片的信息,我们打印出来图片的信息,其信息中的索引2和索引3就代表着图片的大小,我们根据图片的大小判断是否为水印图片,来隐藏pdf文件中的水印图片,达到去除水印的目的。

上述的程序针对的是图片水印,但是,我们日常面临的水印都是背景水印,类似于下图的情况。

这种情况下,上述的程序就不管用了,但是我们还有办法,就是利用像素进行处理,我们将pdf转换成图片,然后调节图片的对比度和亮度来达到删除水印的目的,然后将转换完后的图片转换为pdf即可,部分程序如下图所示:

上述程序中,是利用fitz库将pdf文件中的每页pdf转化成指定大小的图片文件,并保存到指定的文件夹内。

最终转化后的结果如下图所示:

上图我们可以看到,我们成功的删除了背景水印,但是由于调节的原因,对于保留的文本也有一定的影响,但是影响不是很大。如果大家感兴趣的话,可以借鉴ps的处理技术,通过背景水印模板来去除水印,达到更好的去除效果,但是这需要水印模板和我们pdf模板中的水印在位置,形状和大小等方面完全一致,要求比较高,不如上述方法来的简单。

以上就是小编今天为大家带来的分享,我们完成了对于表格的提取,和图片水印的添加和去除以及背景水印的去除,大家也赶紧动手应用起来吧。

后记

自学编程的过程是很痛苦的,有的时候没有人指导,慢慢的会变成从入门到放弃, 可能懂的人只要花1-2分钟就能帮你解决的问题,不懂的人要折腾几个小时。最近不断的有小伙伴希望我们建一个 交流群,有想加入的同学,可以跟小助手联系。这个群的目的如下:

1. 帮助初学者的一起解惑一些入门的Python问题

2. 我们经常有答题送书的福利,有了群更容易联系到大家

3. 已经在我们小密圈群的同学就不要再加入了,避免重复入群

目前青铜群已经有220多人,我们采用筛选制度,会根据一些后台数据,进行筛选的!生面孔或者不常来的,我们一概谢绝入内。有专人进行答疑解惑入门问题。

入群请找菜鸟哥

暗号:【入群】

小助手最近在出差ing,非常辛苦,都不容易!

回复很慢大家多见谅哈返回搜狐,查看更多

责任编辑:

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

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

相关文章

dao传递类参数 mybatis_Mybatis (ParameterType) 如何传递多个不同类型的参数

偶然碰到一个需要给xml传一个String类型和一个Integer类型的需求,当时心想用map感觉有点太浪费,所以专门研究了下各种方式。方法一:不需要写parameterType参数public List getXXXBeanList(String xxId, String xxCode);select t.* from table…

semantic ui中文文档_Vuetify-广受欢迎的Material风格的开源UI框架

全世界范围内广受欢迎的 Vue UI 框架,一个非常精致的 Material Design UI 套件。 Material Design 风格 UI 框架Vuetify 是一个基于 Vue.js 精心打造 UI 组件库,整套 UI 设计为 Material 风格。能够让没有任何设计技能的开发者创造出时尚的 Material 风格…

java 异常捕获抛出_JAVA异常处理捕获与抛出原理解析

JAVA 异常当代码运行出现错误导致程序终止运行或出现错误情况的状况,就是异常。异常不是指语法错误,即不属于编译错误,只有运行的程序才会有异常。这个时候,JAVA 就提供了优秀的处理方法:异常处理异常处理能让程序在异…

提示tun虚拟网卡没有安装_Win10家庭版通过Hyper-V安装Centos7+Python3.7过程总结

Win10专业版自带有虚拟机Hyper-V, 只需要在控制面板--程序中将其添加到应用就可使用,非常方便,但我电脑预装的是Win10家庭版,没有这个工具,但可以通过以下方法把它安装上:新建文件Hyper-V.cmd,文件内容&…

python自动输入_使用Python和pywin32自动输入数据

我正在尝试编写一个python脚本来获取数据并将其输入任何形式以下是我目前为止的代码:def pasteNum(n):win32clipboard.OpenClipboard()win32clipboard.EmptyClipboard()win32clipboard.SetClipboardData(win32con.CF_TEXT, str(n))##CTRL-Awin32api.keybd_event(win…

nginx 带宽_谈谈Nginx和LVS各自的优缺点以及使用

在最开始呢,咱们先说一下什么叫负载均衡,负载均衡呢,就是将一批请求,根据请求的内容,分发到不同的后端去进行相应的处理,从而提供负载分担,主备切换等功能。对于不同的负载均衡软件,…

java 读取 excel poi_Java中读取Excel功能实现_POI

这里使用apache的poi进行读取excel1,新建javaproject 项目:TestExcel2,导入包导入根目录下、lib、ooxml-lib下的所有jar4,操作读取excelimport java.io.File;import java.io.IOException;import java.util.Iterator;import org.ap…

wordpress 自定义分类url 重写_WordPress导航主题-WebStack导航主题

8月份写了一个导航主题,陆陆续续更新了十几版,功能自认已经很完善了,知乎也注册很久了,在这水片文章。首页截图预览地址一为忆 - 收集国内外优秀设计网站、UI设计资源网站、灵感创意网站、素材资源网站,定时更新分享优…

mysql hbase 同步_HBase 简介和使用 Sqoop 同步 Mysql 数据到 HBase

HBase 数据模型Namespace: 命名空间类似于关系型数据库中的 database schemaTable: 表一个 Namespace 下有多个表,一个表可以包含多个行Row: 行在 HBase 中 Row 由一个 Row Key 和一个或多个列及其值组成,数据值的存储按照 Row Key 的字典顺序存储的。Co…

sql跨表查询_白话django之ORM的查询语句

教程源码:z991/django_turital在日常开发中,数据库的增删改查(CDUR)中,查询需求偏多,所以查询的语法比增删改操作多得多,尤其是跨表关联查询,可以让代码精简很多年。直接上代码吧&am…

java对象怎么创建_java对象是怎么创建出来的

1.使用new关键字这是最常见也是最简单的创建对象的方式了。通过这种方式,我们可以调用任意的构造函数(无参的和带参数的)。Employee emp1 new Employee();0: new #19 // class org/programming/mitra/exercises/Employee3: dup4: invokespecial #21 // Method org/…

看不懂论文代码怎么办_学位论文中的公式排版(制表位+mathtype+域)

写在前面为什么把公式排版单独拉出来写一篇文章呢?因为公式排版实在是太难了。公式居中标号右对齐,简直反人类好么。在学校期间一直寻找方便的公式排版自动编号方法,但搜索出来的大多只是用到了制表位,公式标号还要自己敲。最后毕…

利用trunk实现vlan内通信_实现不同VLAN间通信——单臂路由

单臂路由是一种实现不同VLAN间通信的技术,其方法是在虚拟机内接口上配置虚拟子接口。该技术是一种应急技术,仅仅用于网络预算不足,无力购买三层交换机,或者网络规模很小的情况下使用。一、实验路由器只需要一个端口和交换机(二层)…

java dispatchevent_java事件处理机制

java中的事件机制的参与者有3种角色:1.event object:就是事件产生时具体的“事件”,用于listener的相应的方法之中,作为参数,一般存在与listerner的方法之中2.event source:具体的接受事件的实体&#xff0…

eq值 推荐算法_C++实现十种排序算法

十种排序算法&#xff1a;选择排序插入排序冒泡排序希尔排序快速排序的三种实现方法归并排序堆排序&#xff08;大顶堆&#xff09;计数排序基数排序&#xff08;待实现&#xff09;桶排序&#xff08;待实现&#xff09;#include <bits/stdc.h> using namespace std; vo…

python读取tiff文件进行波段计算_python+tifffile之tiff文件读写方式

背景使用python操作一批同样分辨率的图片&#xff0c;合并为tiff格式的文件。由于opencv主要用于读取单帧的tiff文件&#xff0c;对多帧的文件支持并不好。通过搜索发现了两个比较有用的包&#xff1a;TiffCapture和tifffile。两者都可用pip安装。其中前者主要用于读取tiff文件…

java 线程停止在那个为止_java停止线程

本文将介绍jdk提供的api中停止线程的用法。停止一个线程意味着在一个线程执行完任务之前放弃当前的操作&#xff0c;停止一个线程可以使用Thread.stop()方法&#xff0c;但是做好不要使用它&#xff0c;它是后继jdk版本中废弃的或者将不能使用的方法&#xff0c;大多数停止一个…

java中的action是指什么_Struts2【开发Action】知识要点

前言前面Struts博文基本把Struts的配置信息讲解完了.....本博文主要讲解Struts对数据的处理Action开发的三种方式在第一次我们写开发步骤的时候&#xff0c;我们写的Action是继承着ActionSupport类的...为啥我们继承了ActionSupport类呢&#xff1f;下面我就会讲解到继承Action…

hql 查询条件 set集合_Redis从入门到深入-Sorted_set的value

1. sorted_set 类型新的存储需求&#xff0c;数据排序有利于数据的有效展示&#xff0c;需要提供一种可以根据自身特征进行排序的方式需要的存储结构&#xff1a;新的存储模型&#xff0c;可以保存可排序的数据sorted_set类型&#xff1a;在set的存储结构基础上添加可排序字段2…

pdm生成java_PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换

本篇文章主要介绍了PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换 超详细过程(图文)&#xff0c;具有一定的参考价值&#xff0c;感兴趣的小伙伴们可以参考一下1.软件准备软件&#xff1a;Navicat 11.1&#xff0c;Powerdesigner 152.安装步骤第一步&…