【保姆级教程】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文件夹里,甚至自动按文档名+编号整理完毕➡️关机下班(啊😭还要打卡,再坐一会吧)~

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

这是生成的图片

还加了水印!

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

java 复制代码
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 output
        if (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();
        }
    }
}
相关推荐
桦说编程2 小时前
Java 中如何创建不可变类型
java·后端·函数式编程
lifallen2 小时前
Java Stream sort算子实现:SortedOps
java·开发语言
IT毕设实战小研2 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
没有bug.的程序员3 小时前
JVM 总览与运行原理:深入Java虚拟机的核心引擎
java·jvm·python·虚拟机
一只爱撸猫的程序猿3 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋4 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
阿华的代码王国4 小时前
【Android】RecyclerView复用CheckBox的异常状态
android·xml·java·前端·后端
Zyy~4 小时前
《设计模式》装饰模式
java·设计模式
Jimmy4 小时前
AI 代理是什么,其有助于我们实现更智能编程
前端·后端·ai编程
A尘埃4 小时前
企业级Java项目和大模型结合场景(智能客服系统:电商、金融、政务、企业)
java·金融·政务·智能客服系统