PDF批量打印脚本
本文最后更新于 2023-12-03,文章内容可能已经过时,遇到问题可以留言。
PDF自动打印脚本
目标
- 打印文件夹内所有PDF文件
- 带GUI界面,可选文件夹
- 可选纸张大小
实现
通过python脚本实现
import tkinter as tk
from tkinter import filedialog
import os
import subprocess
import time
import pyautogui
root = tk.Tk()
root.title("批量打印PDF")
entry = None
output_text = None
paper_size = tk.StringVar() # 用于存储选择的纸张大小,默认为A3
paper_size.set("A3")
def open_pdf(file_path):
if os.path.exists(file_path):
try:
subprocess.Popen(['C:\\Program Files (x86)\\Kingsoft\\Kingsoft PDF\\11.8.0.8603\\office6\\wpspdf.exe', file_path])
except Exception as e:
print("Error printing:", e)
else:
print("File not found.")
def print_pdf():
pyautogui.hotkey('ctrl', 'p')
time.sleep(1)
# 选择打印机
pyautogui.click(707, 155)
time.sleep(1)
pyautogui.click(709, 207)
time.sleep(1)
# 选择大小A3
if paper_size.get() == "A3":
pyautogui.click(799, 589)
time.sleep(1)
pyautogui.click(755, 697)
time.sleep(1)
# 打印并关闭窗口
pyautogui.click(1226, 840)
time.sleep(1)
pyautogui.click(1911, 11)
def batch_print_pdf(folder_path):
global output_text
if os.path.exists(folder_path):
for filename in os.listdir(folder_path):
if filename.endswith('.pdf'):
file_path = os.path.join(folder_path, filename)
file_name = os.path.basename(file_path) # 获取文件名部分
output_text.insert(tk.END, f"打开: {file_name}\n")
open_pdf(file_path)
time.sleep(2)
print_pdf()
output_text.insert(tk.END, f"打印: {file_name}\n")
else:
output_text.insert(tk.END, "Folder not found.\n")
def select_folder():
global entry
default_path = os.path.dirname(__file__) # 获取当前脚本文件所在的文件夹路径
folder_selected = filedialog.askdirectory(initialdir=default_path, title="选择文件夹")
entry.delete(0, tk.END)
entry.insert(0, folder_selected)
def execute_print_task():
global entry, output_text
folder_path = entry.get()
output_text.delete(1.0, tk.END) # 清空之前的输出内容
batch_print_pdf(folder_path)
def create_gui():
global entry, output_text
label = tk.Label(root, text="选择目标文件夹:")
label.pack()
entry = tk.Entry(root)
entry.pack()
browse_button = tk.Button(root, text="浏览", command=select_folder)
browse_button.pack()
paper_size_label = tk.Label(root, text="选择纸张大小:")
paper_size_label.pack()
a3_radio = tk.Radiobutton(root, text="A3", variable=paper_size, value="A3")
a3_radio.pack()
a4_radio = tk.Radiobutton(root, text="A4", variable=paper_size, value="A4")
a4_radio.pack()
print_button = tk.Button(root, text="执行打印", command=execute_print_task)
print_button.pack()
output_text = tk.Text(root, height=10, width=50)
output_text.pack()
root.mainloop()
create_gui()
print_pdf()里的坐标点可以通过以下代码取得,运行后等3s会打印出鼠标位置的坐标
import time
import pyautogui
time.sleep(3)
print(pyautogui.position())
效果
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,转载请注明来自 David Blog
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果

