# raster-pdf **Repository Path**: ppnt/raster-pdf ## Basic Information - **Project Name**: raster-pdf - **Description**: 本项目用于将 PDF 文件按页转换为图片文件,提供简单的图形界面,支持选择 PDF 文件、输出目录、图片格式、DPI 和页码范围。 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-28 - **Last Updated**: 2026-03-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # raster-pdf 一个基于 JavaFX 和 PDFBox 的 PDF 转图片桌面工具。 当前版本仅支持 **Java 1.8**。 ## 1. Introduction 本项目用于将 PDF 文件按页转换为图片文件,提供简单的图形界面,支持选择 PDF 文件、输出目录、图片格式、DPI 和页码范围。 功能特性: - 支持 PDF 按页导出为图片 - 支持图片格式: - png - jpg - 支持设置 DPI - 支持自定义页码范围 - 支持转换进度显示 - 支持日志输出 - 支持本地打包为原生应用 ## 2. Environment 本项目 **仅支持 Java 1.8**。 请使用以下环境: - JDK: `1.8` - Maven: `3.6+` 或更高版本 - JavaFX: 使用 JDK 1.8 自带 JavaFX - PDFBox: `2.0.24` 不支持: - Java 11 - Java 17 - Java 21 - OpenJFX 独立模块化运行方式 ## 3. Project Structure ```text 04_java-fx-pdf-to-image ├─ pom.xml └─ src └─ main └─ java └─ com └─ litongjava └─ rasterpdf ├─ ConversionOptions.java ├─ PdfToImageService.java └─ MainApp.java ```` ## 4. Dependencies ### 4.1 Maven 配置 在 `pom.xml` 中添加以下配置: ```xml UTF-8 1.8 2.0.24 org.apache.pdfbox pdfbox ${pdfbox.version} com.zenjava javafx-maven-plugin 8.8.3 com.litongjava.rasterpdf.MainApp litongjava true ``` ## 5. Features ### 5.1 PDF 文件选择 可通过界面选择本地 PDF 文件。 ### 5.2 输出目录选择 可自定义图片输出目录。 ### 5.3 图片格式 支持以下输出格式: * png * jpg 说明: * 输入 `jpeg` 时会自动规范化为 `jpg` ### 5.4 DPI 设置 支持手动输入 DPI,例如: * 72 * 150 * 300 ### 5.5 页码范围 支持以下格式: * `all` * `1` * `1,3,5` * `1-3` * `1-3,5,8` 示例: ```text all 1-3 2,4,6 1-3,5,8 ``` ## 7. Run ### 7.1 Windows 下设置 Java 1.8 ```bat set JAVA_HOME=D:\java\jdk-1.8_411 set PATH=%JAVA_HOME%\bin;%PATH% ``` ### 7.2 启动项目 ```bat mvn clean javafx:run ``` ## 8. Package 在 Windows 下执行: ```bat set JAVA_HOME=D:\java\jdk-1.8_411 set PATH=%JAVA_HOME%\bin;%PATH% mvn jfx:native ``` 打包完成后,可在构建输出目录中找到生成的原生安装包或可执行文件。 ## 9. Usage 启动应用后: 1. 点击 `选择PDF` 2. 选择需要转换的 PDF 文件 3. 点击 `选择目录` 4. 选择图片输出目录 5. 选择图片格式 6. 输入 DPI 7. 输入页码范围 8. 点击 `开始转换` ## 10. Page Range Rules 页码范围说明: * 页码从 `1` 开始 * 支持单页 * 支持连续范围 * 支持多个片段组合 示例: ```text all -> 全部页面 1 -> 第 1 页 1-5 -> 第 1 到第 5 页 1,3,5 -> 第 1、3、5 页 1-3,6,8-10 -> 组合页码 ``` ## 11. Notes ### 11.1 仅支持 Java 1.8 这是本项目最重要的限制条件。 请不要使用以下版本运行或打包: * Java 11 * Java 17 * Java 21 原因: * 当前项目依赖 JDK 1.8 自带 JavaFX * `javafx-maven-plugin 8.8.3` 主要适配 Java 8 生态 * 本项目未适配 OpenJFX 模块系统 ### 11.2 关于 `@SuppressWarnings("restriction")` 代码中使用了: ```java @SuppressWarnings("restriction") ``` 这是为了避免某些 JavaFX 相关限制警告。在 Java 1.8 项目中可以接受。 ### 11.3 图片输出命名规则 输出文件命名格式如下: ```text 原PDF文件名_page_001.png 原PDF文件名_page_002.png 原PDF文件名_page_003.png ``` ## 12. Example 假设输入文件为: ```text demo.pdf ``` 输出格式为: ```text png ``` 则生成文件类似: ```text demo_page_001.png demo_page_002.png demo_page_003.png ``` ## 13. FAQ ### 13.1 启动失败,提示找不到 JavaFX 请确认当前使用的是 **JDK 1.8**,而不是 JRE,也不是 Java 11+。 ### 13.2 打包失败 请确认: * 已正确设置 `JAVA_HOME` * `JAVA_HOME` 指向 JDK 1.8 * 系统中已安装打包所需环境 * 使用的是 `mvn jfx:native` ### 13.3 为什么不支持 Java 11+ 因为当前工程是按 Java 1.8 的 JavaFX 运行方式编写和配置的,没有迁移到 OpenJFX 模块化方案。