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

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

相关文章:

  • springboot 集成webFilter登录认证信息过滤 DEMO原型介绍
  • TomatoSCI数据分析实战:探索社交媒体成瘾
  • CppCon 2014 学习:(Costless)Software Abstractions for Parallel Architectures
  • MCP协议学习
  • GODOT引擎学习日志
  • ShenNiusModularity项目源码学习(33:ShenNius.Admin.Mvc项目分析-18)
  • CppCon 2014 学习:Hardening Your Code
  • 地震资料裂缝定量识别——学习计划
  • 开发的几种格式,TCP的十个重要机制
  • Warp安装后启动报错
  • 趋势因子均值策略思路
  • 使用 OpenCV (C/C++) 通过二值化增强车牌识别
  • JAVA中的注解和泛型
  • 论文写作核心要点
  • 【安全】VulnHub靶场 - W1R3S
  • Kotlin 中的 companion object 使用指南
  • 数据库系统概论(十五)详细讲解数据库视图
  • NX847NX855美光固态闪存NX862NX865
  • Git-flow流
  • 【iOS】ARC 与 Autorelease
  • 机器学习:支持向量机(SVM)原理解析及垃圾邮件过滤实战
  • Docker 安装 Redis 容器
  • 【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素
  • 从 Windows 7 到 AnduinOS:安装、故障排除与远程控制指南
  • Ubuntu20.04 LTS 升级Ubuntu22.04LTS 依赖错误 系统崩溃重装 Ubuntu22.04 LTS
  • 神经网络与深度学习(第一章)
  • 【烧脑算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题
  • STM32 笔记 _《GPIO配置从低层走向高层》
  • CSS 3D 变换中z-index失效问题
  • 移除3D对象的某些部分点云