ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python实现pdf的一些功能

2022-07-24 09:00:08  阅读:201  来源: 互联网

标签:功能 Python pngFiles im file pdf page size


一、无水印将图片合并成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'))

 

标签:功能,Python,pngFiles,im,file,pdf,page,size
来源: https://www.cnblogs.com/gczr/p/16513859.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有