当前位置: 首页 > article >正文

【保姆级教程】PDF批量转图文笔记

如果你有一个PDF文档,然后你想把它发成图文笔记emmm,最好再加个水印,你会怎么做?

其实也不麻烦,打开PDF文档,挨个截图,然后打开PS一张一张图片拖进去,再把水印图片拖进去,一张一张导出,搞定~

但但但是,你是一个程序员呀,还是会用cursor的程序员,所以(●°u°●) 」开干~~

某天下午你正摸着鱼,有个叫产品经理的物种突然出现,给你发了个PDF:"把这个用户手册做成小红书图文笔记,每页加统一水印,很急很急哦!"

你盯着200页的文档瞳孔地震,然后安慰了下自己,其实也不太麻烦哈哈。。。

打开PDF文档,挨个截图,然后打开PS一张一张图片拖进去,再把水印图片拖进去,一张一张导出,搞定~

但但但但但但是!你摸着自己锃亮的程序员脑门(也可能是日渐稀疏的发际线),突然意识到:我可是一个程序员呀,还是会用AI的程序员,所以(●°u°●) 」开干~~

▋ 原始人 vs 赛博人 工作流对比

原始部落打法:

  1. 打开PDF→滚轮翻页→挨个截图(啊😭第37次忘记取消显示聊天窗口、啊这页截没截?不记得。。打开文件夹看看。。)
  2. 打开Photoshop:先导入截图,再拖水印,调整位置。。。
  3. 导出(编号到几来着?)

long time later。。。

而你是赛博程序员,操作不光要简单准确,还必须优雅:

打开Cursor,新建terminal,输入个提示词,然后回车~转身咖啡还没泡完,200张带水印的笔记整整齐齐躺在output文件夹里,甚至自动按文档名+编号整理完毕➡️关机下班(啊😭还要打卡,再坐一会吧)~

我们还是看下效果,这是原文档:

这是生成的图片

还加了水印!

二话不说,完整代码如下(记得请我喝咖啡哈哈(^^)):

package com.pdf2pic;import org.apache.pdfbox.rendering.ImageType;import java.io.File;/*** PDF转图片工具* 用于将指定文件夹下的PDF文件转换为图片*/
public class Pdf2PicConverter {public static void main(String[] args) {// 项目根目录下 java -jar target/pdf2pic-1.0-SNAPSHOT-jar-with-dependencies.jar pdfs outputif (args.length < 2) {System.out.println("用法: java -jar pdf2pic.jar <PDF源文件夹> <图片输出文件夹> [DPI] [格式]");System.out.println("  [DPI]: 可选参数,图片DPI值,默认为300");System.out.println("  [格式]: 可选参数,输出图片格式,默认为png");return;}String pdfFolderPath = args[0];String outputBasePath = args[1];// 解析可选参数float dpi = 300;String format = "png";if (args.length > 2) {try {dpi = Float.parseFloat(args[2]);} catch (NumberFormatException e) {System.out.println("警告: 无效的DPI值,使用默认值300");}}if (args.length > 3) {format = args[3];}try {System.out.println("PDF转图片工具启动...");System.out.println("PDF源文件夹: " + pdfFolderPath);System.out.println("图片输出文件夹: " + outputBasePath);System.out.println("图片DPI: " + dpi);System.out.println("图片格式: " + format);// 获取项目根目录下的水印图片File watermarkFile = new File("2.png");if (watermarkFile.exists()) {System.out.println("水印图片: " + watermarkFile.getAbsolutePath());} else {System.out.println("警告: 未找到水印图片 2.png");}// 创建转换器并设置参数PdfConverter converter = new PdfConverter().withDpi(dpi).withFormat(format).withImageType(ImageType.RGB);// 设置水印图片(如果存在)if (watermarkFile.exists()) {converter.withWatermark(watermarkFile);}// 执行批量转换converter.batchConvert(pdfFolderPath, outputBasePath, true);System.out.println("所有PDF文件处理完成!");} catch (Exception e) {System.out.println("处理过程中发生错误:");e.printStackTrace();}}
}

http://www.lryc.cn/news/2397559.html

相关文章:

  • Pytest Fixture 是什么?
  • Spring Boot 基础知识全面解析:快速构建企业级应用的核心指南
  • 数据库系统概论(十一)SQL 集合查询 超详细讲解(附带例题表格对比带你一步步掌握)
  • [mcu]系统频率
  • clickhouse如何查看操作记录,从日志来查看写入是否成功
  • 5G-A:开启通信与行业变革的新时代
  • 鸿蒙OS在UniApp中集成Three.js:打造跨平台3D可视化应用#三方框架 #Uniapp
  • Vue 3 组件化设计实践:构建可扩展、高内聚的前端体系
  • 腾讯云 Python3.12.8 通过yum安装 并设置为默认版本
  • 鸿蒙OSUniApp页面切换动效实战:打造流畅精致的转场体验#三方框架 #Uniapp
  • React 泛型组件:用TS来打造灵活的组件。
  • TDengine 集群运行监控
  • 图像任务中的并发处理:线程池、Ray、Celery 和 asyncio 的比较
  • DeepSeek 赋能智能物流:解锁仓储机器人调度的无限可能
  • C#上传图片后压缩
  • uniapp路由跳转toolbar页面
  • 【linux】知识梳理
  • PostgreSQL 内置扩展列表
  • NodeMediaEdge快速上手
  • ChatOn:智能AI聊天助手,开启高效互动新时代
  • 基于Vue3.0的【Vis.js】库基本使用教程(002):图片知识图谱的基本构建和设置
  • 监督学习 vs 无监督学习:AI两大学习范式深度解析
  • C# Costura.Fody 排除多个指定dll
  • NodeJS全栈WEB3面试题——P8项目实战类问题(偏全栈)
  • 小白的进阶之路系列之五----人工智能从初步到精通pytorch张量
  • 设计模式——迭代器设计模式(行为型)
  • android-studio-2024.3.2.14如何用WIFI连接到手机(给数据线说 拜拜!)
  • [特殊字符] xbatis 一款好用 ORM 框架 1.8.8-M2 发布,节省 1/3 代码和时间的框架!!!
  • js 动画库、2048核心逻辑、面试题add[1][2][3]+4
  • 华为OD机试真题——书籍叠放(2025B卷:200分)Java/python/JavaScript/C/C++/GO最佳实现