Java 实战:将 TIFF 图片转换为 PDF(含批量转换)

在日常工作中,我们常常需要处理各种文件格式。这其中,TIFF(Tagged Image File Format)作为一种高质量的图像格式,被广泛用于扫描仪生成的图像、传真、医学影像和其他高质量图像的存储。然而,尽管 TIFF 格式在图像质量上有优势,但在文件分享、打印、归档等方面,PDF格式则具有更强的兼容性和便利性。

在这篇文章中,我们将详细探讨如何使用 Java 将 TIFF 图片转换为 PDF 文件,包括单文件转换与批量转换示例。

为什么需要将 TIFF 转换为 PDF?

在讨论具体的代码示例之前,我们首先要了解为什么需要将 TIFF 文件转换为 PDF。下面列出了一些常见的场景:

  1. 文件格式兼容性
    TIFF 格式虽然在图像质量上很有优势,但并不是所有平台都能够方便地查看 TIFF 文件。PDF 格式则是全球通用的标准格式,几乎所有操作系统都支持打开 PDF 文件,且不依赖于特定的图像查看器。因此,将 TIFF 图片转换为 PDF 文件,可以确保文件能够在各种设备和平台上顺利查看。
  2. 便于文件存档与共享
    PDF 文件通常比 TIFF 文件小得多,这有助于节省存储空间。此外,PDF 文件还支持添加元数据、密码保护和数字签名等功能,使得文件在存档和共享过程中更具安全性和可管理性。
  3. 更好的打印支持
    PDF 文件在打印时通常会保持原有的排版和布局,不会受到打印机的驱动程序或图像查看器的限制。而 TIFF 文件在打印过程中可能会出现缩放或格式兼容性问题。因此,很多企业和组织选择将 TIFF 文件转换为 PDF,以便于统一的打印和分享。
  4. 便于批量处理
    对于需要处理大量图像文件的用户而言,批量将 TIFF 图片转换为 PDF 文件可以节省大量的手动操作时间。在这一过程中,PDF 文件可以被自动化生成,并且可以为每一页图像设置不同的页面布局。

环境准备

要在 Java 中转换 TIFF 为 PDF,可以使用 Spire.PDF for Java 库。在开始编码之前,确保你已经配置好了该库。你可以通过官方网站下载并导入 JAR 文件,或者使用 Maven 来引入依赖。

Maven 依赖如下:

xml 复制代码
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>12.1.4</version>
    </dependency>
</dependencies>

使用 Java 转换 TIFF 为 PDF

将 TIFF 转换为 PDF 的过程很简单,只需加载图片文件,然后将其绘制到 PDF 页面上即可。下面是详细实现步骤:

步骤1:创建​PdfDocument​​ 对象

我们首先需要创建一个 ​​PdfDocument​​ 类的对象。​​PdfDocument​​ 是 Spire.PDF 用于处理 PDF 文档的核心类。通过它,我们可以创建、修改、保存和输出 PDF 文件。

ini 复制代码
PdfDocument pdf = new PdfDocument();

这个 ​​pdf​​ 对象将用于创建并操作 PDF 文件。

步骤2:添加一页 PDF 页面

接下来,我们将向 PDF 文档中添加一页。每个 PDF 文档都由多个页面组成,通常我们可以通过 ​​getPages().add()​​ 方法添加一页空白页面。

ini 复制代码
PdfPageBase page = pdf.getPages().add();

在此代码中,我们向 PDF 文档中添加了一页,并将该页的引用保存在 ​​page​​ 变量中。

步骤3:加载 TIFF 图片

我们需要将 TIFF 图片加载到程序中。Spire.PDF 提供了一个非常方便的方法来加载图像文件并将其转化为 ​​PdfImage​​ 对象。

ini 复制代码
PdfImage tiff = PdfImage.fromFile("sample.tiff");

上述代码会加载名为 ​​sample.tiff​​ 的 TIFF 图片文件,并创建一个 ​​PdfImage​​ 对象来表示它。

步骤4:绘制图像到 PDF 页面

加载了 TIFF 图片后,我们需要将它绘制到 PDF 页面的画布上。在 Spire.PDF 中,每个页面都有一个 ​​Canvas​​ 对象,允许我们绘制各种元素(如图像、文本等)。我们使用 ​​drawImage()​​ 方法来将 TIFF 图片绘制到页面中。

scss 复制代码
page.getCanvas().drawImage(tiff, 0, 0, 580, 800);

在这个代码中,​​drawImage()​​ 方法会将 TIFF 图片绘制到页面的左上角 ​​(0, 0)​​,并指定图像的尺寸为 580x800 像素。

步骤5:保存 PDF 文件

当所有内容都添加完成后,我们可以通过 ​​saveToFile()​​ 方法将 PDF 保存到磁盘。指定输出文件名和文件格式,即可将 TIFF 图片成功保存为 PDF 文件。

arduino 复制代码
pdf.saveToFile("TiffToPdf.pdf", FileFormat.PDF);

这段代码会将转换后的 PDF 文件保存为 ​​TiffToPdf.pdf;​​除了将文件保存到本地磁盘,你还可以选择将其保存到流。

Java TIFF 转 PDF 完整示例代码

java 复制代码
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImage;

public class TiffToPDF {
    public static void main(String[] args) {
        // 创建 PdfDocument 类的对象
        PdfDocument pdf = new PdfDocument();
        
        // 添加一页
        PdfPageBase page = pdf.getPages().add();
        
        // 从 TIFF 图像创建一个 PdfImage 对象
        PdfImage tiff = PdfImage.fromFile("sample.tiff");
        
        // 将图片绘制到 PDF 页面
        page.getCanvas().drawImage(tiff, 0, 0, 580, 800);
        
        // 保存文档
        pdf.saveToFile("TiffToPdf.pdf", FileFormat.PDF);
    }
}

使用 Java 批量转换 TIFF 图片为 PDF

在实际应用中,通常会遇到需要批量处理多张 TIFF 图片并将它们转换为单一 PDF 文档的情况。下面我们来展示如何批量处理多个 TIFF 文件。

步骤1:遍历 TIFF 文件夹中的所有文件

我们可以使用 ​​File​​ 类来获取指定文件夹中的所有 TIFF 文件,并逐一加载它们进行处理。

步骤2:为每个 TIFF 图片创建一个新的页面

与之前的单图转换类似,遍历每个 TIFF 文件并将其添加到 PDF 文档的不同页面上。

批量转换示例代码

java 复制代码
import com.spire.pdf.*;
import com.spire.pdf.graphics.PdfImage;
import java.io.File;

public class BatchTiffToPDF {
    public static void main(String[] args) {
        // 创建 PdfDocument 类的对象
        PdfDocument pdf = new PdfDocument();
        
        // 获取文件夹中的所有 TIFF 文件
        File folder = new File("tiff_images");
        File[] files = folder.listFiles((dir, name) -> name.endsWith(".tiff"));
        
        // 遍历每个 TIFF 文件
        for (File file : files) {
            // 创建一个新的页面
            PdfPageBase page = pdf.getPages().add();
            
            // 从 TIFF 图像创建 PdfImage 对象
            PdfImage tiff = PdfImage.fromFile(file.getAbsolutePath());
            
            // 将图片绘制到 PDF 页面
            page.getCanvas().drawImage(tiff, 0, 0, 580, 800);
        }
        
        // 保存文档
        pdf.saveToFile("BatchTiffToPdf.pdf", FileFormat.PDF);
    }
}

在这个示例中,我们首先获取了一个文件夹(​​tiff_images​​)中的所有 TIFF 文件,并将每个 TIFF 文件转换为 PDF 文件中的一页。最后,我们将所有转换后的页面保存为 ​​BatchTiffToPdf.pdf​​ 文件。

总结

使用 Java 将 TIFF 图片转换为 PDF 文档是一个简单且有效的解决方案。通过上述代码示例,你可以快速实现单张 TIFF 转换为 PDF,也可以批量处理多个 TIFF 图片,生成一个包含所有图像的 PDF 文件。这种方法不仅简便,而且可以根据需要进行自定义,例如调整图片的尺寸、处理不同类型的图像格式等。

相关推荐
青云计划11 小时前
知光项目知文发布模块
java·后端·spring·mybatis
赶路人儿11 小时前
Jsoniter(java版本)使用介绍
java·开发语言
探路者继续奋斗12 小时前
IDD意图驱动开发之意图规格说明书
java·规格说明书·开发规范·意图驱动开发·idd
消失的旧时光-194313 小时前
第十九课:为什么要引入消息队列?——异步系统设计思想
java·开发语言
A懿轩A13 小时前
【Java 基础编程】Java 面向对象入门:类与对象、构造器、this 关键字,小白也能写 OOP
java·开发语言
乐观勇敢坚强的老彭13 小时前
c++寒假营day03
java·开发语言·c++
biubiubiu070613 小时前
谷歌浏览器无法访问localhost:8080
java
大黄说说14 小时前
新手选语言不再纠结:Java、Python、Go、JavaScript 四大热门语言全景对比与学习路线建议
java·python·golang
烟沙九洲14 小时前
Java 中的 封装、继承、多态
java
识君啊14 小时前
SpringBoot 事务管理解析 - @Transactional 的正确用法与常见坑
java·数据库·spring boot·后端