快速批量转换JPG为同名PDF技巧
多张JPG转同名PDF并自动归档的技术方案
需求场景分析
将多张荣誉证书等JPG图片转换为与图片同名的PDF文件(例如"荣誉证书.jpg"转为"荣誉证书.pdf"),并将所有生成的PDF自动归类到指定文件夹。该方案适用于职称评审等需要批量处理扫描件的情况。
方法一:使用Python脚本自动化处理
安装依赖库(需Python环境):
pip install pillow reportlab
核心代码实现:
import os
from PIL import Image
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
def convert_jpg_to_pdf(input_folder, output_folder):
os.makedirs(output_folder, exist_ok=True)
for filename in os.listdir(input_folder):
if filename.lower().endswith(('.jpg', '.jpeg')):
img_path = os.path.join(input_folder, filename)
pdf_path = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}.pdf")
img = Image.open(img_path)
width, height = img.size
c = canvas.Canvas(pdf_path, pagesize=(width, height))
c.drawImage(img_path, 0, 0, width, height)
c.save()
执行示例:
convert_jpg_to_pdf("原始图片文件夹", "生成的PDF文件夹")
方法二:使用Adobe Acrobat批量处理
图形化操作流程:
- 打开Acrobat DC,进入"工具"→"创建PDF"
- 选择"多个文件"→"合并多个文件"
- 添加所有JPG图片后,取消勾选"合并到一个PDF"
- 点击"转换",设置输出文件夹位置
- 在输出选项中勾选"使用原始文件名"
注意事项:
- 需预先安装Adobe Acrobat Pro DC
- 转换后的PDF默认保存在"我的文档"下的新文件夹
方法三:Windows自带打印功能
系统级解决方案:
- 全选所有JPG文件,右键选择"打印"
- 打印机选择"Microsoft Print to PDF"
- 在设置中勾选"每张图片生成单独的PDF"
- 指定输出文件夹路径
- 系统会自动以原文件名生成PDF
优势:
- 无需安装额外软件
- 支持批量选择数百个文件同时处理
文件命名规范建议
推荐格式示例:
张伟_高级工程师_荣誉证书01.pdf
张伟_高级工程师_论文发表02.pdf
命名规则:
- 包含姓名+职称级别+文件类型+序号
- 使用下划线替代空格
- 避免特殊字符
自动化文件夹生成逻辑
Python扩展代码示例:
import shutil
import datetime
def create_archive_folder(base_path):
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M")
folder_name = f"职称资料_{timestamp}"
full_path = os.path.join(base_path, folder_name)
os.makedirs(full_path)
return full_path
调用方式:
archive_path = create_archive_folder("D:/职称评审")
convert_jpg_to_pdf("原始图片", archive_path)
常见问题解决方案
图片尺寸不一致处理:
# 在convert_jpg_to_pdf函数中添加:
STANDARD_SIZE = (1240, 1754) # A4尺寸@150dpi
img = img.resize(STANDARD_SIZE, Image.LANCZOS)
文件名乱码修正:
filename = filename.encode('cp437').decode('gbk') # 处理中文乱码
性能优化建议
批量处理改进措施:
- 使用多线程处理(ThreadPoolExecutor)
- 添加进度条显示(tqdm库)
- 支持断点续传功能
- 自动生成转换日志文件
完整解决方案可扩展:
- 添加PDF加密功能
- 集成OCR文字识别
- 自动生成目录索引
以上方案可根据实际需求组合使用,建议优先测试Python脚本方案以获得最大灵活性和自动化程度。图形化方案适合临时性少量文件处理。
BbS.okapop163.sbs/PoSt/1122_137674.HtM
BbS.okapop165.sbs/PoSt/1122_583529.HtM
BbS.okapop166.sbs/PoSt/1122_078769.HtM
BbS.okapop167.sbs/PoSt/1122_136044.HtM
BbS.okapop168.sbs/PoSt/1122_882791.HtM
BbS.okapop169.sbs/PoSt/1122_557690.HtM
BbS.okapop170.sbs/PoSt/1122_962572.HtM
BbS.okapop171.sbs/PoSt/1122_662933.HtM
BbS.okapop172.sbs/PoSt/1122_719482.HtM
BbS.okapop173.sbs/PoSt/1122_591908.HtM
BbS.okapop163.sbs/PoSt/1122_739433.HtM
BbS.okapop165.sbs/PoSt/1122_728760.HtM
BbS.okapop166.sbs/PoSt/1122_219728.HtM
BbS.okapop167.sbs/PoSt/1122_869396.HtM
BbS.okapop168.sbs/PoSt/1122_959346.HtM
BbS.okapop169.sbs/PoSt/1122_035383.HtM
BbS.okapop170.sbs/PoSt/1122_362148.HtM
BbS.okapop171.sbs/PoSt/1122_910490.HtM
BbS.okapop172.sbs/PoSt/1122_684457.HtM
BbS.okapop173.sbs/PoSt/1122_339716.HtM
BbS.okapop174.sbs/PoSt/1122_561047.HtM
BbS.okapop175.sbs/PoSt/1122_681287.HtM
BbS.okapop176.sbs/PoSt/1122_769634.HtM
BbS.okapop177.sbs/PoSt/1122_399891.HtM
BbS.okapop178.sbs/PoSt/1122_697699.HtM
BbS.okapop179.sbs/PoSt/1122_963285.HtM
BbS.okapop180.sbs/PoSt/1122_591716.HtM
BbS.okapop181.sbs/PoSt/1122_832240.HtM
BbS.okapop182.sbs/PoSt/1122_206845.HtM
BbS.okapop183.sbs/PoSt/1122_876801.HtM
BbS.okapop174.sbs/PoSt/1122_163580.HtM
BbS.okapop175.sbs/PoSt/1122_888034.HtM
BbS.okapop176.sbs/PoSt/1122_830970.HtM
BbS.okapop177.sbs/PoSt/1122_489997.HtM
BbS.okapop178.sbs/PoSt/1122_146656.HtM
BbS.okapop179.sbs/PoSt/1122_949588.HtM
BbS.okapop180.sbs/PoSt/1122_035332.HtM
BbS.okapop181.sbs/PoSt/1122_247291.HtM
BbS.okapop182.sbs/PoSt/1122_765264.HtM
BbS.okapop183.sbs/PoSt/1122_584039.HtM
BbS.okapop174.sbs/PoSt/1122_713111.HtM
BbS.okapop175.sbs/PoSt/1122_797050.HtM
BbS.okapop176.sbs/PoSt/1122_426416.HtM
BbS.okapop177.sbs/PoSt/1122_412723.HtM
BbS.okapop178.sbs/PoSt/1122_818797.HtM
BbS.okapop179.sbs/PoSt/1122_063420.HtM
BbS.okapop180.sbs/PoSt/1122_418524.HtM
BbS.okapop181.sbs/PoSt/1122_189922.HtM
BbS.okapop182.sbs/PoSt/1122_083385.HtM
BbS.okapop183.sbs/PoSt/1122_037163.HtM
BbS.okapop174.sbs/PoSt/1122_161091.HtM
BbS.okapop175.sbs/PoSt/1122_057863.HtM
BbS.okapop176.sbs/PoSt/1122_660510.HtM
BbS.okapop177.sbs/PoSt/1122_175719.HtM
BbS.okapop178.sbs/PoSt/1122_658466.HtM
BbS.okapop179.sbs/PoSt/1122_260952.HtM
BbS.okapop180.sbs/PoSt/1122_712662.HtM
BbS.okapop181.sbs/PoSt/1122_430307.HtM
BbS.okapop182.sbs/PoSt/1122_328180.HtM
BbS.okapop183.sbs/PoSt/1122_058024.HtM
BbS.okapop174.sbs/PoSt/1122_117228.HtM
BbS.okapop175.sbs/PoSt/1122_120719.HtM
BbS.okapop176.sbs/PoSt/1122_388716.HtM
BbS.okapop177.sbs/PoSt/1122_885758.HtM
BbS.okapop178.sbs/PoSt/1122_995929.HtM
BbS.okapop179.sbs/PoSt/1122_072219.HtM
BbS.okapop180.sbs/PoSt/1122_423637.HtM
BbS.okapop181.sbs/PoSt/1122_874497.HtM
BbS.okapop182.sbs/PoSt/1122_815234.HtM
BbS.okapop183.sbs/PoSt/1122_619590.HtM
BbS.okapop174.sbs/PoSt/1122_735361.HtM
BbS.okapop175.sbs/PoSt/1122_193047.HtM
BbS.okapop176.sbs/PoSt/1122_249823.HtM
BbS.okapop177.sbs/PoSt/1122_076337.HtM
BbS.okapop178.sbs/PoSt/1122_732641.HtM
BbS.okapop179.sbs/PoSt/1122_361204.HtM
BbS.okapop180.sbs/PoSt/1122_742899.HtM
BbS.okapop181.sbs/PoSt/1122_529089.HtM
BbS.okapop182.sbs/PoSt/1122_035448.HtM
BbS.okapop183.sbs/PoSt/1122_132780.HtM
