日常辦公中,經(jīng)常會(huì)使用PDF文檔,難免需要對(duì)PDF文檔進(jìn)行編輯,有時(shí)候PDF文檔中的大部分內(nèi)容都是一樣的,只是發(fā)送對(duì)象不同。
這種模板套用的場(chǎng)景下,使用Python進(jìn)行自動(dòng)化就尤為方便,用最短的時(shí)間辦最高效的事。
今天就給大家講講如何用Python自動(dòng)套用模板批量生成下方這樣的PDF文檔。
![pYYBAGP9Yk2AWyCFAAJbmQkVwU0892.png](https://file.elecfans.com/web2/M00/94/D1/pYYBAGP9Yk2AWyCFAAJbmQkVwU0892.png)
1.準(zhǔn)備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上噢,如果沒有,請(qǐng)?jiān)L問這篇文章:超詳細(xì)Python安裝指南進(jìn)行安裝。如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda
Windows環(huán)境下打開Cmd(開始—運(yùn)行—CMD),蘋果系統(tǒng)環(huán)境下請(qǐng)打開Terminal(command+空格輸入Terminal),準(zhǔn)備開始輸入命令安裝依賴。
當(dāng)然,我更推薦大家用VSCode編輯器,把本文代碼Copy下來(lái),在編輯器下方的終端運(yùn)行命令安裝依賴模塊,多舒服的一件事啊:Python 編程的最好搭檔—VSCode 詳細(xì)指南。
在終端輸入以下命令安裝我們所需要的依賴模塊:
pip installfpdf
看到 Successfully installed xxx 則說(shuō)明安裝成功。
本文完整源代碼可在【Python實(shí)用寶典】公眾號(hào)后臺(tái)回復(fù):批量生成pdf下載。
2.基本使用
PyPDF是從PHP移植到Python的第三方模塊。其主要特點(diǎn)有:
1.非常容易使用和擴(kuò)展
2.提供了許多簡(jiǎn)單示例
3.沒有外部依賴項(xiàng)
4.不需要安裝變異其他庫(kù)(DLL)
它的基本功能有:
1.調(diào)整PDF精度、頁(yè)面格式、邊距
2.管理頁(yè)眉、頁(yè)腳
3.自動(dòng)分頁(yè)符、自動(dòng)換行和文本對(duì)齊
4.支持圖像、顏色、超鏈接文本
5.支持壓縮
一個(gè)最簡(jiǎn)單的生成示例:
![pYYBAGP9Yl2AGSLAAAHI_mMFEew871.png](https://file.elecfans.com/web2/M00/94/D1/pYYBAGP9Yl2AGSLAAAHI_mMFEew871.png)
生成的效果如下,由于PDF空白處太多,這里只截字體部分:
![pYYBAGP9YnSAKy_FAAAudIFC628730.png](https://file.elecfans.com/web2/M00/94/D1/pYYBAGP9YnSAKy_FAAAudIFC628730.png)
把生成的文本變復(fù)雜一點(diǎn):
![poYBAGP9Ym2AdsKRAAGnDw6zJE8910.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9Ym2AdsKRAAGnDw6zJE8910.png)
注意cell的參數(shù):
1.border取值為0或1,代表是否顯示邊框。
2.ln是指在生成該文本框之后焦點(diǎn)移動(dòng)到的位置,0 代表到該文本框的右邊,1 代表?yè)Q行,2 代表文本框的正下方。
3.align是指文本對(duì)齊格式,C為居中、L為左對(duì)齊、R為右對(duì)齊。
因此上述代碼會(huì)生成類似這樣的PDF文檔:
![poYBAGP9Yn6Ac-kAAAAcllUuULI031.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9Yn6Ac-kAAAAcllUuULI031.png)
cell還有2個(gè)參數(shù):
1.fill參數(shù)用于設(shè)置文本框的背景,TRUE時(shí)為白色,F(xiàn)alse為透明。
2.link參數(shù)用于添加超鏈接
下面看一個(gè)比較復(fù)雜的例子,帶圖片LOGO作為頁(yè)眉,帶頁(yè)數(shù)作為頁(yè)腳的PDF文檔:
![poYBAGP9YouAGAJbAADlFybx1js123.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9YouAGAJbAADlFybx1js123.png)
看看要怎么實(shí)現(xiàn)這個(gè)PDF文檔的生成。
首先需要繼承FPDF類,以用于自定義頁(yè)眉和頁(yè)腳。
![poYBAGP9YpOAAnvuAAG460iICiQ455.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9YpOAAnvuAAG460iICiQ455.png)
這樣設(shè)置完頁(yè)眉也頁(yè)腳后,只要你使用該類定義PDF文檔,便會(huì)自動(dòng)帶上頁(yè)眉頁(yè)腳。
![poYBAGP9YpuAGheyAAEakSOs2FU913.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9YpuAGheyAAEakSOs2FU913.png)
真的是非常方便。
3.批量生成PDF
接下來(lái)在Python實(shí)用寶典網(wǎng)站(https://pythondict.com)上隨機(jī)抽取了5位注冊(cè)了賬號(hào)的同學(xué)的ID批量制作祝福PDF文檔。
這里可以復(fù)用咱剛自定義完成的頁(yè)眉和頁(yè)尾。不過(guò),為了顯示中文,需要在繼承的類里面添加并設(shè)置字體為本地中文字體,如:
![poYBAGP9YqSAEQlcAAGzaN_B8s0003.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9YqSAEQlcAAGzaN_B8s0003.png)
注意,add_font第一個(gè)參數(shù)是該字體注冊(cè)進(jìn)FPDF的名字,之后set_font的時(shí)候都使用該名字。
然后將用戶名都放到一個(gè)數(shù)組里,遍歷該數(shù)組,填充用戶名,循環(huán)批量生成PDF.
![poYBAGP9YquACs-WAAFdDg6LPAI439.png](https://file.elecfans.com/web2/M00/94/4E/poYBAGP9YquACs-WAAFdDg6LPAI439.png)
最終效果如下:
![pYYBAGP9YrKAPPGqAAKtyHYLVRU088.png](https://file.elecfans.com/web2/M00/94/D1/pYYBAGP9YrKAPPGqAAKtyHYLVRU088.png)
完整源代碼可在【Python實(shí)用寶典】公眾號(hào)后臺(tái)回復(fù):批量生成pdf下載
-
模板
+關(guān)注
關(guān)注
0文章
108瀏覽量
20606 -
PDF
+關(guān)注
關(guān)注
1文章
169瀏覽量
33802 -
python
+關(guān)注
關(guān)注
56文章
4807瀏覽量
85037
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
ABBYY PDF Transformer+創(chuàng)建PDF文檔的幾種方式
詳解ABBYY PDF Transformer+從文件創(chuàng)建PDF文檔
詳解ABBYY PDF Transformer+從多個(gè)文件創(chuàng)建PDF文檔
AutoCAD DXF/dwg轉(zhuǎn)換pdf工具下載
基于多種技術(shù)的Word設(shè)計(jì)文檔自動(dòng)生成平臺(tái)
如何使用Python繪制PDF文件教程詳細(xì)說(shuō)明
![如何使用<b class='flag-5'>Python</b>繪制<b class='flag-5'>PDF</b>文件教程詳細(xì)說(shuō)明](https://file.elecfans.com/web1/M00/C5/7C/pIYBAF9HMKyAR0aoAAFInNnWud4214.png)
如何使用python實(shí)現(xiàn)批量刪除文件名中的未知字符
![如何使用<b class='flag-5'>python</b>實(shí)現(xiàn)<b class='flag-5'>批量</b>刪除文件名中的未知字符](https://file.elecfans.com/web1/M00/CC/FF/pIYBAF-ZMoWAV1V4AAP0ZOmvzSk024.png)
基于Python-casacore的射電測(cè)量集文件生成方法
![基于<b class='flag-5'>Python</b>-casacore的射電測(cè)量集文件<b class='flag-5'>生成</b>方法](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
python生成器是什么
如何用Python自動(dòng)套用模板批量生成PDF文檔
![如何用<b class='flag-5'>Python</b>自動(dòng)套用模板<b class='flag-5'>批量</b><b class='flag-5'>生成</b><b class='flag-5'>PDF</b><b class='flag-5'>文檔</b>](https://file1.elecfans.com/web2/M00/AA/46/wKgZomUt90mAPInNAAF43E3gN6c095.jpg)
Python中Excel轉(zhuǎn)PDF的實(shí)現(xiàn)步驟
![<b class='flag-5'>Python</b>中Excel轉(zhuǎn)<b class='flag-5'>PDF</b>的實(shí)現(xiàn)步驟](https://file1.elecfans.com/web2/M00/B1/40/wKgZomVbBOyADL1tAAA2TmzyDdE564.png)
評(píng)論