PDF转换为TIF,JPG的一个简易工具(含下载链接)
目录
0.前言:
1.工具目录
2.工具功能(效果),如何运行
效果
PDF转换为JPG(带颜色)
PDF转换为TIF(LZW形式压缩,可以显示子的深浅)
PDF转换为TIF(CCITT形式压缩,无法显示子的深浅)
如何运行
3.代码
PDF转换为JPG(带颜色) 代码
PDF转换为TIF(LZW形式压缩,可以显示子的深浅) 代码
PDF转换为TIF(CCITT形式压缩,无法显示子的深浅) 代码
4.代码参考
5.简易版的改善
6.下载地址
=========
0.前言:
这个工具是java实现的,
现在电脑上一般都安装了JRE,即使你不会java,不懂什么是Java。
只要你电脑上安装了jre,这个工具一样可以使用。
===
1.工具目录
把要转换的PDF命名为【input.pdf】放到下面的目录中
2.工具功能(效果),如何运行
效果
PDF转换为JPG(带颜色)
===
PDF转换为TIF(LZW形式压缩,可以显示子的深浅)
PDF转换为TIF(CCITT形式压缩,无法显示子的深浅)
如何运行
执行对于的bat即可执行。
===
3.代码
PDF转换为JPG(带颜色) 代码
package com.sxz.study.pdf;import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;public class TestPDFToJpg {public static void main(String[] args) {try {String currentDirectory = System.getProperty("user.dir");System.out.println("----------------------");System.out.println(currentDirectory );// Load the PDF documentPDDocument document = PDDocument.load(new File((currentDirectory + "\\PDF\\input.pdf")));// Create a PDF rendererPDFRenderer pdfRenderer = new PDFRenderer(document);// Iterate over each page in the PDF documentfor (int pageNumber = 0; pageNumber < document.getNumberOfPages(); pageNumber++) {// Render the PDF page to a BufferedImage// BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 300,// ImageType.RGB);BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 200, ImageType.RGB);ImageWriter writer = ImageIO.getImageWritersByFormatName("jpg").next();ImageWriteParam writeParam = writer.getDefaultWriteParam();writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
// writeParam.setCompressionType("LZW");// 创建输出文件流FileImageOutputStream output = new FileImageOutputStream(new File(currentDirectory + "\\JPG\\Oupput_" + (pageNumber + 1) + ".jpg"));writer.setOutput(output);// 写入压缩后的TIF图像writer.write(null, new IIOImage(image, null, null), writeParam);// 关闭输出流output.close();}// Close the PDF documentdocument.close();System.out.println("PDF converted to TIF successfully");} catch (Exception e) {e.printStackTrace();}}
}
PDF转换为TIF(LZW形式压缩,可以显示子的深浅) 代码
package com.sxz.study.pdf;import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;public class TestPDFToTIFCompressLZW {public static void main(String[] args) {try {String currentDirectory = System.getProperty("user.dir");System.out.println("----------------------");System.out.println(currentDirectory );// Load the PDF documentPDDocument document = PDDocument.load(new File((currentDirectory + "\\PDF\\input.pdf")));// Create a PDF rendererPDFRenderer pdfRenderer = new PDFRenderer(document);// Iterate over each page in the PDF documentfor (int pageNumber = 0; pageNumber < document.getNumberOfPages(); pageNumber++) {// Render the PDF page to a BufferedImage// BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 300,// ImageType.RGB);BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 200, ImageType.GRAY);ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();ImageWriteParam writeParam = writer.getDefaultWriteParam();writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);writeParam.setCompressionType("LZW");// 创建输出文件流FileImageOutputStream output = new FileImageOutputStream(new File(currentDirectory + "\\TIF_LZW\\Oupput_" + (pageNumber + 1) + ".TIF"));writer.setOutput(output);// 写入压缩后的TIF图像writer.write(null, new IIOImage(image, null, null), writeParam);// 关闭输出流output.close();}// Close the PDF documentdocument.close();System.out.println("PDF converted to TIF successfully");} catch (Exception e) {e.printStackTrace();}}
}
PDF转换为TIF(CCITT形式压缩,无法显示子的深浅) 代码
package com.sxz.study.pdf;import java.awt.image.BufferedImage;
import java.io.File;import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.stream.FileImageOutputStream;import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer;public class TestPDFToTIFCompressCCITT {public static void main(String[] args) {try {String currentDirectory = System.getProperty("user.dir");System.out.println("----------------------");System.out.println(currentDirectory );// Load the PDF documentPDDocument document = PDDocument.load(new File((currentDirectory + "\\PDF\\input.pdf")));// Create a PDF rendererPDFRenderer pdfRenderer = new PDFRenderer(document);// Iterate over each page in the PDF documentfor (int pageNumber = 0; pageNumber < document.getNumberOfPages(); pageNumber++) {// Render the PDF page to a BufferedImage// BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 300,// ImageType.RGB);BufferedImage image = pdfRenderer.renderImageWithDPI(pageNumber, 200, ImageType.BINARY);ImageWriter writer = ImageIO.getImageWritersByFormatName("tiff").next();ImageWriteParam writeParam = writer.getDefaultWriteParam();writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);writeParam.setCompressionType("CCITT T.4");//writeParam.setCompressionQuality(1.0f);// 创建输出文件流FileImageOutputStream output = new FileImageOutputStream(new File(currentDirectory + "\\TIF_CCIT\\Oupput_" + (pageNumber + 1) + ".TIF"));writer.setOutput(output);// 写入压缩后的TIF图像writer.write(null, new IIOImage(image, null, null), writeParam);// 关闭输出流output.close();}// Close the PDF documentdocument.close();System.out.println("PDF converted to TIF successfully");} catch (Exception e) {e.printStackTrace();}}
}
4.代码参考
java实现,PDF转图片(TIF,jpg)、PDF中写入内容_pdf转tif乱码 java-CSDN博客
==
5.简易版的改善
目前:
一次只能处理一个文件
要把要转换的文件,命名为[input.pdf]
转换的对象文件,要放到PDF目录中
改善目标:
一次只能处理一个文件 ⇒ 一次可以处理多个文件
要把要转换的文件,命名为[input.pdf] ⇒ 无需修改要转换的文件名
转换的对象文件,要放到PDF目录中 ⇒ 程序运行时,可以指定两个参数,Input和out的目录名
改善之后,才是真正的工具!!!
==
6.下载地址
== 资源
PDF转换为TIF,JPG图片的简易工具资源-CSDN文库
==
相关文章:
PDF转换为TIF,JPG的一个简易工具(含下载链接)
目录 0.前言: 1.工具目录 2.工具功能(效果),如何运行 效果 PDF转换为JPG(带颜色) PDF转换为TIF(LZW形式压缩,可以显示子的深浅) PDF转换为TIF(CCITT形…...
Wireshark 解析QQ、微信的通信协议|TCP|UDP
写在前面 QQ,微信这样的聊天软件。我们一般称为im,Instant Messaging,即时通讯系统。那大家会不会有疑问,自己聊天内容会不会被黑客或者不法分子知道?这种体量的im是基于tcp还是udp呢?这篇文章我们就来探索…...
网络编程(5)——模拟伪闭包实现连接的安全回收
六、day6 今天学习如何利用C11模拟伪闭包实现连接的安全回收,之前的异步服务器为echo模式,但存在安全隐患,在极端情况下客户端关闭可能会导致触发写和读回调函数,二者都进入错误处理逻辑,进而造成二次析构。今天学习如…...
C#绘制动态曲线
前言 用于实时显示数据动态曲线,比如:SOC。 //用于绘制动态曲线,可置于定时函数中,定时更新数据曲线 void DrawSocGraph() {double f (double)MainForm.readData[12]; //display datachart1.Series[0].Points.Add(f);if (ch…...
用Python实现运筹学——Day 10: 线性规划的计算机求解
一、学习内容 1. 使用 Python 的 scipy.optimize.linprog 进行线性规划求解 scipy.optimize.linprog 是 Python 中用于求解线性规划问题的函数。它实现了单纯形法、内点法等算法,能够处理求解最大化或最小化问题,同时满足线性约束条件。 线性规划问题的…...
[C++]使用C++部署yolov11目标检测的tensorrt模型支持图片视频推理windows测试通过
官方框架: https://github.com/ultralytics/ultralytics yolov8官方最近推出yolov11框架,标志着目标检测又多了一个检测利器,于是尝试在windows下部署yolov11的tensorrt模型,并最终成功。 重要说明:安装环境视为最基…...
霍夫曼树及其与B树和决策树的异同
霍夫曼树是一种用于数据压缩的二叉树结构,通常应用于霍夫曼编码算法中。它的主要作用是通过对符号进行高效编码,减少数据的存储空间。霍夫曼树在压缩领域扮演着重要角色,与B树、决策树等数据结构都有一些相似之处,但又在应用场景和…...
CompletableFuture常用方法
一、获得结果和触发计算 1.获取结果 (1)public T get() public class CompletableFutureAPIDemo{public static void main(String[] args) throws ExecutionException, InterruptedException{CompletableFuture<String> completableFuture Com…...
本地化测试对游戏漏洞修复的影响
本地化测试在游戏开发的质量保证过程中起着至关重要的作用,尤其是在修复bug方面。当游戏为全球市场做准备时,它们通常会被翻译和改编成各种语言和文化背景。这种本地化带来了新的挑战,例如潜在的语言错误、文化误解,甚至是不同地区…...
使用rust实现rtsp码流截图
中文互联网上的rust示例程序源码还是太稀少,找资料很是麻烦,下面是自己用业余时间开发实现的一个对批量rtsp码流源进行关键帧截图并存盘的rust demo源码记录。 要编译这个源码需要先安装vcpkg,然后用vcpkg install ffmpeg安装最新版本的ffmpe…...
Cpp::STL—string类的模拟实现(12)
文章目录 前言一、string类各函数接口总览二、默认构造函数string(const char* str "");string(const string& str);传统拷贝写法现代拷贝写法 string& operator(const string& str);传统赋值构造现代赋值构造 ~string(); 三、迭代器相关函数begin &…...
一文搞懂SentencePiece的使用
目录 1. 什么是 SentencePiece?2. SentencePiece 基础概念2.1 SentencePiece 的工作原理2.2 SentencePiece 的优点 3. SentencePiece 的使用3.1 安装 SentencePiece3.2 训练模型与加载模型3.3 encode(高频)3.4 decode(高频&#x…...
一个简单的摄像头应用程序1
这个Python脚本实现了一个基于OpenCV的简单摄像头应用,我们在原有的基础上增加了录制视频等功能,用户可以通过该应用进行拍照、录制视频,并查看已拍摄的照片。以下是该脚本的主要功能和一些使用时需要注意的事项: 功能 拍照: 用户可以通过点击界面上的“拍照”按钮或按…...
通过PHP获取商品详情
在电子商务的浪潮中,数据的重要性不言而喻。商品详情信息对于电商运营者来说尤为宝贵。PHP,作为一种广泛应用的服务器端脚本语言,为我们提供了获取商品详情的便捷途径。 了解API接口文档 开放平台提供了详细的API接口文档。你需要熟悉商品详…...
【Android】获取备案所需的公钥以及签名MD5值
目录 重要前提 获取签名MD5值 获取公钥 重要前提 生成jks文件以及gradle配置应用该文件。具体步骤请参考我这篇文章:【Android】配置Gradle打包apk的环境_generate signed bundle or apk-CSDN博客 你只需要从头看到该文章的配置build.gradle(app&…...
看480p、720p、1080p、2k、4k、视频一般需要多大带宽呢?
看视频都喜欢看高清,那么一般来说看电影不卡顿需要多大带宽呢? 以4K为例,这里引用一位网友的回答:“视频分辨率4092*2160,每个像素用红蓝绿三个256色(8bit)的数据表示,视频帧数为60fps,那么一秒钟画面的数据量是:4096*2160*3*8*60≈11.9Gbps。此外声音大概是视频数据量…...
解决IDEA中@Autowired红色报错的实用指南:原因与解决方案
前言: 在使用Spring Boot开发时,Autowired注解是实现依赖注入的常用方式。然而,许多开发者在IDEA中使用Autowired时,可能会遇到红色报错,导致代码的可读性降低。本文将探讨导致这种现象的原因,并提供几种解…...
408知识点自检(一)
一、细节题 虚电路是面向连接的吗?虚电路线路上会不会有其他虚电路通过?虚电路适合什么类型的数据交换?虚电路的可靠性靠其他协议还是自己?固态硬盘的优势体现在什么存取方式?中断向量地址是谁的地址?多播…...
负载均衡--相关面试题(六)
在负载均衡的面试中,可能会遇到一系列涉及概念、原理、实践应用以及技术细节的问题。以下是一些常见的负载均衡面试题及其详细解答: 一、什么是负载均衡? 回答:负载均衡是一种将网络请求或数据传输工作分配给多个服务器或网络资源…...
【Unity踩坑】Unity更新Google Play结算库
一、问题描述: 在Google Play上提交了app bundle后,提示如下错误。 我使用的是Unity 2022.01.20f1,看来用的Play结算库版本是4.0 查了一下文档,Google Play结算库的维护周期是两年。现在需要更新到至少6.0。 二、更新过程 1. 下…...
Redis:hash类型
Redis:hash类型 hash命令设置与读取HSETHGETHMGET 哈希操作HEXISTSHDELHKEYSHVALSHGETALLHLENHSETNXHINCRBYHINCRBYFLOAT 内部编码ziplisthashtable 目前主流的编程语言中,几乎都提供了哈希表相关的容器,Redis自然也会支持对应的内容…...
力扣9.30
1749. 任意子数组和的绝对值的最大值 给你一个整数数组 nums 。一个子数组 [numsl, numsl1, ..., numsr-1, numsr] 的 和的绝对值 为 abs(numsl numsl1 ... numsr-1 numsr) 。 请你找出 nums 中 和的绝对值 最大的任意子数组(可能为空),…...
kafka下载配置
下载安装 参开kafka社区 zookeeperkafka消息队列群集部署https://apache.csdn.net/66c958fb10164416336632c3.html 下载 kafka_2.12-3.2.0安装包快速下载地址分享 官网下载链接地址: 官网下载地址:https://kafka.apache.org/downloads 官网呢下载慢…...
nlp任务之预测中间词-huggingface
目录 1.加载编码器 1.1编码试算 2.加载数据集 3.数据集处理 3.1 map映射:只对数据集中的sentence数据进行编码 3.2用filter()过滤 单词太少的句子过滤掉 3.3截断句子 4.创建数据加载器Dataloader 5. 下游任务模型 6.测试预测代码 7.训练代码 8.保…...
《程序猿之Redis缓存实战 · Redis 与数据库一致性》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
【无标题】observer: error while loading shared libraries: libmariadb.so.3处理办法
文章目录 1.记录新装的oceanbase,使用observer帮助时,出现lib文件无法找到的处理过程 ./observer --help ./observer: error while loading shared libraries: libmariadb.so.3: cannot open shared object file: No such file or directory2.做一个strace跟踪&…...
极客兔兔Gee-Cache Day1
极客兔兔7Days GeeCache - Day1 interface{}:任意类型 缓存击穿:一个高并发的请求查询一个缓存中不存在的数据项,因此这个请求穿透缓存直接到达后端数据库或数据源来获取数据。如果这种请求非常频繁,就会导致后端系统的负载突然…...
[MAUI]数据绑定和MVVM:MVVM的属性验证
一、MVVM的属性验证案例 Toolkit.Mvvm框架中的ObservableValidator类,提供了属性验证功能,可以使用我们熟悉的验证特性对属性的值进行验证,并将错误属性提取和反馈给UI层。以下案例实现对UI层的姓名和年龄两个输入框,进行表单提交验证。实现效果如下所示 View<ContentP…...
2024年水利水电安全员考试题库及答案
一、判断题 1.采用水下钻孔爆破方案时,侧面应采用预裂爆破,并严格控制单响药量以保护附近建(构)筑物的安全。 答案:正确 2.围堰爆破拆除工程的实施应成立爆破指挥机构,并应按设计确定的安全距离设置警戒。…...
【快速删除 node_modules 】rimraf
目录 1. 什么是node_modules 2. 卸载一个npm包 3. 删除 node_modules 为什么这么慢 4. rimraf 5. 为什么rimraf 这么快 作为前端开发,无论我们关注不关注,每天都能接触到node_modules。通常产生于一个npm install命令,之后就不会多加关注…...
2018做网站开发一个月工资多少/专业的郑州网站推广
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼TC 2.0版#include#includeint main(){int key;while(1){keygetch();/*用于去掉第一个字节*/if(key27) break; /*如果是ESC退出*/if(key>31 && key<127) /*如果不是特殊键*/{printf("You have pressed %c Press …...
做中学数学教案有哪些好的网站/技能培训班有哪些课程
转载 2017年11月22日 16:06:52 每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复工作。 所谓网站架构模式即为了解决大型网站面临的高并发访问、海量数据、高可靠运行等一系列问题与挑战。…...
广州做网站lomuw/香港疫情最新消息
JavaScript:内存泄露、性能调优1.在进行JS内存泄露检查之前,先要了解JS的内存管理: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Manageme ...C#读取Xml【转】XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的…...
做网站要注意哪些方面/推广软件有哪些
从奇虎360公司获悉,美国东部时间2016年7月15日,中国互联网公司奇虎360科技有限公司宣布私有化交易完成。届时,奇虎360的股票将不再在美国纽约证券交易所公开交易。 事实上,早在2015年就有360预计私有化的风声传出,当时…...
怎么做辅助发卡网站/google广告投放技巧
首先看一下采用MODEL FIRST的方式设计的实体模型对象关系图: 注意:EntityOne中有导航属性:EntityTwo 在如下代码中的几种情况进行新增操作,均会报错,新增都不会成功: 123456789101112131415161718192021222…...
西部数码网站管理助手 伪静态/网站建设报价单模板
如何使用 RBAC 组件?请务必更新到 1.0.60.553 版本以上,确保 RBAC 组件与文档中的描述相符合RBAC 是英文(Role-Based Access Control)的缩写,也就是基于角色的访问控制。RBAC 的定义比较晦涩,我就以比较生动…...