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

【保姆级教程】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.xdnf.cn/news/10619.html

相关文章:

  • SystemVerilog—Interface语法(二)
  • 谷粒商城-分布式微服务项目-高级篇[三]
  • 华为云Flexus+DeepSeek征文|华为云 Dify 打造智慧水果分析助手,实现“知识库 + 大模型”精准赋能
  • MybatisPlus(含自定义SQL、@RequiredArgsConstructor、静态工具类Db)
  • mac电脑安装 nvm 报错如何解决
  • 【华为云Astro Zero】组装设备管理页面开发(图形拖拽 + 脚本绑定)
  • 【更正补全】edu教育申请通过方案
  • vLLM实战部署embedding、reranker、senseVoice、qwen2.5、qwen3模型
  • STM32G4 电机外设篇(四)DAC输出电流波形 + CAN通讯
  • mybatis03
  • neo4j 5.19.0两种基于向量进行相似度查询的方式
  • new语法
  • TDengine 高级功能——读缓存
  • R语言基础| 创建数据集
  • 常见 Web 安全问题
  • MySQL数据库从0到1
  • Java设计模式之备忘录模式详解
  • 第九章:LLMOps自动化流水线:释放CI/CD/CT的真正力量
  • OpenRouter使用指南
  • Git-flow流
  • react实现markdown文件预览
  • 关于海洋数据上云的一些机遇与挑战
  • python中if __name__ == ‘__main__‘ 的作用再谈
  • ffmpeg 的视频格式转换 c# win10
  • 【C语言】C语言经典小游戏:贪吃蛇(下)
  • DAY41 CNN
  • 15.MQTT协议和云平台(ESP8266)
  • Codeforces Round 1028 (Div. 2)(A-D)
  • SystemVerilog—new函数的使用和误区
  • 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化