乐于分享
好东西不私藏

将PDF一页裁剪成两页:解决打印难题

将PDF一页裁剪成两页:解决打印难题

大家好,我是小王子。今天收到粉丝朋友的一个需求,她需要PDF一页裁剪成两页,让打印出来的试卷更加清晰、易于阅读。
“除了试卷,这类‘双栏合并PDF’在教材、讲义、老版扫描文档中也非常常见——如果你也遇到打印字太小的问题,本文方案同样适用”
—适用场景—
下面的是PDF的样式,PDF文件的一页对应着试卷的两页,粉丝打印机又只支持A4纸打印,这样打印出来就没那么清晰了,所以需要将PDF的一页拆分成两页,这样每次打印一半的内容,就可以了。
粉丝先是自己一张一张截图,但是一个PDF有80页,然后有好几个PDF,这么手动截图太累了,都是重复性工作,所以让我来帮忙解决。
—解决方案—
1、由于原始PDF每页左右两半是独立的试卷页面(无跨栏内容),所以可以从物理中间垂直切割,不会破坏信息完整性。可以用二分法,将PDF从中间裁剪成两个PDF,然后再合并成一个,而这正好用python就可以实现。
2、粉丝她完全不会python,安装依赖,写代码,运行脚本这些都不会,所以最终方案还是通过影刀RPA,运行时弹出个对话框,让用户来选择PDF文件,然后后续全部自动化完成。

—源码分享—

# 使用提醒:# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能# 3. 当此模块作为流程独立运行时执行main函数# 4. 可视化流程中可以通过"调用模块"的指令使用此模块import xbotfrom xbot import print, sleepfrom . import packagefrom .package import variables as glvimport copyfrom PyPDF2 import PdfReader, PdfWriterimport os  # ←←← 关键:必须导入 os 模块!def main(args):    try:        input_path = args.strip() if isinstance(args, strelse ""        if not input_path or not os.path.isfile(input_path):            print("❌ 错误:未提供有效的PDF文件路径!")            return        dir_name = os.path.dirname(input_path)        base_name = os.path.basename(input_path)        name, ext = os.path.splitext(base_name)        output_path = os.path.join(dir_name, f"new_{name}{ext}")        print(f"📄 正在处理PDF: {input_path}")        print(f"💾 输出路径: {output_path}")        reader = PdfReader(input_path)        writer = PdfWriter()        for page in reader.pages:            w = float(page.mediabox.width)            h = float(page.mediabox.height)            left = copy.copy(page)            left.mediabox.lower_left = (00)            left.mediabox.upper_right = (w / 2 + 11, h)            writer.add_page(left)            right = copy.copy(page)            right.mediabox.lower_left = (w / 2 - 150)            right.mediabox.upper_right = (w, h)            writer.add_page(right)        with open(output_path, "wb"as f:            writer.write(f)        print("✅ PDF处理完成!")        glv.pdf_output_path = output_path    except Exception as e:        print(f"💥 处理失败: {str(e)}")        raise
“如果你也有重复性办公难题(比如批量处理文件、自动填表、监控消息等),欢迎加我微信交流,一起用自动化解放双手!”
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 将PDF一页裁剪成两页:解决打印难题

评论 抢沙发

2 + 1 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮