Java利用Spire.PDF for Java实现将TXT转换为PDF

 更新时间:2025年11月03日 15:12:36   作者:LSTM97  
在现代企业和个人开发中,文档格式的转换是一项常见且重要的任务,本文将深入探讨如何利用功能强大的Spire.PDF for Java库,轻松实现Java中TXT到PDF的转换,希望对大家有所帮助

在现代企业和个人开发中,文档格式的转换是一项常见且重要的任务。尤其是在Java应用程序中,将纯文本(TXT)文件转换为可移植文档格式(PDF)的需求日益增长。PDF以其出色的跨平台兼容性、固定布局和安全性,成为文档共享和归档的首选格式。然而,如何在Java中高效、准确地实现这一转换,常常是开发者面临的挑战。

本文将深入探讨如何利用功能强大的Spire.PDF for Java库,轻松实现Java中TXT到PDF的转换。我们将提供详细的步骤和可直接运行的代码示例,帮助您在自己的Java项目中无缝集成这一功能。

为什么选择Spire.PDF for Java

Spire.PDF for Java是一个专业的PDF组件,专为Java开发者设计,用于创建、读取、写入、编辑和转换PDF文档。它提供了丰富的API和高性能的处理能力,使得复杂的PDF操作变得简单直观。

选择Spire.PDF for Java进行TXT到PDF转换的优势在于:

  • 全面的功能支持:除了TXT转PDF,还支持Word、Excel、HTML、图片等多种格式与PDF之间的转换。
  • API友好:提供直观易用的API接口,学习曲线平缓,开发者可以快速上手。
  • 高性能:优化了处理大型文档的性能,确保转换过程高效稳定。
  • 高度可定制:允许开发者在转换过程中精细控制PDF的布局、字体、页边距等,以满足特定需求。
  • 持续更新与支持:E-iceblue团队持续维护和更新库,并提供专业的技术支持。

Maven依赖配置

要在您的Java项目中使用Spire.PDF for Java,您需要首先在 pom.xml 文件中添加相应的Maven依赖:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>11.10.3</version>
    </dependency>
</dependencies>

实现TXT到PDF转换的步骤详解

接下来,我们将详细讲解如何通过Spire.PDF for Java实现TXT文件的转换,这正是我们关注的TXT 转 PDF核心内容。

步骤一:创建Java项目并导入Spire.PDF库

首先,确保您已经创建了一个Java项目(例如,Maven或Gradle项目),并按照上述说明成功导入了Spire.PDF for Java的依赖。

步骤二:加载TXT文件

在Java中读取TXT文件内容通常使用 BufferedReader 或 Files.readAllLines() 方法。我们需要将TXT文件的所有文本内容读取到一个字符串或字符串列表中。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.io.FileWriter;

public class TxtToPdfConverter {

    public static void main(String[] args) {
        String inputTxtPath = "input.txt"; // 输入TXT文件路径
        String outputPdfPath = "output.pdf"; // 输出PDF文件路径

        // 创建一个示例TXT文件用于测试
        try (FileWriter writer = new FileWriter(inputTxtPath)) {
            writer.write("这是一段来自TXT文件的示例文本。\n");
            writer.write("Spire.PDF for Java让TXT转PDF变得简单。\n");
            writer.write("您可以添加多行文本,并自定义字体和样式。\n");
            writer.write("希望本教程对您有所帮助!\n");
            writer.write("-------------------------------------\n");
            writer.write("更多内容请访问我们的官网。\n");
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        StringBuilder txtContent = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(inputTxtPath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                txtContent.append(line).append("\n"); // 添加换行符
            }
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        // ... 后续转换代码
    }
}

步骤三:创建PDF文档并添加页面

使用 PdfDocument 类创建一个新的PDF文档实例,并添加一个页面。

        // ... (接上述代码)
        PdfDocument pdf = new PdfDocument();
        PdfPageBase page = pdf.getPages().add(); // 添加一个新页面
        // ...

步骤四:将TXT内容写入PDF

这是核心步骤。我们需要获取页面的绘图区域,然后使用 PdfStringFormat 和 PdfTextWidget 将文本内容绘制到PDF页面上。这里我们可以设置字体、字号、颜色和布局等。

          // ... (接上述代码)

        // 设置字体和字号
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
        // 如果系统没有Arial Unicode MS字体,可以使用其他常见字体如"SimSun"或"宋体"
        // 或者使用Spire.PDF提供的PdfStandardFont
        // PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 12f);

        // 设置文本格式
        PdfStringFormat format = new PdfStringFormat();
        format.setLineSpacing(1.5f); // 设置行间距
        format.setWordWrap(PdfWordWrapType.Word); // 单词换行

        // 获取页面尺寸
        float pageWidth = page.getActualSize().getWidth();
        float pageHeight = page.getActualSize().getHeight();
        float margin = 50; // 设置页边距

        // 定义文本绘制区域
        Rectangle2D.Float textBounds = new Rectangle2D.Float(margin, margin, pageWidth - 2 * margin, pageHeight - 2 * margin);

        // 创建PdfTextWidget并绘制文本
        PdfTextWidget textWidget = new PdfTextWidget(txtContent.toString(), font, PdfBrushes.getBlack());
        textWidget.setStringFormat(format);

        // 绘制文本到PDF页面,并获取剩余文本(如果文本过长)
        PdfLayoutResult result = textWidget.draw(page, textBounds, new PdfLayoutFormat());

        // 如果还有剩余文本,则继续添加新页面并绘制
        while (result.getRemainder() != null) {
            page = pdf.getPages().add(); // 添加新页面
            textBounds = new Rectangle2D.Float(margin, margin, pageWidth - 2 * margin, pageHeight - 2 * margin);
            result = ((PdfTextWidget) result.getRemainder()).draw(page, textBounds, new PdfLayoutFormat());
        }
        // ...

步骤五:保存PDF文件

最后,将生成的 PdfDocument 保存到指定的输出路径。

         // ... (接上述代码)

        // 保存PDF文件
        pdf.saveToFile(outputPdfPath);
        pdf.close(); // 关闭文档以释放资源

        System.out.println("TXT文件已成功转换为PDF:" + outputPdfPath);
    }
}

示例代码与运行效果

下面是整合了所有步骤的完整Java代码示例,展示了如何使用Spire.PDF for Java将TXT文件转换为PDF。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import com.spire.pdf.*;
import com.spire.pdf.graphics.*;
import java.awt.*;
import java.io.FileWriter;
import java.awt.geom.Rectangle2D; // 导入Rectangle2D

public class TxtToPdfConverter {

    public static void main(String[] args) {
        String inputTxtPath = "input.txt"; // 输入TXT文件路径
        String outputPdfPath = "output.pdf"; // 输出PDF文件路径

        // --- 步骤二:创建并读取TXT文件内容 ---
        // 创建一个示例TXT文件用于测试
        try (FileWriter writer = new FileWriter(inputTxtPath)) {
            writer.write("这是一段来自TXT文件的示例文本。\n");
            writer.write("Spire.PDF for Java让TXT转PDF变得简单。\n");
            writer.write("您可以添加多行文本,并自定义字体和样式。\n");
            writer.write("希望本教程对您有所帮助!\n");
            writer.write("-------------------------------------\n");
            writer.write("更多内容请访问我们的官网,获取更多Java文档处理教程。\n");
            writer.write("Spire.PDF支持多种高级功能,如添加图片、表格、书签、水印等。\n");
            writer.write("此文本将自动分页,以适应PDF页面。\n");
            writer.write("-------------------------------------\n");
            writer.write("感谢您的阅读!\n");
        } catch (IOException e) {
            System.err.println("创建或写入TXT文件失败: " + e.getMessage());
            return;
        }

        StringBuilder txtContent = new StringBuilder();
        try (BufferedReader reader = new BufferedReader(new FileReader(inputTxtPath))) {
            String line;
            while ((line = reader.readLine()) != null) {
                txtContent.append(line).append("\n"); // 添加换行符
            }
        } catch (IOException e) {
            System.err.println("读取TXT文件失败: " + e.getMessage());
            return;
        }

        // --- 步骤三:创建PDF文档并添加页面 ---
        PdfDocument pdf = new PdfDocument();
        
        // --- 步骤四:将TXT内容写入PDF ---
        // 设置字体和字号
        // 建议使用支持中文的字体,如"Arial Unicode MS"或"SimSun"(宋体)
        // 如果系统没有这些字体,可能会出现乱码或文字不显示,请确保运行环境中存在所需字体。
        PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("Arial Unicode MS", Font.PLAIN, 12));
        // 备选字体:
        // PdfFont font = new PdfFont(PdfFontFamily.Helvetica, 12f); // 标准英文字体
        // PdfTrueTypeFont font = new PdfTrueTypeFont(new Font("SimSun", Font.PLAIN, 12)); // 宋体

        // 设置文本格式
        PdfStringFormat format = new PdfStringFormat();
        format.setLineSpacing(1.5f); // 设置行间距
        format.setWordWrap(PdfWordWrapType.Word); // 单词换行
        format.setAlignment(PdfTextAlignment.Left); // 左对齐

        // 定义页边距
        float margin = 50; 
        
        // 获取第一页并设置绘图区域
        PdfPageBase page = pdf.getPages().add();
        float pageWidth = page.getActualSize().getWidth();
        float pageHeight = page.getActualSize().getHeight();
        Rectangle2D.Float textBounds = new Rectangle2D.Float(margin, margin, pageWidth - 2 * margin, pageHeight - 2 * margin);

        // 创建PdfTextWidget并绘制文本
        PdfTextWidget textWidget = new PdfTextWidget(txtContent.toString(), font, PdfBrushes.getBlack());
        textWidget.setStringFormat(format);

        // 绘制文本到PDF页面,并获取剩余文本(如果文本过长)
        // PdfLayoutFormat用于控制布局,这里使用默认值
        PdfLayoutResult result = textWidget.draw(page, textBounds, new PdfLayoutFormat());

        // 如果还有剩余文本,则继续添加新页面并绘制
        while (result.getRemainder() != null) {
            page = pdf.getPages().add(); // 添加新页面
            // 重新计算新页面的文本绘制区域
            textBounds = new Rectangle2D.Float(margin, margin, pageWidth - 2 * margin, pageHeight - 2 * margin);
            result = ((PdfTextWidget) result.getRemainder()).draw(page, textBounds, new PdfLayoutFormat());
        }

        // --- 步骤五:保存PDF文件 ---
        pdf.saveToFile(outputPdfPath);
        pdf.close(); // 关闭文档以释放资源

        System.out.println("TXT文件已成功转换为PDF:" + outputPdfPath);
    }
}

运行上述代码,您将在项目根目录下找到一个名为 output.pdf 的文件。打开此PDF,您会看到 input.txt 中的所有内容已经按照您设定的字体、字号和布局清晰地呈现在PDF文档中,并且长文本会自动分页。

总结

通过本教程,我们详细介绍了如何利用Spire.PDF for Java库在Java应用程序中实现TXT到PDF的转换。从Maven依赖的配置到具体的代码实现,每一步都力求清晰明了。Spire.PDF for Java凭借其强大的功能、友好的API和出色的性能,为Java开发者提供了一个便捷高效的文档处理解决方案。

掌握了这一核心技术,开发者将能够轻松应对各种文档格式转换的需求,提升应用程序的数据处理能力和用户体验。我们鼓励您尝试使用Spire.PDF for Java解决更多文档处理需求,例如在PDF中添加图片、表格、水印等,进一步探索其丰富的功能。希望这篇“txt转pdf java教程”能为您的开发工作带来实质性的帮助。

以上就是Java利用Spire.PDF for Java实现将TXT转换为PDF的详细内容,更多关于Java TXT转PDF的资料请关注脚本之家其它相关文章!

相关文章

  • springsecurity 企业微信登入的实现示例

    springsecurity 企业微信登入的实现示例

    本文主要介绍了springsecurity 企业微信登入的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • SpringBoot+Redis实现外呼频次限制功能的项目实践

    SpringBoot+Redis实现外呼频次限制功能的项目实践

    本文提出基于SpringBoot和Redis的外呼频次限制解决方案,采用Redis计数器与滑动窗口算法实现精准控制,具有一定的参考价值,感兴趣的可以了解一下
    2025-07-07
  • SpringBoot拦截器的使用小结

    SpringBoot拦截器的使用小结

    今天给大家总结一下SpringBoot下拦截器的使用,需要的朋友参考下吧
    2017-05-05
  • SpringBoot使用Filter实现签名认证鉴权的示例代码

    SpringBoot使用Filter实现签名认证鉴权的示例代码

    这篇文章主要介绍了SpringBoot使用Filter实现签名认证鉴权的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • 解析Spring 漏洞及其修复方案

    解析Spring 漏洞及其修复方案

    官宣了最近网传的Spring漏洞。攻击者利用该漏洞,可在未授权的情况下远程执行命令,今天通过本文给大家普及下漏洞分析影响范围及解决方案,感兴趣的朋友跟随小编一起看看吧
    2022-04-04
  • Java获取当前时间方法总结

    Java获取当前时间方法总结

    本篇文章给大家整理了关于Java获取当前时间方法,以及相关代码分享,有需要的朋友测试参考下吧。
    2018-02-02
  • Java 使用POI生成带联动下拉框的excel表格实例代码

    Java 使用POI生成带联动下拉框的excel表格实例代码

    本文通过实例代码给大家分享Java 使用POI生成带联动下拉框的excel表格,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-09-09
  • Java线程的start方法回调run方法的操作技巧

    Java线程的start方法回调run方法的操作技巧

    面试过程中经常会被面试官问到为什么我们调用start()方法时会执行run()方法,为什么不能直接调用run()方法,问的一头雾水,今天小编给大家介绍下Java线程的start方法回调run方法的操作技巧,需要的朋友参考下吧
    2017-11-11
  • Java多线程之并发编程的基石CAS机制详解

    Java多线程之并发编程的基石CAS机制详解

    这篇文章主要介绍了java并发编程之cas详解,涉及cas使用场景和cas用作原子操作等内容,具有一定参考价值,需要的朋友可以了解下
    2021-09-09
  • java线程组构造方法源码解析

    java线程组构造方法源码解析

    这篇文章主要为大家介绍了java线程组构造方法源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08

最新评论