用Python对PDF文字颜色加深

情景:找了本电子书《PYTHON面向对象编程指南 [(美)STEVEN F.LOTT著;张心韬,兰亮译][人民邮电出版.pdf》想要啃一下,

发现电子书里字是灰色的,看起来累眼睛,重新找没有找到更清晰的版本,决定自己修改字体颜色。

1. 首先想要直接用Adobe Acrobat DC直接修改颜色,但这个软件的处理是先识别文字,后更改颜色,速度比较。

2. 电子书不是彩色的,就两种颜色,灰色和白色,所以想到了把所有的灰色改为黑色,百度了一下发现像素值这个东西:0为黑色,256为白色。用Adobe Acrobat DC将PDF转为.jpg图片,直接操作图片,再将图片合并为PDF。

转换成图片就不说了,用Adobe Acrobat DC将PDF导出为图片即可,以下是Python转换代码:

import os
from PIL import Image
dirs =
input('请输入文件路径:')
filenames = os.listdir(dirs)
boundary_value =
230        #设置色素边界值,可以试几次,找到合适值,如果这个值太大,字体会有黑色阴影
for filename in filenames:
  image = Image.open(dirs+
"\\"+ filename)
  photo = image.convert(
'L')    #将彩色图像转换为灰度(模式 L),P为调色板模式
 
photo.save(dirs+"\\"+ filename)
  list = []
 
for i in range(256):
   
if i < boundary_value:      #如果图片中某个像素点的像素小于边界值,设置为黑色
     
list.append(0)
   
else:
      list.append(
1)            #大于边界值,设置为白色
 
 
photo_new = photo.point(list,'1')        #将list[]的像素值映射到图像中,形成新的图片
 
photo_new.save(dirs+"\\"+ filename)

 

备注:解释photo.point()

此处的1如果不写,和源图片的convert(mode)的mode一致,灰度转换中为L,则无亮度波动,全黑。转换灰度( L)或 RGB的默认方法图像转换为双层图像(模式 1)使用Floyd-Steinberg抖动以近似原始图像的亮度水平。如果抖动为,所有大于128的值均设置为255(白色),所有其他值都设为0(黑色)。要使用其他阈值,请使用   #PIL.Image.Image.point`方法。

 

转换之后的图片:

 

最后利用Adobe Acrobat DC,创建--将文件合并为单个PDF--全选图片--合并--另存为,即可

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值