Python | 合併PDF好難

2021-02-19 32768Hz

上篇文章《批量保存SolvNet文章》中使用Python模擬滑鼠鍵盤,批量下載了1300多篇solvnet的文章,並分別保存為pdf格式。這些零散的pdf文件不方便搜索。因此想到了使用軟體將這些pdf合併為一個大的PDF文件。

因為之前見過有軟體可以將多個PDF文件合併,所以有了上面的想法後,就baidu/google/360上搜軟體。下載試用了多個PDF合併軟體,最後發現都需要辦理VIP才能使用完整的PDF合併功能。另外,一些在線的PDF合併網站也可以免費完成這項工作,但考慮到這些文件的安全問題,並沒有使用。最後,發現一個臺灣網站可以在線合併PDF,也可以使用他們的軟體合併PDF。軟體的名字叫cleaverPDF。軟體使用很方便,但也不是完全沒有限制。它會限制每個PDF文件的頁面數,頁面數大於10頁的PDF是不會幫合併的。如下圖:

合併完所有的PDF後,發現也就大概有10篇文章超過了10頁以上,所以整體上影響並不大。

今天,突然想起來:Python是不是也可以做這個工作? 百度發現有多篇文章就是專門解決這個問題的,其中有一篇文章還把每個PDF文件的名字設置為書籤。文章網址如下:

http://www.cnblogs.com/weiqi/p/8207236.html

原文中還附帶有腳本,完整腳本如下:

1
2
3'''
4   #文件名:pdfmerge.py
5   本腳本用來合併pdf文件,輸出的pdf文件按輸入的pdf文件名生成書籤
6   使用示例如下:
7   python pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True'
8
9   示例說明:
10   要合併的pdf文件所在的路徑: D:\pdf-files
11   合併後的pdf文件的輸出文件名:merged-out.pdf
12   是否從pdf文件中導入書籤的值:True
13'''
14import os, sys, codecs
15from argparse import ArgumentParser, RawTextHelpFormatter
16from PyPDF2 import PdfFileReader, PdfFileWriter, PdfFileMerger
17
18def getfilenames(filepath='',filelist_out=[],file_ext='all'):
19    
20    for fpath, dirs, fs in os.walk(filepath):
21        for f in fs:
22            fi_d = os.path.join(fpath, f)
23            if  file_ext == 'all':
24                filelist_out.append(fi_d)
25            elif os.path.splitext(fi_d)[1] == file_ext:
26                filelist_out.append(fi_d)
27            else:
28                pass
29    return filelist_out
30
31def mergefiles(path, output_filename, import_bookmarks=False):
32    
33    
34    merger = PdfFileMerger()
35    filelist = getfilenames(filepath=path, file_ext='.pdf')
36    if len(filelist) == 0:
37        print("當前目錄及子目錄下不存在pdf文件")
38        sys.exit()
39    for filename in filelist:
40        f = codecs.open(filename, 'rb')
41        file_rd = PdfFileReader(f)
42        short_filename = os.path.basename(os.path.splitext(filename)[0])
43        if file_rd.isEncrypted == True:
44            print('不支持的加密文件:%s'%(filename))
45            continue
46        merger.append(file_rd, bookmark=short_filename, import_bookmarks=import_bookmarks)
47        print('合併文件:%s'%(filename))
48        f.close()
49    out_filename=os.path.join(os.path.abspath(path), output_filename)
50    merger.write(out_filename)
51    print('合併後的輸出文件:%s'%(out_filename))
52    merger.close()
53
54if __name__ == "__main__":
55    description="\n本腳本用來合併pdf文件,輸出的pdf文件按輸入的pdf文件名生成書籤\n使用示例如下:"
56    description=description+'\npython pdfmerge.py -p "D:\pdf-files" -o "merged-out.pdf" -b True'
57    description=description+'\n\n'+"示例說明:"
58    description=description+'\n'+"要合併的pdf文件所在的路徑: D:\pdf-files"
59    description=description+'\n'+"合併後的pdf文件的輸出文件名:merged-out.pdf"
60    description=description+'\n'+"是否從pdf文件中導入書籤的值:True"
61
62    
63    parser = ArgumentParser(description=description, formatter_class=RawTextHelpFormatter)
64
65    
66
67    parser.add_argument("-p", "--path",
68                        dest="path",
69                        default=".",
70                        help="PDF文件所在目錄")
71    parser.add_argument("-o", "--output",
72                        dest="output_filename",
73                        default="merged.pdf",
74                        help="合併PDF的輸出文件名",
75                        metavar="FILE")
76    parser.add_argument("-b", "--bookmark",
77                    dest="import_bookmarks",
78                    default="False",
79                    help="是否從pdf文件中導入書籤,值可以是'True'或者'False'")
80
81    args = parser.parse_args()
82    
83    mergefiles(args.path, args.output_filename, args.import_bookmarks)
84    
85    
86    

還是我Python大法好!!!

相關焦點

  • python用PyPDF2庫解決pdf合併拆分問題
    pdf拆分合併是現在辦公中比較常用的功能,它能省去辦公中許多不必要的麻煩。PyPDF是一個處理PDF的庫,今天就用它實戰操作一番,完成拆分合併PDF。pdf拆分合併專業戶PyPDF2庫還是先對PyPDF2庫簡單介紹一下,PyPDF2是一個純python的PDF庫,能夠拆分、合併、裁剪和轉換
  • 【Python基礎】python使用PyPDF2和pdfplumber操作pdf
    1、PyPDF2和pdfplumber庫介紹PyPDF2官網:PyPDF2官網 ,可以更好的讀取、寫入、分割、合併PDF文件;pdfplumber官網:pdfplumber官網,可以更好地讀取PDF文件內容和提取PDF中的表格;這兩個庫不屬於python標準庫,都需要單獨安裝;2、python提取PDF文字內容1)利用pdfplumber提取文字
  • Python 操作 PDF 的幾種方法
    前言大家好,有關 Python 操作 PDF 的案例之前已經寫過一個👉PDF批量合併,這個案例初衷只是給大家提供一個便利的腳本合併第一個工作是將5個發票pdf合併成10頁。這裡讀取器和寫入器應該怎麼配合呢?
  • 教你用Python 操作 PDF 的幾種方法
    來源 | 早起Python(ID:zaoqi-python)01前言
  • Python實戰01:合併多個PDF文件
    如下圖1所示,在「E:\完美Excel\test」文件夾中有兩個PDF文件:excelperfect.pdf和完美Excel.pdf。現在,我們想要合併這兩個PDF文件為一個PDF文件。(pageNum)       pdfWriter.addPage(pageObj) #以寫二進位文件打開輸出的PDF文件"匯總.pdf"pdfOutput = open('匯總.pdf', 'wb')#用write()方法創建實際的PDF文件pdfWriter.write(pdfOutput)#調用close
  • 一個函數實現PDF文檔合併與拆分
    這不,最近小編需要合併一些PDF文檔,果真有合適的函數。二、合併文檔目的:將兩個文檔合併為一個新的文檔。(一)引入庫並設置文檔位置import fitzfile1="F:/pdfs/demo1.pdf" file2="F:/pdfs/1.pdf" mergef="F:/pdfs/merge.pdf" (二)合併doc1=fitz.open(file1)doc2
  • 超實用的PDF合併軟體-PDF Combinepdf-pdf合併軟體免費版
    PDF Combine 是一款專業實用短小精悍的PDF合併軟體,顧名思義它的主要功能就是將多個pdf合併成一個pdf文件,無需Adobe
  • 何不自己用Python實現PDF文件分割和合併?
    , 'wb') as f:        output_file.write(f)def merge_pdf(merge_list, output_pdf):    """    merge_list: 需要合併的pdf列表    output_pdf:合併之後的pdf名    """    # 實例一個 PDF文件編寫器
  • python必備書籍pdf下載
    7003 簡明Python教程本書是為有志於學習python編程的人寫的,適合從編程門外漢到計算機高手的各種讀者閱讀。7013Python庫參考手冊.pdf"7014Python精要參考(第二版)_翻譯.pdf"7015Python技術手冊(第2版).pdf"連結: 7016python基礎教程(第二版).pdf"
  • python 實用程序 | PDF 轉 Word
    現在網上有很多文檔是 pdf 格式,雖然這個格式閱讀起來很方便,並且裡面的內容不會亂掉,但相應的我們就無法修改裡面的內容。雖然現在市面上有很多 pdf 轉 word 軟體,比如 wps,但大多數的軟體是要收費的,並且價格不菲。前些天就有人叫我幫她把 pdf 文檔轉成 word 的文檔。
  • Python操作PDF全總結|處理PDF文檔不得不知道的兩個庫
    、合併PDF文檔,它還可以對pdf文檔進行添加水印、加密解密等。官方文檔:https://pythonhosted.org/PyPDF2安裝:pip install pypdf2pip install pdfplumberpdfplumber提取PDF文字
  • PDF轉EXCEL,python的這個技能知道嗎?
    當在pdf上看到自己想用的表格,卻無法將其複製下來的時候,只能默默地打開excel對照著pdf表格的形式敲打出來,既費時又費力!這裡介紹如何用python程序將pdf上的表格自動轉化為excel表!python辦公自動化——PDF轉Word所使用的pdfminer庫類似,都是從pdf裡面提取信息。
  • Python 操作 PDF,這兩個庫必須會!
    庫,可以讀取文檔信息(標題,作者等)、寫入、分割、合併PDF文檔,它還可以對pdf文檔進行添加水印、加密解密等文檔:https://pythonhosted.org/PyPDF2安裝:pip install pypdf2pip
  • pdf在線合併方法推薦,如何將pdf文件合併到一起?
    如何將pdf文件合併到一起?我大學選的是設計專業,不是學3d建模那種,是比較偏向於美工類的平面設計。平時,專業課老師會發很多以pdf格式保存的平面設計理論知識文件給我們,叮囑班裡同學課後也要時不時學習一下。為方便查看,我把它們給合併到一起了。
  • PDF多文檔合併技巧
    ♢pdf文檔可能是我們日常學習辦公中除了office軟體之外使用最廣泛的文檔了。大家肯定都曾遇到過pdf文檔合併的問題,但是關於這方面的使用技巧卻不是很多。今天教給大家兩種pdf多文檔合併技巧:◆使用Adobe官方編輯軟體(Adobe Acrobat X Pro)◆pdf在線編輯平臺(Smallpdf)(大家看清楚了不是Adobe Acrobat Reader那個,雖然官方的Reader 也可以進行多文檔合併,但是屬於付費模塊,要花錢的。)
  • Python自動化辦公(內容)
    python自動化辦公(python操作Excel、Word、PDF、PPT)python使用openpyxl操作excel;python使用PyPDF2和pdfplumber操作pdf;python使用python-docx操作word;python使用python-pptx操作PPT;python如何自動收發郵件;python製作電話號碼歸屬地查詢工具;一:python
  • Python實現一鍵翻譯英文論文,實現了pdf文檔英譯漢,pdf格式不變
    支持谷歌、必應、有道的免費翻譯接口,基於Django、PyMuPDF實現了pdf文檔英譯漢的功能,翻譯後的pdf格式基本保持不變,可以下載docx和pdf格式的翻譯文檔,基本解決複製caj中文論文時的格式問題,簡單的滿足看論文以及寫總結的需求。
  • 輕鬆完成PDF拆分
    有時候,需要合併的只是幾個PDF中的某幾頁,直接對這幾個PDF進行合併將產生過多冗餘頁。因此,合併前最好將原有PDF進行拆分,選出需要的那幾頁再進行合併。另一些時候,我們想將一份PDF拆分成幾份分發給不同的人,或者從一份頁數很多的PDF電子書中抽取某幾頁生成單獨的PDF。
  • 使用pyttsx3和pdfminer.six讀取PDF文件轉音頻Python腳本
    背景是讀一些PDF文件時,會耽誤做其他事,想著寫個Python腳本來聽多好,使用Python3編寫。
  • Pdf轉Excel收費?Python幾行幫你搞定!
    如何挑選Python包我們經常在網上看到一些python包,雖然功能都是一樣的,但是包名卻各不同。例如解析pdf的包就有好幾種,那麼我們該如何挑選呢?愛尚實訓小編在這裡告訴大家一個小方法,利用python官方文檔來決定,看看用哪個比較好呢。