一、无水印将图片合并成pdf输出
步骤:
1.用手机拍照或者扫描王APP扫描成图片
2.按1、2、3等顺序为图片重新命名
3.执行下列代码合并成pdf
from PIL import Image
import os
def change_img_size(size,im_pth):
im = Image.open(im_pth)
new_size = size
im = im.resize(new_size, Image.ANTIALIAS)
im.save(im_pth)
#folderPath:图片所在的文件夹名称
#pdfFilePath:最终生成的pdf文件路径
def combine2Pdf( folderPath, pdfFilePath ):
files = os.listdir( folderPath )
pngFiles = []
sources = []
for file in files:
if 'jpg' in file or 'png' in file:
pngFiles.append( folderPath +'/'+ file )
#图片根据名字进行排序
pngFiles.sort()
output = Image.open( pngFiles[0] )
pngFiles.pop( 0 )
#以第一个图片的尺寸为基准,后面图片都跟着对齐,否则拼接成pdf胖瘦不一致
size=output.size
#更改后面的图片的尺寸
for file in pngFiles:
change_img_size(size,file)
for file in pngFiles:
pngFile = Image.open( file )
if pngFile.mode == "RGB":
pngFile = pngFile.convert( "RGB" )
sources.append( pngFile )
#以一个图片的为准拼接后面的图片为pdf格式最终保存
output.save( pdfFilePath, "pdf", save_all=True, append_images=sources )
combine2Pdf('./out','./out/test.pdf')
二、PDF的裁剪功能
假设pdf的每一页大小尺寸都是一样的,但是下面有固定的一行广告字或者固定一小块水印,可以采取这种截取方式,统一去掉
import PyPDF2
input_file = PyPDF2.PdfFileReader(open('./out/论文.pdf', 'rb'))
page_count = input_file.getNumPages() # 页数
output_file = PyPDF2.PdfFileWriter()
for i in range(page_count):
this_page = input_file.getPage(i) # 获取第1页
#获取截取后的矩形坐标
this_page.mediaBox.lowerLeft=(0,38) #矩形的左下坐标
this_page.mediaBox.upperLeft = (0,842)#矩形的左上坐标
this_page.mediaBox.lowerRight=(595,38)#矩形的右下坐标
this_page.mediaBox.upperRight = (595,842)#矩形的右上坐标
output_file.addPage(this_page)
output_file.write(open('./out/test1.pdf', 'wb'))
原创文章,作者:1402239773,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276608.html