PDF文件解析&拆分在SAP憑證打印場景中的運用(一)

  單純的SAP憑證批量打印,結合SAP Script+python很容易實現。小爬這次遇到的任務有點糾結:我們需要幫檔案管理人員批量打印SAP憑證的同時,還要幫助打印這些憑證在OA辦公平臺中的流程表單+表單對應的各式附件,最後要將兩個平臺的打印數據進行匹配裝訂,這是目前的檔案管理人員的手工工作模式。經過再三思考,小爬終於找到了該過程的自動化機會,以解決作業人員的痛點。

  具體的思路是這樣的:我們且先將SAP憑證批量,調用windows系統的PDF虛擬打印機,打印成一個個PDF文件,並以“OA表單編號-0.pdf"的格式進行重命名,最後再用python爬蟲把這些表單號對應的URL獲取到,並使用selenium驅動瀏覽器打開這些表單,後臺靜默下載表單的附件,打印OA表單,也以”OA表單編號-1(1~n).pdf"的格式命名,並與上一個步驟的憑證PDF文件存放於同一個文件夾。最終將這個文件夾以”表單編號“作爲關鍵信息來遍歷,並按照順序自動推送這些文件給打印機,那麼這些打印任務在輸送給打印機之前就已經在系統內完成了排序,這樣做可以解決兩個平臺單據打印後的線下匹配難&效率低問題。

  小爬一開始也是這樣做功能實現的,但是這樣做,針對步驟一的SAP憑證批量打印爲PDF文件,存在兩個問題:

1、我們每打印一個憑證爲PDF,就要驅動SAP的打印功能,驅動win32桌面的”打印“對話框,直至保存PDF文件成功,這個過程有一定概率失敗,無論是findwindow方法還是sendmessage方法,都有較小的概率失敗;

2、上面這套打印SAP憑證的組合拳需要頻繁調用”打印“界面和”文件另存爲PDF“界面,每次都需要3-4秒才能完成,效率不算高;

操作如下圖的演示:

 

 

 

 

  基於以上兩個痛點,小爬決定繼續尋求優化的方法。上述過程,可以考慮,用sap script驅動SAP全選所有待打印憑證,將所有憑證打印成一個PDF文件,那麼就解決了頻繁的打印PDF導致的效率問題和穩定性問題。結果表明,打印多個憑證爲一個PDF文件,跟打印一個憑證爲一個PDF文件耗時相當;

但這樣做帶來了另一個問題,這個”巨無霸“PDF文件,如何跟我們一個個OA表單文件+表單附件 進行系統內關聯呢?

  對問題層層分解後,我們發現,其實我們需要的是一個高效的PDF拆分工具、一個高效的PDF文本解析工具,一個高效的PDF文件合併工具。通俗的說,我們將含多個憑證的PDF文件,按頁拆成一個個子PDF文件,再解析每個PDF文件的文本內容,將有共同特徵(如:同一個SAP憑證編號)的子PDF文件進行組合(merge),還原成我們想要的:一個憑證(可能多頁)對應一個PDF文件。這個工具必須得擅長拆分PDF、組合PDF、解析PDF文本,同時務必做到高效,效率如果太低,還不如一開始就打印出一個個PDF文件。

  這就是針對這個場景,小爬的完整解決思路,下篇文章,我們將用python的方法,結合一些第三方工具和一些第三方package,一步步coding,來實現我們這一設想。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章