tft每日頭條

 > 科技

 > 快速寫入pdf文字的python代碼

快速寫入pdf文字的python代碼

科技 更新时间:2025-01-09 04:15:18

首先從我的工作特點出發,介紹如果通過編程實現繁瑣的工作簡單化。

我在一家進口食品供應鍊企業工作,我的工作内容常常涉及到PDF文件的打印,比如:報關單,上回我分享了兩篇文章,關于 EXCEL - VBA代碼的實現批量打印PDF打印文件的文章:1、EXCE-VBA-批量打印單元格内指定文件名的文件;2、批量打印PDF文件 Excel VBA;今天還是圍繞打印PDF文件的,不過這次是用 Python代碼實現。

Python和Pycharm的安裝我這裡就直接跳過,搜索一下有很多教程的,Pycharm用免費版就可以了。

首先,實現方式完全是按照自己的想法來的,每個公司都自己的系統或者表格記錄着公司的重要信息,然而我們通過系統或者表格篩選出需要的數據後,通過複制相關信息後運行python程序後,程序會根據所複制的内容,在指定的文件夾内檢索相關PDF文件,進行PDF文件的複制和打印。

我們用到的庫有以下,安裝方法可以通過Win R,運行:CMA,輸入pip install 庫名安裝;或者 通過Pycharm的的文件-設置-python解釋器 搜索安裝,搜索一下有很多教程的;

import os import shutil from tkinter import * from tkinter import filedialog import glob import pyperclip import win32api,win32con,win32print

定義def函數:

1、用于存放複制過來的PDF文件,這個文件夾我叫它“需打印的報關單”(我的電腦桌面路徑是:C:\Users\Administrator\Desktop),主要功能就是判斷一下這個文件夾是否存在,不存在就直接創建,已存在的話彈出提示框;

def mkdir(): # 文件夾是否存在處理過程 isexists = os.path.exists("C:\\Users\\Administrator\\Desktop\\需打印的報關單") # 判斷路徑是否存在 # 存在True # 不存在False if not isExists: # 判斷 os.makedirs("C:\\Users\\Administrator\\Desktop\\需打印的報關單") # 不存在創建文件夾 return True else: #存在就彈出提示框 win32api.MessageBox(0, "帥哥美女:桌面已經有所需的文件夾了,文件夾内可能有之前的文件,請妥善處理後再點擊 确認 。", "小葉提醒", win32con.MB_ICONASTERISK)

2、定義打印PDF文件指令,自動選擇 電腦默認打印機;

def print_file(print_file): #定義打印PDF文件指令,自動選擇 電腦默認打印機 open(print_file,"r") win32api.ShellExecute( 0, "print", print_file, '/d:"%s"' % win32print.GetDefaultPrinter(), ".", 0 )

3、程序入口,已标注得非常清楚,這裡就不再扒拉巴拉了;

if __name__ == '__main__': a = 0 #定義一個變量,賦值為0,這個變量用于統計打印報關單的份數 mkdir() #調用函數 def mkdir(): 文件夾是否存在處理過程 path0 = "C:\\Users\\Administrator\\Desktop\\需打印的報關單\\" #定義一個變量,将創建的文件夾路徑賦值給它 path2 = pyperclip.paste() #定義一個變量,存放獲取的剪切闆數據 filelist0 = path2.split("\r\n") #定義一個變量,存放列表化的剪切闆數據 if not path2: #剪切闆為空的時候彈出提示框 win32api.MessageBox(0, "帥哥美女:沒有複制到櫃号 或者 複制了其他無關内容,請重新到Excel表格複制櫃号。", "小葉提醒QQ308699402", win32con.MB_ICONASTERISK) root = Tk() #創建一個窗體,通過這個窗口選擇指定的目标文件夾,目标文件夾存放着很多PDF文件,我們要通過這個程序在這個文件夾中篩選出需要的文件 root.withdraw() # 隐藏主窗口 path1 = filedialog.askdirectory() #定義一個變量,存放存放目标文件夾内容 filelist1 = os.listdir(path1) #定義一個變量,存放文件内容列表化數據 for aa in filelist0: #将列表化的剪切闆數據一個一個的循環賦值給 aa for bb in filelist1: #将文件内容列表化數據一個一個的循環賦值給 bb bb1 = bb[0:7] #過濾文件名 bb2 = bb[3:10] #過濾文件名 bb3 = bb[-13:-6] #過濾文件名 bb4 = bb[-14:-7] #過濾文件名 if bb1 == aa or bb2 == aa or bb3 == aa or bb4 == aa: #判斷過濾後的文件名與剪切闆數據是否一緻,直到全部剪切闆數據比對完成 aa for cc in glob.glob(path1 "/*" aa "*關*.pdf"): #循環選取一緻的文件 shutil.copy(cc,path0) #複制PDF文件到需打印的報關單文件夾 win32api.MessageBox( #批次量打印前的一次重要提醒,點擊 确認 便開始打印複制好的PDF文件 0, "帥哥美女:\n" "電腦自動選擇默認打印機\n" "請檢查打印機裡面的紙張是否全部都是白紙,白紙是否足夠\n" "點擊 确定 後開始打印文件夾内的報關單", "小葉提醒QQ308699402", win32con.MB_ICONASTERISK) desktop_path = "C:\\Users\\Administrator\\Desktop\\" #定義一個變量,賦值一個路徑,用于存放打印結果 full_path = desktop_path '已打印的報關單詳細清單.txt' # 創建一個txt文件,也可以創建一個.doc的word文檔 file = open(full_path, 'w') #打開txt文檔,寫入數據 file.write("已打印的報關單有:\n") for i in os.listdir(path0): #循環打印報關單,直到 文件夾需打印的報關單裡的全部文件加載到打印 file_path = os.path.join(path0, i) print_file(file_path) #調用打印PDF文件指令函數 a = 1 #打印計數 file.write(str(i) "\n") #已打印的文件名 file.write("一共打印了" str(a) "份報關單,請等待打印機完成全部打印!!!") file.close() #寫入關閉

大功告成,運行一下吧!

注意:

1、電腦必須安裝Adobe的PDF閱讀器,并且将Adobe的PDF閱讀器必須設為置為PDF文件的默認打開方式,否則程序會報錯(error: (31, 'ShellExecute', '連到系統上的設備沒有發揮作用。'))

2、運行前先複制好數據;

3、相關圖片

快速寫入pdf文字的python代碼(Python實現批量)1

快速寫入pdf文字的python代碼(Python實現批量)2

快速寫入pdf文字的python代碼(Python實現批量)3

快速寫入pdf文字的python代碼(Python實現批量)4

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved