欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2022年04月02日 15:50:38   作者:KjPrime  
這篇文章主要介紹了如何利用Python實現(xiàn)PDF去除水印功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(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進(jìn)行測試之后再去頁數(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ù)自己的水印的顏色進(jìn)行更改。
                    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)了,但是有限制。

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

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

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

相關(guān)文章

  • python的正則表達(dá)式和re模塊詳解

    python的正則表達(dá)式和re模塊詳解

    這篇文章主要為大家詳細(xì)介紹了python的正則表達(dá)式和re模塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • PyQt打開保存對話框的方法和使用詳解

    PyQt打開保存對話框的方法和使用詳解

    這篇文章主要為大家詳細(xì)介紹了PyQt打開保存對話框的方法和使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • 基于python中pygame模塊的Linux下安裝過程(詳解)

    基于python中pygame模塊的Linux下安裝過程(詳解)

    下面小編就為大家?guī)硪黄趐ython中pygame模塊的Linux下安裝過程(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python實現(xiàn)Kerberos用戶的增刪改查操作

    Python實現(xiàn)Kerberos用戶的增刪改查操作

    這篇文章主要介紹了Python實現(xiàn)Kerberos用戶的增刪改查操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PyQt6中自定義浮點型滑塊類的實現(xiàn)

    PyQt6中自定義浮點型滑塊類的實現(xiàn)

    在PyQt6中,滑塊是常用的用戶界面元素之一,用于選擇數(shù)值范圍,本文主要介紹了PyQt6中自定義浮點型滑塊類的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Python?ArcPy實現(xiàn)批量拼接長時間序列柵格圖像

    Python?ArcPy實現(xiàn)批量拼接長時間序列柵格圖像

    這篇文章主要介紹了如何基于Python中ArcPy模塊,對大量不同時相的柵格遙感影像按照其成像時間依次執(zhí)行批量拼接的方法,感興趣的可以了解一下
    2023-03-03
  • 用python編寫一個圖片拼接工具

    用python編寫一個圖片拼接工具

    大家好,本篇文章主要講的是用python編寫一個圖片拼接工具,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python利用pygame模塊制作代碼雨

    Python利用pygame模塊制作代碼雨

    對Python游戲有所了解的朋友都知道,在2D的游戲制作中,經(jīng)常會用到一個模塊pygame,他能幫助我們實現(xiàn)很多方便使用的功能,本文就來用pygame模塊制作代碼雨效果,需要的可以了解一下
    2023-05-05
  • python實現(xiàn)機(jī)器學(xué)習(xí)之元線性回歸

    python實現(xiàn)機(jī)器學(xué)習(xí)之元線性回歸

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)機(jī)器學(xué)習(xí)之元線性回歸,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python實現(xiàn)返回數(shù)組中第i小元素的方法示例

    Python實現(xiàn)返回數(shù)組中第i小元素的方法示例

    這篇文章主要介紹了Python實現(xiàn)返回數(shù)組中第i小元素的方法,結(jié)合實例形式分析了Python針對數(shù)組的遍歷、排序、運算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12

最新評論