96SEO 2026-02-20 07:12 37
pdfbox)参考文章GUI界面-awt参考文章jar包转exe(exe4j)参考文章IDEA导入GIT项目参考文章IDEA中使用Gitee管理代码gitee项目链接pdf_2_image网盘地址.jar文件提取码:

最近做标书涉及到很多批量pdf文件要转图片再将插入word的使用场景大概几千份本着能省就省的原则下载了四五个app基本都是要收费永久会员50~600不等不付费会受到各种功能限制禁用批量功能、单个文件页数限制。
自己尝试写个小工具由于之前做的小工具都是打成jar包只能在有jre环境的电脑上黑窗口操作。
这次转为exe文件用到的GUI和exe4j属于新的尝试最终效果还比较满意。
开源包实现pdf转单个图片。
2.批量pdf转图片结合上面功能实现批量转文件。
3.GUI可视化界面awt设计思路类似于大学的vb编程课实现界面操作。
4.exe可执行文件exe4j可以不安装jre环境windows系统下双击即可运行。
9.0应该是指对应的版本为java9及以上。
我的项目使用jdk8就要下载exe4j
5.自适应写死分辨率容易导致在分辨率较高的屏幕下窗口非常小通过获取屏幕尺寸按比例计算各个组件坐标、长宽实现自适应大小。
1.设置dpi清晰度100~6002.图片格式jpg和png3.自动遍历子目录按照
xmlnshttp://maven.apache.org/POM/4.0.0xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersiongroupIdorg.example/groupIdartifactIdpdf_2_image/artifactIdversion1.0-SNAPSHOT/versionpropertiesmaven.compiler.source8/maven.compiler.sourcemaven.compiler.target8/maven.compiler.target/propertiesdependencies!--pdf2jpg--dependencygroupIdorg.apache.pdfbox/groupIdartifactIdfontbox/artifactIdversion2.0.9/version/dependency!--
https://mvnrepository.com/artifact/org.apache.pdfbox/pdfbox
--dependencygroupIdorg.apache.pdfbox/groupIdartifactIdpdfbox/artifactIdversion2.0.9/version/dependency!--
https://mvnrepository.com/artifact/commons-logging/commons-logging
--dependencygroupIdcommons-logging/groupIdartifactIdcommons-logging/artifactIdversion1.2/version/dependency/dependenciesbuildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-shade-plugin/artifactIdversion1.4/versionexecutionsexecutionphasepackage/phasegoalsgoalshade/goal/goalsconfigurationfiltersfilterartifact*:*/artifactexcludesexcludeMETA-INF/*.SF/excludeexcludeMETA-INF/*.DSA/excludeexcludeMETA-INF/*.RSA/exclude/excludes/filter/filterstransformerstransformerimplementationorg.apache.maven.plugins.shade.resource.ManifestResourceTransformer!--
--mainClasscom.groupies.Pdf2ImageIteratorWindowsAdaptive/mainClass/transformertransformerimplementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.handlers/resource/transformertransformerimplementationorg.apache.maven.plugins.shade.resource.AppendingTransformerresourceMETA-INF/spring.schemas/resource/transformer/transformers/configuration/execution/executions/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion2.3.1/versionconfigurationsource1.8/sourcetarget1.8/targetencodingutf-8/encoding/configuration/plugin/plugins/build
/projectPdf2ImageIteratorWindowsAdaptive
org.apache.pdfbox.pdmodel.PDDocument;
org.apache.pdfbox.rendering.PDFRenderer;import
pdf转图片工具类awt可视化界面会自动遍历所有子目录窗口大小自适应*/
Pdf2ImageIteratorWindowsAdaptive
file.getName();//文件名sb.append(------------Task
folder.getAbsolutePath());System.out.println(文件
{//e.printStackTrace();sb.append(e.getMessage()
\r\n);textAreaConsole.setText(sb.toString());}}}}}
{System.out.println(路径有误请重新输入);}}/***
PDDocument.load(file);PDFRenderer
\r\n);textAreaConsole.setText(sb.toString());System.out.println(图片
type);//覆盖写文件ImageIO.write(image,
System.currentTimeMillis();//结束时间doc.close();//关流否则会报异常
秒\r\n);textAreaConsole.setText(sb.toString());System.out.println(共耗时
{e.printStackTrace();sb.append(e.getMessage());textAreaConsole.setText(sb.toString());}}/***
0.创建窗口Frameframe.setVisible(true);frame.setSize(frameWidth,
200);//设置大小frame.setBackground(new
86));//窗口背景色frame.setLayout(null);//todo
一、dpi分辨率越高越清晰转换越慢);labelDpi.setBounds(leftEdge,
elementHeight);//设置位置、大小labelDpi.setBackground(Color.darkGray);//背景色labelDpi.setForeground(Color.WHITE);//字体颜色labelDpi.setFont(titleFontLabel);frame.add(labelDpi);//给窗口添加组件//todo
Scrollbar(Scrollbar.HORIZONTAL,
//构造一个具有指定方向初始值粗细、最小值、最大值的新滚动条scrollbarDpi.setBounds(leftEdge
3);//设置位置、大小frame.add(scrollbarDpi);//给窗口添加组件//todo
Label(\t\t144);labelDpiValue.setBounds(leftEdge
3);//设置位置、大小labelDpiValue.setForeground(Color.WHITE);//字体颜色labelDpiValue.setBackground(Color.darkGray);//字体颜色labelDpiValue.setFont(bodyFontLabel);frame.add(labelDpiValue);//给窗口添加组件//todo
Label();labelDpiBackGround.setBounds(leftEdge,
5);//设置大小labelDpiBackGround.setBackground(Color.darkGray);//背景色frame.add(labelDpiBackGround);//给窗口添加组件//todo
二、图片类型jpg:有损压缩png:无损压缩);labelImageType.setBounds(leftEdge,
elementHeight);//设置大小labelImageType.setBackground(Color.darkGray);//设置标签背景色labelImageType.setForeground(Color.white);//设置标签背景色labelImageType.setFont(titleFontLabel);frame.add(labelImageType);//add()给窗口添加标签//todo
elementHeight);ck2.setBounds(leftEdge
elementHeight);ck1.setForeground(Color.white);ck2.setForeground(Color.white);ck1.setBackground(Color.darkGray);ck2.setBackground(Color.darkGray);ck1.setFont(bodyFontLabel);ck2.setFont(bodyFontLabel);frame.add(ck1);//给窗口添加组件frame.add(ck2);//给窗口添加组件//todo
Label();labelImageTypeBackGround.setBounds(leftEdge,
5);//设置大小labelImageTypeBackGround.setBackground(Color.darkGray);//背景色frame.add(labelImageTypeBackGround);//给窗口添加组件//todo
TextField(elementHeight);textUrl.setText(C:\\Users\\GroupiesM\\Desktop);textUrl.setFont(bodyFontLabel);textUrl.setBounds(leftEdge,
elementHeight);frame.add(textUrl);//给窗口添加组件//todo
Button(清空);//创建按钮buttonClean.setBounds(leftEdge
5);//设置位置buttonClean.setFont(titleFontLabel);frame.add(buttonClean);//给窗口添加组件//todo
Button(转换);//创建按钮buttonTransform.setBounds(leftEdge
5);//设置位置buttonTransform.setFont(titleFontLabel);frame.add(buttonTransform);//给窗口添加组件//todo
Button(退出);//创建按钮buttonExit.setBounds(leftEdge
5);//设置位置buttonExit.setFont(titleFontLabel);frame.add(buttonExit);//给窗口添加组件//todo
7《控制台》textAreaConsole.setBounds(leftEdge,
9);//设置大小textAreaConsole.setBackground(Color.white);//背景色textAreaConsole.setForeground(Color.black);//背景色textAreaConsole.setFont(bodyFontLabel);frame.add(textAreaConsole);//给窗口添加组件//todo
7.1《dpi滚动条》触发动作scrollbarDpi.addAdjustmentListener(e
labelDpiValue.setText(String.valueOf(\t\t
scrollbarDpi.getValue())));//回显滚动条//todo
《清空》触发动作buttonClean.addActionListener(actionEvent
textUrl.setText(\b));//清空输入框//todo
《转换》触发动作buttonTransform.addActionListener(actionEvent
《退出》触发动作buttonExit.addActionListener(Pdf2ImageIteratorWindowsAdaptive::actionPerformed);//frame.pack();}/***
scrollbarDpi.getValue();//设置dpiimageTypeInput
group.getSelectedCheckbox().getLabel();//设置图片类型fileUrl
File(textUrl.getText().trim());//创建文件//如果目录不存在不执行指令if
{textUrl.setForeground(Color.red);if
(!textUrl.getText().trim().endsWith((路径不存在)))
textUrl.setText(textUrl.getText().trim()
(路径不存在));textUrl.selectAll();return;}//校验通过textUrl.setForeground(Color.black);//初始化参数sb
0;//图片数量//开始转换traverseFolder(fileUrl);}/***
initSB();textAreaConsole.setText(....................正在退出.....................\n
initSB();textAreaConsole.setText(....................正在退出.....................\n
{ex.printStackTrace();}System.exit(0);}/***
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback