pdf转tiff
概述
基于Java,将pdf转成单一的tiff文件。
MAVEN依赖
<groupId>com.sun.media</groupId>
<artifactId>jai_codec</artifactId>
<version>1.1-mr</version>
</dependency>
<dependency>
<groupId>javax.media</groupId>
<artifactId>jai_core</artifactId>
<version>1.1-mr</version>
</dependency>
<dependency>
<groupId>com.sun.medialib</groupId>
<artifactId>mlibwrapper_jar</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.0-RC2</version>
</dependency>
部分依赖在maven中心仓库中找不到,现提供统一的压缩文件:依赖下载。
实现
类图

Pdf2TiffConstant
IMG_FORMAT
默认的图片格式
DPI
默认的转换精度
Pdf2TiffUtil
public static pdf2Tiff (is: InputStream, os: OutputStream): void
将指定的pdf转成单一tiff文件,写到指定的输出流。参数is提供pdf文档的内容,参数os指定输出流。
代码
Pdf2TiffConstant
package cn.ljl.javaweb.demo.pdf2tiff;
public class Pdf2TiffConstant {
/** 图片格式 */
public static final String IMG_FORMAT = "tiff";
/** 打印精度设置 */
public static final int DPI = 160; //图片的像素
}
Pdf2TiffUtil
package cn.ljl.javaweb.demo.pdf2tiff; import static cn.ljl.javaweb.demo.pdf2tiff.Pdf2TiffConstant.DPI;
import static cn.ljl.javaweb.demo.pdf2tiff.Pdf2TiffConstant.IMG_FORMAT; import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List; import javax.media.jai.JAI;
import javax.media.jai.PlanarImage; import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.ImageType;
import org.apache.pdfbox.rendering.PDFRenderer; import com.sun.media.jai.codec.ImageCodec;
import com.sun.media.jai.codec.ImageEncoder;
import com.sun.media.jai.codec.TIFFEncodeParam; public class Pdf2TiffUtil {
/**
* 从输入流读取pdf,转化为tiff后写入输出流.<br/>
* 参考列表:
* <ol>
* <li><a href=
* "http://www.coderanch.com/t/497492/java/java/Convert-PDF-files-Tiff-files"
* >Convert PDF files to Tiff files</a></li>
* <li><a href=
* "http://www.oracle.com/technetwork/cn/java/javaee/downloads/readme-1-1-2-137176.html"
* >Java(TM) Advanced Imaging API README</a></li>
* </ol>
*
* @param is
* 输入流,提供pfg内容.
* @param os
* 输出流.
*/
public static void pdf2Tiff(InputStream is, OutputStream os) {
PDDocument doc = null;
try {
doc = PDDocument.load(is);
int pageCount = doc.getNumberOfPages();
PDFRenderer renderer = new PDFRenderer(doc); // 根据PDDocument对象创建pdf渲染器 List<PlanarImage> piList = new ArrayList<PlanarImage>(pageCount - 1);
for (int i = 0 + 1; i < pageCount; i++) {
BufferedImage image = renderer.renderImageWithDPI(i, DPI,
ImageType.RGB);
PlanarImage pimg = JAI.create("mosaic", image);
piList.add(pimg);
} TIFFEncodeParam param = new TIFFEncodeParam();// 创建tiff编码参数类
param.setCompression(TIFFEncodeParam.COMPRESSION_DEFLATE);// 压缩参数
param.setExtraImages(piList.iterator());// 设置图片的迭代器 BufferedImage fimg = renderer.renderImageWithDPI(0, DPI,
ImageType.RGB);
PlanarImage fpi = JAI.create("mosaic", fimg); // 通过JAI的create()方法实例化jai的图片对象 ImageEncoder enc = ImageCodec.createImageEncoder(IMG_FORMAT, os,
param);
enc.encode(fpi);// 指定第一个进行编码的jai图片对象,并将输出写入到与此
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (doc != null)
doc.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
参考索引
pdf转tiff的更多相关文章
- Python操作PDF与Tiff文件
1.PDF文件的合并与拆分 pypdf http://www.douban.com/note/455252403/ http://www.redicecn.com/html/Python/201301 ...
- C# 如何将PDF转为多种图像文件格式(Png/Bmp/Emf/Tiff)
PDF是一种在我们日常工作学习中最常用到的文档格式之一,但常常也会因为文档的不易编辑的特点,在遇到需要编辑PDF文档内容或者转换文件格式的情况时让人苦恼.通常对于开发者而言,可选择通过使用组件的方式来 ...
- JAVA中 PDF文件转成TIFF文件的2种方式
由于在工作中使用到了PDF->TIFF的技术,所以稍微研究了一下实现方式,通过资料查阅,暂时发现了2种方式,2种方式有所区别:第一种方式转化后的tiff文件是黑白的,第二种方式转化后的tiff文 ...
- c#使用word、excel、pdf ——转
一.C# Word操作引入Word COM组件菜单=>项目=>添加引用=>COM=>Microsoft Word 11.0 Object Libraryusing Word = ...
- Aspose.Pdf v8.4.1 发布
.NET v8.4.1: 修复的错误及漏洞: PDF到JPEG时,内容从最终JPEG文件中丢失. 书签缩放识别错误. Java v4.2: 新特性: 搜索分离超过两行的文本. 修复的异常: PDF到 ...
- Linux常用PDF阅读软件
1.福昕阅读器是一款PDF文档阅读器,对中文的支持度非常高.福昕阅读器作为全球最流行的PDF阅读器,能够快速打开.浏览.审阅.注释.签署及打印任何PDF文件. 2.evince是一个支持多种格式的文件 ...
- NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者
NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者 作者: raindy 来源:http://bbs.hanzify.org/index.php?showtopic=30029 时间: ...
- Nullsoft教程 NSIS初学者图文教程一
Nullsoft教程 NSIS初学者图文教程一 来源:互联网 作者:佚名 时间:03-29 00:34:33 [大 中 小] Nullsoft Installation System(nsis) 是一 ...
- Something wrong with FTK OCR
A case about business secret the suspect took lots of photos and screenshots from BOM, RD papers... ...
随机推荐
- asp.net RDLC报表入门
Asp.net RDLC 报表入门 这几天帮给同事讲解Asp.net RDLC 报表方面的知识,顺便做个简单教程,在这里分享给大家. 由于图片多又大,写了一半,光上传图片就把我累个半死,所以我教把程放 ...
- 【51NOD】1096 距离之和最小
[算法]数学 [题解] 其实就是求中位数,奇数个点就是最中间的点,偶数个点就是最中间两个点和它们之间的区域皆可(所以偶数不必取到两点正中央,取两点任意一点即可). 我们可以想象现在x轴上有n个点,我们 ...
- php trait 变量类型为数组时 不能被父类子类同时use
直接上代码 --------------------------- trait T1 { public static $a=1; public static $b= []; public static ...
- Linux while 和 read 的用法
Reference: [ linux man doc ] [ CSDN roler_ ] [ Reads from the file descriptor] read 命令说明 SYNTAX : re ...
- Lua中调用C++方法
目前项目,使用了Lua脚本,至于使用Lua的好处不再赘述了.于是对Tolua做了一些小小的学习,总结一下吧. 主要说一下如何在Lua中调用C++方法. Lua调用C++的桥梁,是tolua.tolua ...
- canvas利用formdata上传到服务器
1.首先绘制canvas图片 <canvas id="myCanvas" width="100" height="100" style ...
- MySQL多线程复制故障(slave_pending_jobs_size_max)
MySQL多线程复制故障(slave_pending_jobs_size_max) http://www.xuchanggang.cn/archives/1079.html
- 离线安装SDK
1.下载android-sdk_rXX-windows.zip(XX为版本号,也可以下.exe版的不过没试过) 2.下载SDK 2.1.在浏览器输入http://dl-ssl.google.com/a ...
- ie6下面不支持!important的处理方法
例子: #box { color:red !important; color:blue; } 这个例子应该是大家经常见到的important的用法了,在IE6环境下,这行字是蓝色 ...
- 小白成长记-----python实现注册的小程序
# 3.写一个注册的程序,输入username,密码,# 密码确认,输入的账号和密码不能为空,两次输入密码必须一致,# 用户名不能重复,错误次数四次 .注册成功提示成功# 把注册账号密码信息的写到文件 ...