最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)為PDF去除水印的示例代碼

 更新時間:2022年04月02日 15:50:38   作者:KjPrime  
這篇文章主要介紹了如何利用Python實現(xiàn)PDF去除水印功能,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

為什么做出這個?

就是有時候從網(wǎng)上下載的資料中的pdf有水印,看著不舒服。

比如說我從網(wǎng)上下載的試卷,然后去打印店打印,打印之后水印看著很不舒服,而去水印wps要會員,而我是一個程序員,為什么不做一個呢,何樂而不為。

雖然最后是做出來的,但是還是有限制。

原理

把pdf轉(zhuǎn)化為圖片,然后將圖片去水印。

圖片去水印,是又條件限制的,必須水印的顏色和pdf中文字的顏色的rgb相差很大,然后把水印的顏色改變成背景顏色。

特色

網(wǎng)上很多和我類似的原理去水印,但是都是先pdf轉(zhuǎn)化為圖片存起來,然后圖片去水印之后,然后把圖片拼接成pdf。

而我就不需要中間步驟,我是直接輸入pdf文件,輸出pdf文件。

成果

安裝依賴

Image

pip install pillow

fitz

pip install PyMuPDF

代碼

程序處理pdf需要的時間比較久(因為處理的是像素點),可以先用頁數(shù)少的pdf進行測試之后再去頁數(shù)比較多的pdf。

from PIL import Image
import os
import io
import fitz
import time


def single_pdf_clearwater(pdf_path: str):
    pdf = fitz.open(pdf_path)   # 打開pdf目錄
    pdf_img = fitz.open()       # 打開空文件,用來存圖片pdf
    for page_inf in pdf:
        definition = 3    # 清晰度,感覺輸出的pdf不夠清晰,可以調(diào)大,調(diào)大,文件大小也會變大
        matrix = fitz.Matrix(definition, definition)
        img = page_inf.get_pixmap(matrix=matrix).tobytes()
        img = Image.open(io.BytesIO(img))
        width, height = img.size
        for i in range(width):
            for j in range(height):
                if sum(img.getpixel((i, j))) > 600: # 這里的600你需要根據(jù)自己的水印的顏色進行更改。
                    img.putpixel((i, j), (255, 255, 255))
        img = img.tobytes()  # = img = np.asarray(img);img = bytearray(img)
        img = fitz.Pixmap(fitz.csRGB, width, height, img)
        img = img.tobytes()
        img = fitz.open("png", img)
        pdf_bytes = img.convert_to_pdf()
        pdf_img.insert_pdf(fitz.open("pdf", pdf_bytes))
    if not os.path.exists("output"):
        os.makedirs("output")  # 處理好的pdf存入了output目錄下
    pdf_img.save("output/去水印pdf_" + os.path.basename(pdf_path))


def group_pdf_clearwater(path_array: list[str]):
    print("************去水印時間比較久***********")
    for pdf_path in path_array:
        print(pdf_path, "去水印中...")
        single_pdf_clearwater(pdf_path)
    print("完成")


def folder_pdf_files(folder: str) -> list[str]:  # 一個文件夾里面有多少pdf文件
    file_list = []
    for a, b, c in os.walk(folder):
        if b == []:
            for filename in c:
                if filename[-3:].lower() == 'pdf':
                    file_path = os.path.join(a, filename)
                    file_list.append(file_path)
    print(folder, ": 有", len(file_list), "個pdf文件")
    return file_list


if __name__ == '__main__':
    time_start = time.time()
    path_list = folder_pdf_files("pdf的目錄")
    group_pdf_clearwater(path_list)
    time_end = time.time()
    print("程序運行時間:", round(time_end - time_start, 2), "秒")

想法

雖然最后實現(xiàn)了,但是有限制。

為了去除保存圖片后取圖片的中間步驟,我查閱了很多的文獻和資料,后面發(fā)現(xiàn)只有我最不想看的英文文檔才找到了問題的答案。我就感覺,比較偏的點,只有英文文獻才有。

因為限制,我在想是不是可以和python-普通pdf的添加水印的逆向思維進行操作,就是把水印圖層直接取出來。
如果處理的pdf文件比較多,并且頁數(shù)很多,程序運行就要很久,我都感覺像深度學(xué)習(xí)了。

到此這篇關(guān)于Python實現(xiàn)為PDF去除水印的示例代碼的文章就介紹到這了,更多相關(guān)Python PDF去水印內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Python當(dāng)中的字符串和編碼

    詳解Python當(dāng)中的字符串和編碼

    這篇文章主要介紹了詳解Python當(dāng)中的字符串和編碼,代碼基于Python2.x版本,文中所述皆是Python學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-04-04
  • 使用PyCharm安裝pytest及requests的問題

    使用PyCharm安裝pytest及requests的問題

    這篇文章主要介紹了使用PyCharm安裝pytest及requests的相關(guān)資料,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • PyQt 線程類 QThread使用詳解

    PyQt 線程類 QThread使用詳解

    QThread是我們將要詳細介紹的第一個類。它也是 Qt 線程類中最核心的底層類。由于 PyQt 的跨平臺特性,QThread要隱藏掉所有平臺相關(guān)的代碼。
    2017-07-07
  • Python第三方庫之OpenCV庫的實用指南

    Python第三方庫之OpenCV庫的實用指南

    OpenCV(Open Source Computer Vision Library)作為一個強大的計算機視覺庫,提供了豐富的圖像處理和計算機視覺功能,本文將帶領(lǐng)讀者使用Python編程語言,通過簡單的代碼示例,初步掌握OpenCV的圖像處理技術(shù),需要的朋友可以參考下
    2024-09-09
  • python實現(xiàn)dnspod自動更新dns解析的方法

    python實現(xiàn)dnspod自動更新dns解析的方法

    這篇文章主要介紹了python實現(xiàn)的dnspod自動更新dns解析的方法,需要的朋友可以參考下
    2014-02-02
  • python實現(xiàn)數(shù)據(jù)導(dǎo)出到excel的示例--普通格式

    python實現(xiàn)數(shù)據(jù)導(dǎo)出到excel的示例--普通格式

    今天小編就為大家分享一篇python實現(xiàn)數(shù)據(jù)導(dǎo)出到excel的示例--普通格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Python的argparse庫使用詳解

    Python的argparse庫使用詳解

    argparse是python標(biāo)準(zhǔn)庫里面用來處理命令行參數(shù)的庫,這篇文章主要介紹了Python的argparse庫使用詳解,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • 解決pycharm啟動后總是不停的updating indices...indexing的問題

    解決pycharm啟動后總是不停的updating indices...indexing的問題

    今天小編就為大家分享一篇解決pycharm啟動后總是不停的updating indices...indexing的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • keras.layer.input()用法說明

    keras.layer.input()用法說明

    這篇文章主要介紹了keras.layer.input()用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python查找字符串中包含的多個元素的實現(xiàn)

    Python查找字符串中包含的多個元素的實現(xiàn)

    本文詳細介紹了如何使用Python查找字符串中包含的多個元素,包括基本字符串操作和使用正則表達式進行高級搜索,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03

最新評論

阜宁县| 土默特左旗| 雅江县| 武鸣县| 阳城县| 左云县| 本溪市| 阜城县| 平舆县| 万全县| 淮阳县| 盱眙县| 望谟县| 萝北县| 汉寿县| 玛多县| 石城县| 安多县| 青海省| 开平市| 应用必备| 延川县| 山西省| 靖江市| 深圳市| 定西市| 杭锦旗| 怀远县| 济源市| 怀化市| 南澳县| 蒲江县| 云阳县| 务川| 冕宁县| 德江县| 休宁县| 娱乐| 噶尔县| 江北区| 云霄县|