【保姆级教程】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();
        }
    }
}
相关推荐
CN.LG20 分钟前
C# 从 ConcurrentDictionary 中取出并移除第一个元素
java·开发语言·c#
未来影子31 分钟前
SpringAI(GA):MCP源码解读
后端·ai编程
重庆小透明32 分钟前
【从零学习JVM|第二篇】字节码文件
java·jvm·学习
青衫红叶35 分钟前
Idea使用springAI搭建MCP项目
java·spring cloud·maven·intellij-idea·spring-ai
数据艺术家.39 分钟前
Java八股文——Redis篇
java·redis·缓存·面试·nosql数据库·nosql·八股文
在荒野的梦想40 分钟前
DeepSeek+SpringAI实现流式对话
java·ai
范纹杉想快点毕业42 分钟前
C++抽象类与多态实战解析
java·c语言·开发语言·c++·python·qt
秋野酱1 小时前
基于springboot的医护人员排班系统设计与实现(源码+文档+部署讲解)
java·spring boot·后端
全栈凯哥1 小时前
SpringBoot自定义线程池详细教程
java·spring boot·后端
叶 落1 小时前
[Java 基础]注释
java·开发语言·java 基础