java doc转pdf_利用python进行PDF文件和图片格式互转

首先要安装python第三方库 PyMuPDF,该库可在 python 环境下对 PDF 文件的操作。

废话不多说,直接贴代码

1 pdf转影像的代码:

9c91d4cdf8bf55fd74538ba81d310633.png

2 影像合成pdf代码:

afc49f98b0c64f55efc80626ddf41e9a.png

3 选择pdf转图片还是图片合成pdf代码:

5b06e817212c966dd3d768bd7a15ec14.png

4 主函数:

5e53beb7385e8f960c23673f85d042e8.png

使用说明:python文件和需要转换的pdf文件或者要生成pdf文件的图片文件夹放在同一目录下

667b2ab48b8754ed66c170f88d99ed58.png

完整代码:

import os

import fitz

import glob

def choice(desc):

    flag=True

    while(flag):

        instr = input(desc)

        try:

            intnum = eval(instr)

            if type(intnum)==int:

                flag = False

        except:

            print('请输入正整数!')

            pass

    return intnum

def pdf2img():

    pdffile = glob.glob("*.pdf")[0]

    doc = fitz.open(pdffile)

    strat = 0

    totaling = doc.pageCount

    for pg in range(strat, totaling):

        page = doc[pg]

        zoom = int(100)

        rotate = int(0)

        trans = fitz.Matrix(zoom / 60.0, zoom / 60.0).preRotate(rotate)

        pm = page.getPixmap(matrix=trans, alpha=False)

        pm.writePNG('img/%s.png' % str(pg+1))

def img2pdf():

    li = []

    doc = fitz.open()

    for filename in glob.glob("img/*"):

        (filepath,tempfilename) = os.path.split(filename)

        (fname,extension) = os.path.splitext(tempfilename)

        li.append(int(fname))

        li_new = sorted(li,reverse=0)

    for img in li_new:

        imgdoc = fitz.open(filepath + '/' + str(img) + extension)   # 打开图片

        pdfbytes = imgdoc.convertToPDF()        # 使用图片创建单页的 PDFr

        imgpdf = fitz.open("pdf", pdfbytes)

        doc.insertPDF(imgpdf)                   # 将当前页插入文档

    if os.path.exists("测试.pdf"):

        os.remove("测试.pdf")

    doc.save("测试.pdf")                   # 保存pdf文件

    doc.close()

if __name__ == '__main__':

    flag = choice("输入:1:pdf转影像;2:影像生成pdf\t")

    if flag == 1:

        pdf2img()

    else:

        img2pdf()

  最后附上测试视频:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值