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();
            }
        }
    }
}

参考索引

  1. Convert PDF files to Tiff files
  2. Java(TM) Advanced Imaging API README
时间: 2024-08-03 12:13:52

pdf转tiff的相关文章

c#使用word、excel、pdf ——转

一.C# Word操作引入Word COM组件菜单=>项目=>添加引用=>COM=>Microsoft Word 11.0 Object Libraryusing Word =  Microsoft.Office.Interop.Word;1.功能:将数据以自制表格形式插入WORD中2.主要程序代码如下:创建新Wordobject oMissing = System.Reflection.Missing.Value;Word.Application oWord;Word.Docum

SUSE Enterpris 11 SP2搭建mediawiki指南

0.libxml2的安装 libxml是一个用来解析XML文档的函数库. a)检查可用软件包 终端输入命令:zypper se libxml2 出现Abort, retry, ignore? [a/r/i/?] (a): 输入i,选择忽视即可 b)安装libxml2 终端输入命令: zypper install libxml2 出现Abort, retry, ignore? [a/r/i/?] (a): 输入i,选择忽视即可 请求下载输入y c)安装libxml2-develop : zyppe

截图工具(window 10 和Mac OSX)

  Win10上截图 1.使用系统截图工具 所有程序中可以看到 通过win+R,打开运行,输入"SnippingTool" 文件位于: C:\Windows\System32\SnippingTool.exe 优点在于可以延时截图   2.使用QQ之前的截图工具   以前QQ好像有个独立的截图工具的.现在只有从QQ拼音上提取的一个截图工具了 QQpyjp_XiaZaiBa.zip 下载后就这个文件: 但是在win10上不兼容高分屏,会出现缩放的情况. 设置下兼容性就可以使用了:   O

NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者

NSIS安装制作基础教程[初级篇], 献给对NSIS有兴趣的初学者 作者: raindy 来源:http://bbs.hanzify.org/index.php?showtopic=30029 时间:2005-02-15 点击:70791 raindy NSIS简介: NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免费的 Win32 安装.卸载系统,它的特点:脚本简洁高效:系统开销小:当然进行安装.

Nullsoft教程 NSIS初学者图文教程一

Nullsoft教程 NSIS初学者图文教程一 来源:互联网 作者:佚名 时间:03-29 00:34:33 [大 中 小] Nullsoft Installation System(nsis) 是一个小巧高效的安装软件.操作简单.功能强大的高效率安装软件精品 Nullsoft Installation System(nsis) 是一个小巧高效的安装软件.可通过样例修改或根据自己要求编写 NSI 脚本文件来定制自己的安装系统,可实现许可协议的显示.安装类型的选择.写入注册表.写入INI文件.连接

ocr文字识别软件ABBYY FineReader介绍

ABBYY是世界文档识别.数据捕获和语言软件技术开发商的领航者.其获奖产品 FineReader OCR 软件可以把静态纸文件和 PDF 文件转换成可编辑可管理的电子文档形式,可以大大节省您的时间和精力. 理想的 OCR (Optical Character Recognition) .PDF 转换应用软件,不但提供高识别率,而且可以精确地保留原始设置和版面布局,可以把静态纸文件和 PDF 文件转换成可管理的电子格式!它可以将通过扫描仪.MFP 或数码相机生成的图像.PDF 文件,进行快速转换为

Automatic Conversion from PowerPoint to JPEG

Universal Document Converter works as a virtual printer and can save any document in the PDF, JPEG, TIFF, or PNG format. If you are a software developer, you can control the settings using COM-interface and using Microsoft PowerPoint as COM-server fo

分享:Web应用程序的TWAIN扫描识别工具——Dynamic Web TWAIN

今天给大家推荐一个扫描识别工具Dynamic Web TWAIN,一个专为Web应用程序设计的TWAIN扫描识别控件.你只需在TWAIN接口写几行代码,就可以用兼容TWAIN的扫描仪扫描文档或从数码相机/采集卡中获取图像.然后用户可以编辑图像并将图像保存为多种格式,用户可保存图像到远程数据库或者SharePoint.这个TWAIN控件还支持上传和处理本地图像. Dynamic Web TWAIN能够在所有主流浏览器上面进行网页扫描.兼容 Firefox, Mozilla , Chrome , S

电子书阅读软件的功能

作者:马健邮箱:[email protected]发布:2015.01.03 从ComicsViewer(CV).MyReader(MR).PageByPage(PBP)到UnicornViewer(UV),几年间我已经发布了几款电子书阅读软件,分别针对扫描版电子书籍 包括漫画/连环画/PDG(CV.UV).HTML书籍(MR).纯文本书籍(MR.PBP).PDG/PDF/DjVu/TIFF(UV)等.有心人可能已经注意到,这些软件都有一些共同的功能,这些功能也是我认为一款电子书阅读软件所应该具