【保姆级教程】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 分钟前
家里vscode连公司内网vscede
vscode·ssh
rebel19 分钟前
若依框架整合 CXF 实现 WebService 改造流程(后端)
java·后端
每天开心1 小时前
一文教你掌握事件机制
前端·javascript·ai编程
代码的余温1 小时前
5种高效解决Maven依赖冲突的方法
java·maven
慕y2742 小时前
Java学习第十六部分——JUnit框架
java·开发语言·学习
paishishaba2 小时前
Maven
java·maven
张人玉2 小时前
C# 常量与变量
java·算法·c#
Java技术小馆2 小时前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试
每天开心3 小时前
深入理解 CSS 选择器:从基础到高级
css·html·ai编程
Codebee3 小时前
“自举开发“范式:OneCode如何用低代码重构自身工具链
java·人工智能·架构