做文档处理时,很多人还在手动调整格式、导出PDF、再点打印。其实Python里有些冷门但特别顺手的库,能帮你自动搞定这些琐事,尤其是跟打印扫描相关的流程。
1. reportlab:直接生成可打印PDF
你想过不用Word也能生成带表格、文字、图片的PDF吗?reportlab 就是干这个的。它不花哨,但特别稳,适合批量生成发票、报告、扫描模板这类固定格式的文件。
from reportlab.pdfgen import canvas
c = canvas.Canvas("template.pdf")
c.drawString(100, 750, "扫描件归档编号:2024-0801")
c.line(50, 730, 550, 730)
c.save()
这段代码生成一个带标题和横线的PDF,可以直接打印出来贴在纸质文件上,扫码归档也方便。
2. PyPDF2:拆分合并PDF,整理扫描件超实用
扫描一堆文件,结果全在一个PDF里?PyPDF2 能帮你把大文件拆开,或者把多个扫描页合并成一份完整的合同。
from PyPDF2 import PdfReader, PdfWriter
reader = PdfReader("scanned.pdf")
writer = PdfWriter()
# 只保留第一页和最后一页
writer.add_page(reader.pages[0])
writer.add_page(reader.pages[-1])
with open("selected.pdf", "wb") as f:
writer.write(f)
比如你要提交材料,只需要扫描件的首页和签字页,用这招几秒就搞定。
3. python-docx 结合打印机:自动生成并打印通知单
你可能知道python-docx能写Word文档,但它生成的文件可以直接调打印命令。配合win32print(Windows下),能实现“一键生成+打印”。
from docx import Document
import os
doc = Document()
doc.add_paragraph("请于三日内完成文件补交。")
doc.save("notice.docx")
os.system("start /min notepad /p notice.docx")
在办公室收材料时,这种小脚本能省下不少重复打字的时间。
4. zxing:从扫描图里提取二维码内容
用手机扫了文档上的二维码,结果没法复制?zxing 库可以从扫描图片中识别二维码信息,自动提取链接或编号。
import zxing
reader = zxing.BarCodeReader()
barcode = reader.decode("scan_0801.png")
print(barcode.parsed)
比如你扫了一堆报修单的码,可以用它批量抓出工单号,再导入系统。
5. img2pdf:扫描图转PDF,一行代码搞定
手机拍了一堆纸质文件,想合成一个PDF发出去?img2pdf 简直是懒人福音。
import img2pdf
with open("output.pdf", "wb") as f:
f.write(img2pdf.convert(["page1.jpg", "page2.jpg"]))
不用打开任何软件,跑一下脚本,照片立马变成标准PDF,还能直接打印。
这些库平时不显山露水,但真到处理打印扫描任务时,比手动操作快得多。试试加进你的小工具箱,很多重复活都能交给Python去干。