<wbr id="juant"></wbr>
  • <wbr id="juant"></wbr>
    更多課程 選擇中心


    Python培訓

    400-111-8989

    利用 Python 優雅地將 PDF 轉換成圖片

    • 發布:Python培訓
    • 來源:Python練習題庫
    • 時間:2018-01-15 14:16

    之前收集了很多優秀的 PDF文檔,但是需要看的時候不是很方便,需要去找到這個文件,如果是在手機上的話往往還需要下載 PDF相關的插件才行,而且最大的問題是不便于資料的整理和分享。如果能夠將 PDF轉換成網頁,豈不是就能解決這些問題了?還能直接分享出去。

    這里利用 PyPDF包來處理 PDF文件,為了方便快捷,我這里直接將一個頁面轉換成圖片,就不需要去識別頁面中的每一個 PDF元素了,這是沒必要的。

    轉換

    核心代碼很簡單,就是將 PDF文件讀取出來,轉換成 PdfFileReader,然后就可以根據 PyPDF2的API去獲得每一個頁面的二進制數據,拿到二進制數據過后,就能很方便的進行圖片處理了,這里用 wand包來進行圖片處理。

    1. # -*- coding: utf-8 -*-

    2. import io

    3. from wand.image import Image

    4. from wand.color import Color

    5. from PyPDF2 import PdfFileReader, PdfFileWriter

    6. memo = {}

    7. def getPdfReader(filename):

    8.    reader = memo.get(filename, None)

    9.    if reader is None:

    10.        reader = PdfFileReader(filename, strict=False)

    11.        memo[filename] = reader

    12.    return reader

    13. def _run_convert(filename, page, res=120):

    14.    idx = page + 1

    15.    pdfile = getPdfReader(filename)

    16.    pageObj = pdfile.getPage(page)

    17.    dst_pdf = PdfFileWriter()

    18.    dst_pdf.addPage(pageObj)

    19.    pdf_bytes = io.BytesIO()

    20.    dst_pdf.write(pdf_bytes)

    21.    pdf_bytes.seek(0)

    22.    img = Image(file=pdf_bytes, resolution=res)

    23.    img.format = 'png'

    24.    img.compression_quality = 90

    25.    img.background_color = Color("white")

    26.    img_path = '%s%d.png' % (filename[:filename.rindex('.')], idx)

    27.    img.save(filename=img_path)

    28.    img.destroy()

    需要注意的是一般PDF文件較大,如果一次性轉換整個PDF文件需要小心內存溢出的問題,我們這里將第一次載入的整個PDF文件保存到內存,避免每次讀取的時候都重新載入。

    批量處理

    上面已經完成了一個 PDF頁面的轉換,要完成整個文件的轉換就很簡單了,只需要拿到文件的總頁碼,然后循環執行就行。考慮到轉換比較耗時,可以使用異步處理的方式加快速度。比如可以使用 celery來搭配處理,一定注意小心內存泄露。

    核心代碼已經整理放到github上去了,好了,等有時間的時候準備做一個公共的 PDF轉成 H5的服務,開放給大眾使用。

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:Windows/Mac OS X/Linux 系統安裝Python開發環境教程
    下一篇:CSV文件在Python中的幾種處理方式

    2021年Python面試題及答案匯總詳解

    python數據分析,你需要這些工具

    Python培訓講解二叉樹的三種深度

    Python培訓:如何實現窮舉搜索?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    天天日天天射天天干天天伊|奇米电影|奇米网_奇米首页|奇米首页 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>