最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

PDF 合并軟件要收費?程序員自己做一個

2021-03-20 23:14 作者:程序員魚皮  | 我要投稿

最近,魚皮遇到點麻煩事兒,需要對 幾千個 PDF 文件做統(tǒng)一處理,比如刪除所有 PDF 的前幾頁、或者給所有 PDF 添加封面等。

如果是幾個文件的話,倒可以人工一個一個去操作,但是對于幾千個文件,肯定要利用軟件實現(xiàn)自動化批處理了。

在網上也搜了很多 PDF 批處理的軟件,確實有很多可以滿足需求,但問題是,全部都要收費!而且,一個特么比一個貴??!

那作為一名程序員,何不自己動手、豐衣足食,自己開發(fā)一個批處理 PDF 文件的工具?

決定了!我不僅要做,還要直播做!

為何選擇自己開發(fā)?

一方面是我的需求比較簡單,再加上現(xiàn)在有各種編程類庫,想必自己開發(fā)的成本也不會很高,起碼比手動處理一個個 PDF 好多了。

另一方面是好久沒有寫小工具了,心里癢癢的,想練練手。

當然,還有最重要的一點,就是帶直播間的各位小伙伴感受一下編程的樂趣~

讓我們開始吧!

制作過程

在此之前,我并不了解有哪些處理 PDF 的類庫,因此是真正的完全從零開始 調研 + 開發(fā)

整個開發(fā)過程大概持續(xù)了半個小時,如果排除安裝環(huán)境、找源文件、直播交流等事情占用的時間,大概 10 分鐘就能完成,真的非常簡單了。

技術選型

首先,要選擇使用何種編程語言和類庫來編寫程序。提到小工具和腳本,我第一時間想到的是用 Python,可能是 Python 做文件處理的廣告太多了吧哈哈。有一說一,Python 的語法簡單,類庫豐富,用它來開發(fā)小工具的確非常方便。

那如何處理 PDF 文件呢?網上肯定有別人開發(fā)好的工具類庫!于是我去 GitHub 上簡單搜索了下,有沒有同時支持 PDF 修改、合并、頁面刪除的庫,果然搜到了 PyPDF2,看了下項目介紹,簡直完美符合我的需求,而且用法也很簡單。

因此,確定了,使用 Python 語言 + PyPDF2 進行開發(fā)。

安裝 Python 和類庫

Python 的安裝非常簡單,直接官網下載對應操作系統(tǒng)的安裝包即可。要注意的是,在安裝 Python 時,最好勾選上自動環(huán)境變量配置,省去了自己操作的麻煩。

勾選自動添加環(huán)境變量

安裝好 Python 后,可以在控制臺輸入命令來驗證是否安裝成功。

因為等會我們的工具程序依賴 PyPDF2 類庫,所以還要用 Python 自帶的安裝工具 pip 來安裝下它。

pip?install?PyPDF2

安裝好這些后,開始編寫代碼。

編寫代碼

如果只是要實現(xiàn)兩個 PDF 文件合并,一行代碼都不用自己寫!因為 PyPDF2 類庫已經給我們提供了文件合并的 Demo,直接復制粘貼過來就行了。

代碼如下,非常通俗易懂:

from?PyPDF2?import?PdfFileMerger

#?定義一個容器,存儲所有頁面
merger?=?PdfFileMerger()

#?讀取文件
input1?=?open("document1.pdf",?"rb")
input2?=?open("document2.pdf",?"rb")

#?插入?pdf1?的前三頁
merger.append(fileobj?=?input1,?pages?=?(0,3))

#?插入?pdf2?的第一頁
merger.merge(fileobj?=?input2,?pages?=?(0,1))

#?寫入一個新的?PDF?文件,輸出
output?=?open("document-output.pdf",?"wb")
merger.write(output)

我們可以隨便找兩個 PDF 文件來測試下,先跑通 Demo 再去做進一步的修改。

上述代碼運行成功后,我們可以支持用戶自己輸入要合并的 PDF 文件名,并且自定義第二個要拼接的 PDF 的起始頁數(shù)。

比如第一個 PDF 只有一頁封面,第二個 PDF 拼接起始頁為第二頁,二者合并,就實現(xiàn)了替換 PDF 文件封面的效果。

最終代碼如下:

from?PyPDF2?import?PdfFileMerger,?PdfFileReader

merger?=?PdfFileMerger()

#?input?函數(shù)接受用戶輸入
inputStr1?=?input("請輸入封面")
inputStr2?=?input("請輸入pdf")
startNum?=?input("請輸入pdf起始頁")

input1?=?open(inputStr1,?"rb")
input2?=?open(inputStr2,?"rb")
#?獲取?pdf?對象
pdf?=?PdfFileReader(input2)

#?拼接?pdf1?的第一頁
merger.append(fileobj?=?input1,?pages?=?(0,1))

#?拼接?pdf2?的第二~尾頁
merger.append(fileobj?=?input2,?pages?=?(int(startNum),?pdf.getNumPages()))

#?Write?to?an?output?PDF?document
output?=?open("document-output.pdf",?"wb")
merger.write(output)

上面所有的參數(shù)都是可以修改的,大家甚至可以 開發(fā)一個界面,支持用戶在輸入框設置參數(shù),從而讓工具變得更易用!

調試

開發(fā)的過程中,需要不斷調試,這里我們簡單驗證下結果,觀察 PDF 的合并是否符合預期即可!

好了,以上就是 PDF 處理工具的制作過程。對于程序員來說,編程語言是最好的工具,大家平時可以多利用它們來解決問題、提高工作效率,還能提升自己的編程技能,豈不美哉!

視頻演示:


PDF 合并軟件要收費?程序員自己做一個的評論 (共 條)

分享到微博請遵守國家法律
民丰县| 浙江省| 荥阳市| 岳西县| 阳信县| 江津市| 揭阳市| 永丰县| 贵阳市| 丹巴县| 丰顺县| 灵宝市| 汶上县| 商河县| 岑溪市| 昌平区| 定南县| 桂阳县| 清流县| 金乡县| 湘潭市| 尉氏县| 保山市| 渝北区| 讷河市| 南通市| 尚志市| 乌兰浩特市| 漯河市| 六枝特区| 深水埗区| 宜章县| 长治市| 元谋县| 萝北县| 高尔夫| 东阿县| 汤阴县| 玉树县| 绥芬河市| 桃园县|