【保姆级教程】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();
        }
    }
}
相关推荐
悟能不能悟1 小时前
java的java.sql.Date和java.util.Date的区别,应该怎么使用
java·开发语言
高山上有一只小老虎2 小时前
java 正则表达式大全
java·正则表达式
_院长大人_3 小时前
设计模式-工厂模式
java·开发语言·设计模式
凌波粒4 小时前
MyBatis完整教程IDEA版(2)--ResultMap/注解/一对多/多对一/lombok/log4j
java·intellij-idea·mybatis
蓝-萧4 小时前
【玩转全栈】----Django基本配置和介绍
java·后端
priority_key4 小时前
排序算法:堆排序、快速排序、归并排序
java·后端·算法·排序算法·归并排序·堆排序·快速排序
不染尘.4 小时前
2025_11_7_刷题
开发语言·c++·vscode·算法
汤姆yu5 小时前
基于SpringBoot的动漫周边商场系统的设计与开发
java·spring boot·后端
皮皮林5515 小时前
快速解决 Maven 版本冲突指南 !
java·maven
灰小猿5 小时前
Spring前后端分离项目时间格式转换问题全局配置解决
java·前端·后端·spring·spring cloud