国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Python入門教程】Python壓縮PDF(fitz、aspose.pdf、PyPDF2)

這篇具有很好參考價(jià)值的文章主要介紹了【Python入門教程】Python壓縮PDF(fitz、aspose.pdf、PyPDF2)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

????????我們平時(shí)在使用PDF時(shí)有時(shí)會(huì)遇到PDF過大的情況,例如最近我在進(jìn)行工程制圖時(shí),需要將影像使用PDF導(dǎo)出,這就導(dǎo)致PDF文件會(huì)非常大,一般有200M左右,這對于數(shù)據(jù)傳輸非常不友好。同時(shí)有很多軟件的PDF壓縮功能都需要收費(fèi),所以今天就跟大家分享一下如何使用Python對PDF文件進(jìn)行壓縮,這里給大家分別用三個(gè)Python庫對PDF文件進(jìn)行壓縮。

1. fitz庫進(jìn)行PDF壓縮

1.1 fitz庫介紹

????????Python的fitz庫是一個(gè)基于Python開發(fā)的PDF處理庫,它是PyMuPDF的前身。fitz提供了一系列的API和功能,可以用于讀取、編輯和生成PDF文件。此外,它還可以處理其他類型的圖像,如TIFF和JPEG,提供圖像處理功能,如旋轉(zhuǎn)、裁剪、縮放、調(diào)整亮度、對比度和色彩平衡等。

????????在使用fitz庫之前,需要先安裝它。可以通過pip命令進(jìn)行安裝,但需要注意的是,fitz庫依賴于libmupdf,所以在安裝前需要先安裝libmupdf。安裝完成后,可以導(dǎo)入fitz庫,并使用其中的函數(shù)和類來操作PDF文件或其他圖像。

????????在Python中,fitz庫可以用于多種任務(wù),如打開PDF文件、遍歷頁面、添加注釋、提取文本、旋轉(zhuǎn)頁面等。此外,它還可以用于在PDF頁面上添加高亮注釋、提取圖像等操作。

????????總的來說,fitz庫是一個(gè)非常實(shí)用的Python庫,它提供了豐富的PDF和圖像處理功能,可以讓我們更加方便地處理PDF文件和其他圖像。雖然可能需要一定的學(xué)習(xí)曲線,但是一旦掌握了其使用方法,就能夠大大提高工作效率。

1.2 代碼

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小書童
@File :Compress PDF.py
@IDE :PyCharm
@Purpose:PDF文件壓縮
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import os
import fitz
import PyPDF2
import aspose.pdf as ap


# --------------------------------------通過轉(zhuǎn)換圖片實(shí)現(xiàn)壓縮------------------------------------


def convert_img(path1, dpi, work_path):
    file = fitz.open(path1)
    page_count = file.page_count
    if os.path.exists(work_path):  # 臨時(shí)文件夾,需要為空
        os.removedirs(work_path)
    os.mkdir(work_path)
    for i in range(page_count):
        page = file[i]
        dpi = int(dpi)  # 值越大,分辨率越高,文件越清晰
        rotate = int(0)
        print(page)
        trans = fitz.Matrix(dpi / 100.0, dpi / 100.0).prerotate(rotate)
        pm = page.get_pixmap(matrix=trans, alpha=False)
        img_path = work_path + '/%s.jpg' % str(i + 1)
        pm.save(img_path)  # 保存為圖像文件
    file.close()


def img_for_pdf(path1, path2, work_path):
    file1 = fitz.open(path1)
    page_count = file1.page_count
    file2 = fitz.open()
    for i in range(page_count):
        img_path = work_path + '/%s.jpg' % str(i + 1)
        img = fitz.open(img_path)  # 打開圖片
        pdf = img.convert_to_pdf()  # 使用圖片創(chuàng)建單頁的PDF
        os.remove(img_path)
        pdf_temp = fitz.open("pdf", pdf)
        file2.insert_pdf(pdf_temp)  # 將當(dāng)前頁插入文檔
    if os.path.exists(path2):  # 若文件存在先刪除
        os.remove(path2)
    file2.save(path2)  # 保存PDF文件
    file2.close()


def Compress_by_img(path1, path2, dpi, work_path):
    """
    :param path1: 需要壓縮的pdf文件路徑
    :param path2: 保存的pdf文件路徑
    :param dpi: 分辨率
    :param work_path: 臨時(shí)工作路徑
    :return: None
    無水印,效果較好!
    """
    convert_img(path1, dpi, work_path)
    img_for_pdf(path1, path2, work_path)
    os.removedirs(work_path)


if __name__ == "__main__":
    work_path1 = r'Z:/彭俊喜/.pdf'
    in_path = r"Z:/彭俊喜/123.pdf"  # 需要壓縮的PDF文件
    out_path = r"Z:/彭俊喜/321.pdf"  # 壓縮后的PDF文件路徑
    zoom = 1500  # 清晰度調(diào)節(jié),縮放比率
    Compress_by_img(in_path, out_path, zoom, work_path1)

2.aspose.pdf庫進(jìn)行PDF壓縮

2.1 aspose.pdf庫介紹

????????Aspose.PDF for Python是一款高級PDF處理API,它允許在跨平臺應(yīng)用程序中輕松生成、修改、轉(zhuǎn)換、呈現(xiàn)、保護(hù)和打印PDF文檔,而無需使用Adobe Acrobat。這款A(yù)PI提供了廣泛的功能,包括壓縮選項(xiàng)、表創(chuàng)建和處理、圖形和圖像功能、超鏈接功能、圖章和水印任務(wù),以及擴(kuò)展的安全控件和自定義字體處理。

具體來說,Aspose.PDF for Python可以幫助你執(zhí)行以下操作:

  1. 創(chuàng)建PDF文件:你可以使用Python代碼生成全新的PDF文件,包括添加文本、圖像、表格等元素。
  2. 編輯PDF文件:Aspose.PDF for Python允許你修改現(xiàn)有的PDF文件,包括更改文本、添加或刪除頁面、插入圖像等。
  3. 轉(zhuǎn)換PDF文件:這款A(yù)PI支持將PDF文件轉(zhuǎn)換為其他格式,如Word、HTML、TXT和DOCX等,也支持將其他格式的文件轉(zhuǎn)換為PDF。
  4. 處理PDF內(nèi)容:你可以使用Aspose.PDF for Python來提取、修改或添加PDF中的文本、圖像等元素。
  5. 添加水印和安全性:Aspose.PDF for Python允許你在PDF文件中添加水印,以增強(qiáng)文檔的版權(quán)保護(hù)。此外,你還可以設(shè)置文檔的訪問權(quán)限、加密等安全措施。
  6. 優(yōu)化PDF文件:這款A(yù)PI提供了壓縮選項(xiàng),可以幫助你減小PDF文件的大小,以便于網(wǎng)絡(luò)傳輸或存儲。

????????總的來說,Aspose.PDF for Python是一款功能強(qiáng)大、易于使用的PDF處理庫,它可以幫助你高效地處理PDF文件,提高工作效率。同時(shí),它也提供了豐富的API接口和文檔支持,方便開發(fā)者進(jìn)行集成和開發(fā)。

2.2 代碼

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小書童
@File :Compress PDF.py
@IDE :PyCharm
@Purpose:PDF文件壓縮
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import os
import fitz
import PyPDF2
import aspose.pdf as ap

# ---------------------------------------無損壓縮,但有水印-------------------------------------


def Lossless_Compression(path1, path2):
    """
    :param path1: 需要壓縮的pdf文件路徑
    :param path2: 保存的pdf文件路徑
    :return: None
    無損壓縮,無法去除水?。。?!
    """
    compress_path = ap.Document(path1)  # 需要壓縮的pdf文件路徑
    # print(compress_path)
    optimize = ap.optimization.OptimizationOptions()
    optimize.image_compression_options.compress_images = True
    optimize.image_compression_options.image_quality = 90  # 壓縮質(zhì)量
    compress_path.optimize_resources(optimize)
    compress_path.save(path2)  # 需要壓縮后保存的文件路徑
    # Evaluation Only. Created with Aspose.PDF. Copyright 2002-2023 Aspose Pty Ltd.無法去除水印


if __name__ == "__main__":
    work_path1 = r'Z:/彭俊喜/.pdf'
    in_path = r"Z:/彭俊喜/123.pdf"  # 需要壓縮的PDF文件
    out_path = r"Z:/彭俊喜/321.pdf"  # 壓縮后的PDF文件路徑
    Lossless_Compression(in_path, out_path)

3.PyPDF2庫進(jìn)行PDF

3.1 PyPDF2庫介紹

????????PyPDF2是一個(gè)純Python的PDF處理庫,它允許用戶讀取、合并、拆分、旋轉(zhuǎn)和轉(zhuǎn)換PDF文件。此外,它還可以為PDF文件添加水印、密碼保護(hù),以及從PDF中提取文本和元數(shù)據(jù)。

以下是PyPDF2庫的一些主要功能和特點(diǎn):

  1. PDF合并與拆分:PyPDF2可以輕松地將多個(gè)PDF文件合并成一個(gè)文件,或者將一個(gè)PDF文件拆分為多個(gè)文件。這對于處理大量PDF文件或重新組織文件內(nèi)容非常有用。
  2. 頁面旋轉(zhuǎn):PyPDF2允許用戶旋轉(zhuǎn)PDF文件中的頁面,這對于調(diào)整頁面方向或修復(fù)錯(cuò)誤的頁面方向非常有幫助。
  3. 添加水印:使用PyPDF2,用戶可以為PDF文件添加自定義的水印,以增強(qiáng)文檔的版權(quán)保護(hù)或品牌識別。
  4. 密碼保護(hù):PyPDF2提供了為PDF文件添加密碼保護(hù)的功能,以確保文檔的安全性。只有知道密碼的用戶才能打開和編輯文件。
  5. 文本和元數(shù)據(jù)提?。篜yPDF2可以從PDF文件中提取文本和元數(shù)據(jù)(如作者、標(biāo)題、主題等),這對于分析和處理PDF內(nèi)容非常有用。
  6. 兼容性強(qiáng):PyPDF2庫兼容所有版本的PDF文件,并且可以在任何平臺上運(yùn)行,而無需對任何外部庫產(chǎn)生任何與平臺相關(guān)的依賴。

????????總的來說,PyPDF2是一個(gè)功能強(qiáng)大且易于使用的Python PDF處理庫,適用于各種PDF處理任務(wù),包括文件合并、拆分、旋轉(zhuǎn)、添加水印、密碼保護(hù)以及文本和元數(shù)據(jù)提取等。然而,需要注意的是,PyPDF2項(xiàng)目的最后一個(gè)版本將是3.0.X,后續(xù)的開發(fā)將繼續(xù)使用pypdf==3.1.0。因此,在使用PyPDF2時(shí),建議查看最新的文檔和更新信息,以確保兼容性和穩(wěn)定性。

3.2 代碼

# -*- coding: utf-8 -*-
"""
@Time : 2023/11/3 14:37
@Auth : RS迷途小書童
@File :Compress PDF.py
@IDE :PyCharm
@Purpose:PDF文件壓縮
@Web:博客地址:https://blog.csdn.net/m0_56729804
"""
import os
import fitz
import PyPDF2
import aspose.pdf as ap

# ---------------------------------------逐頁壓縮,效果未知-------------------------------------
def compress_by_page(path1, path2):
    """
    :param path1: 需要壓縮的pdf文件路徑
    :param path2: 保存的pdf文件路徑
    :return: None
    逐頁壓縮,效果未知,慢?。?!
    """
    pdf_file = open(path1, "rb")
    pdf_reader = PyPDF2.PdfReader(pdf_file)
    pdf_writer = PyPDF2.PdfWriter()
    for page_num in range(len(pdf_reader.pages)):
        page = pdf_reader.pages[page_num]
        page.compress_content_streams()
        pdf_writer.add_page(page)
    out_file = open(path2, "wb")
    pdf_writer.write(out_file)
    out_file.close()
    pdf_file.close()


if __name__ == "__main__":
    # work_path1 = r'Z:/彭俊喜/.pdf'
    in_path = r"Z:/彭俊喜/123.pdf"  # 需要壓縮的PDF文件
    out_path = r"Z:/彭俊喜/321.pdf"  # 壓縮后的PDF文件路徑
    compress_by_page(in_path, out_path)

4.總結(jié)

????????從三個(gè)庫的壓縮效果來說,aspose.pdf庫壓縮的時(shí)間最短、質(zhì)量更好、占用空間最小,但它保存PDF時(shí)會(huì)在左上角默認(rèn)添加一行紅字(版權(quán)說明)。其次就是fitz庫,通過調(diào)節(jié)分辨率也可以很高質(zhì)量地壓縮PDF,但是占用空間略大于aspose.pdf。最后就是PyPDF2,雖然是原生的Python庫,但是壓縮速度較慢,同時(shí)它的原理是逐頁進(jìn)行圖片壓縮,對于我這個(gè)單頁單圖片太大的PDF作用不大,我也沒空去測試多頁壓縮的效果,你們可以自己試試。

????????我會(huì)不定期地分享平時(shí)工作、學(xué)習(xí)中使用的代碼和學(xué)習(xí)經(jīng)驗(yàn),感興趣的話可以點(diǎn)個(gè)關(guān)注。如果有什么學(xué)術(shù)問題,可以直接留言或者私信我,看到就會(huì)回復(fù)!文章來源地址http://www.zghlxwxcb.cn/news/detail-836046.html

到了這里,關(guān)于【Python入門教程】Python壓縮PDF(fitz、aspose.pdf、PyPDF2)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 條碼控件Aspose.BarCode入門教程(8):C#從圖像中讀取條形碼

    條碼控件Aspose.BarCode入門教程(8):C#從圖像中讀取條形碼

    Aspose.BarCode for .NET?是一個(gè)功能強(qiáng)大的API,可以從任意角度生成和識別多種圖像類型的一維和二維條形碼。開發(fā)人員可以輕松添加條形碼生成和識別功能,以及在.NET應(yīng)用程序中將生成的條形碼導(dǎo)出為高質(zhì)量的圖像格式。 Aspose API支持流行文件格式處理,并允許將各類文檔導(dǎo)出或

    2023年04月25日
    瀏覽(15)
  • python壓縮pdf文件大小

    python壓縮pdf文件大小

    pdf文件過大,經(jīng)常會(huì)是一個(gè)問題,但是市面上基本上都是收費(fèi)的工具,wps需要開會(huì)員才能使用。因此找了一個(gè)python庫進(jìn)行試驗(yàn): 首先需要安裝 運(yùn)行的代碼: 這個(gè)代碼使用非常簡單,主要是壓縮文件里面的圖片質(zhì)量,實(shí)際上圖片質(zhì)量差一些在閱讀器里面是看不出來的區(qū)別,效

    2024年02月13日
    瀏覽(29)
  • PDF處理控件aspose.PDF功能演示:使用 C# .NET 復(fù)制 PDF 頁面

    PDF處理控件aspose.PDF功能演示:使用 C# .NET 復(fù)制 PDF 頁面

    作為程序員,您通常必須以純文本形式從 PDF 文件中提取內(nèi)容以進(jìn)行進(jìn)一步處理,例如分析和信息提取。如果沒有合適的工具,處理 PDF 文件并將整個(gè) PDF 轉(zhuǎn)換為 TXT 格式是一項(xiàng)麻煩的任務(wù)。因此,在本博客中,我們將探討如何使用 C# 以編程方式將 PDF 文件轉(zhuǎn)換為 TXT 格式。 A

    2024年01月23日
    瀏覽(19)
  • 【aspose之三】【springboot】java使用aspose.html 的cloud版html轉(zhuǎn)pdf,html2pdf

    把url網(wǎng)頁或本地文件html轉(zhuǎn)換pdf 1.maven配置 2.代碼 本地文件 html轉(zhuǎn)pdf 可本地文件或url轉(zhuǎn)換 pdf布局設(shè)置 2.密鑰及配置 aspose配置

    2024年02月06日
    瀏覽(20)
  • aspose 使用ftl模板生成word和pdf

    aspose 使用ftl模板生成word和pdf

    1 先找到word模板,用${},替換變量,保存,然后另存為xml,最后把xml后綴改成ftl。 如下圖: word 模板文件 ftl模板文件如下: 2 代碼生成 下面函數(shù)將ftl填充數(shù)據(jù),并生成word和pdf 3 測試主程序 4 結(jié)果: pdf文件 word文件 還可以生成圖片:

    2024年02月13日
    瀏覽(21)
  • PDF處理控件Aspose.PDF功能演示:使用Java將Base64字符串轉(zhuǎn)換為PDF/JPG/PNG圖像

    PDF處理控件Aspose.PDF功能演示:使用Java將Base64字符串轉(zhuǎn)換為PDF/JPG/PNG圖像

    Aspose.PDF ?是一款高級PDF處理API,可以在跨平臺應(yīng)用程序中輕松生成,修改,轉(zhuǎn)換,呈現(xiàn),保護(hù)和打印文檔。無需使用Adobe Acrobat。此外,API提供壓縮選項(xiàng),表創(chuàng)建和處理,圖形和圖像功能,廣泛的超鏈接功能,圖章和水印任務(wù),擴(kuò)展的安全控件和自定義字體處理。 Aspose API支持

    2024年02月04日
    瀏覽(44)
  • 使用aspose相關(guān)包將excel轉(zhuǎn)成pdf 并導(dǎo)出

    使用aspose相關(guān)包將excel轉(zhuǎn)成pdf 并導(dǎo)出

    1、依賴的jar包 , jar獲取鏈接 aspose相關(guān)三方j(luò)ar ,下載解壓后,在項(xiàng)目路徑下建一個(gè)libs包,然后將下圖兩個(gè)jar 拷貝至剛新建的libs目錄中 2、pom.xml中加入maven引入 2.1 使用SpringBoot打包插件生成jar包的時(shí)候,你會(huì)發(fā)現(xiàn)這個(gè)jar包不會(huì)被打進(jìn)去,進(jìn)而出現(xiàn)錯(cuò)誤。解決這個(gè)問題就需要在

    2024年04月09日
    瀏覽(24)
  • Java將Word轉(zhuǎn)換成PDF-aspose

    本文將演示用aspose-word.jar包來實(shí)現(xiàn)將Word轉(zhuǎn)換成PDF,且可以保留圖表和圖片。 在公司OA項(xiàng)目開發(fā)中, 需要將word版本的合同模板上傳,業(yè)務(wù)員只能下載pdf版本合同模板,需要實(shí)現(xiàn)將Word轉(zhuǎn)換成PDF,并且動(dòng)態(tài)填充項(xiàng)目編號以及甲乙方信息等。 Aspose.Words for Java是一個(gè)原生庫,為開發(fā)

    2024年02月07日
    瀏覽(24)
  • (Java)word轉(zhuǎn)pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)導(dǎo)出

    (Java)word轉(zhuǎn)pdf(aspose),pdf加水印(itextpdf),并支持POI模板(包括checkbox)導(dǎo)出

    目錄 1、引入jar包 2、pdf處理工具類 3、poi模板導(dǎo)出工具類 4、測試類 5、模板 6、最終效果? 1、引入jar包 ? 2、pdf處理工具類 ?3、poi模板導(dǎo)出工具類 ?4、測試類 5、模板 6、最終效果?

    2024年02月06日
    瀏覽(33)
  • 使用Aspose.Words將word轉(zhuǎn)PDF并且去水印。

    使用Aspose.Words將word轉(zhuǎn)PDF并且去水印。

    ?? 作 ? ??????? 者 :是江迪呀 ?? 本文 : Java 、 工具類 、 轉(zhuǎn)換 、 word轉(zhuǎn)pdf 、 Aspose.Words 、 后端 ?? 每日?? 一言 : 只要思想不滑坡,辦法總比困難多。 在我們?nèi)粘i_發(fā)中經(jīng)常會(huì)有將 word文檔 轉(zhuǎn)為 PDF 的場景,有很多種方法我最傾向的的是使用 Aspose.Words ,原

    2024年02月11日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包