Java实现将TXT文本文件转换为PDF文件

 更新时间:2024年02月27日 12:00:24   作者:E-iceblue  
与TXT文本文件,PDF文件更加专业也更适合传输,所以这篇文章小编主要为大家详细介绍了如何使用Java实现将TXT文本文件转换为PDF文件 ,需要的可以参考下

与TXT文本文件,PDF文件更加专业也更适合传输,常用于正式报告、简历、合同等场合。项目中如果有使用Java将TXT文本文件转为PDF文件的需求,可以查看本文中介绍的免费实现方法。

免费Java PDF库

本文介绍的方法需要用到Free Spire.PDF for Java,该免费库支持多种操作、转换PDF文档的功能。其官方介绍如下:

免费Java PDF组件

下载安装:从以下链接下载最新版本并添加引用到你的Java项目中。或者通过Mave仓库安装。

https://www.e-iceblue.cn/Downloads/Free-Spire-PDF-JAVA.html

TXT文本转PDF示例代码

Free Spire.PDF for Java 提供的TXT文本文件转为PDF文件的方法实际上是先通过 readTextFromFile 方法读取txt文件中的文本,然后再将读取的文件使用 PdfTextWidget.draw() 方法绘制到 PDF 页面上的指定位置。

该免费Java库还提供了接口,允许设置绘制文本的字体、字体颜色、对齐样式等。下面是一个简单的示例,展示了如何将一个TXT文件转换为一个PDF文件:

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.*;
 
import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
 
public class ConvertTextToPdf {
    public static void main(String[] args) throws Exception {
        //从TXT文件读取文本
        String text = readTextFromFile("C:\\Users\\Administrator\\Desktop\\文本.txt");
 
        //创建PdfDocument类的对象
        PdfDocument pdf = new PdfDocument();
        //添加一个页面
        PdfPageBase page = pdf.getPages().add();
 
        //创建PdfFont类的对象
        Font font = new Font("宋体", Font.PLAIN, 11);
        PdfTrueTypeFont font1 = new PdfTrueTypeFont(font);
 
        //创建PdfTextLayout类的对象
        PdfTextLayout textLayout = new PdfTextLayout();
        textLayout.setBreak(PdfLayoutBreakType.Fit_Page);
        textLayout.setLayout(PdfLayoutType.Paginate);
 
        //创建PdfStringFormat类的对象
        PdfStringFormat format = new PdfStringFormat();
        format.setLineSpacing(20f);
 
        //用读取的文本创建PdfTextWidget类的对象
        PdfTextWidget textWidget = new PdfTextWidget(text, font1, PdfBrushes.getBlack());
        //设置字符格式
        textWidget.setStringFormat(format);
 
        //将文本添加到PDF页面的指定位置
        Rectangle2D.Float bounds = new Rectangle2D.Float();
        bounds.setRect(0,25,page.getCanvas().getClientSize().getWidth(),page.getCanvas().getClientSize().getHeight());
        textWidget.draw(page, bounds, textLayout);
 
        //保存结果文件
        pdf.saveToFile("TXT转PDF.pdf", FileFormat.PDF);
    }
    public static String readTextFromFile(String fileName) throws IOException {
        StringBuffer sb = new StringBuffer();
        BufferedReader br = new BufferedReader(new FileReader(fileName));
        String content = null;
        while ((content = br.readLine()) != null) {
            sb.append(content);
            sb.append("\n");
        }
        return sb.toString();
    }
}

输入输出文档示例:

通过运行以上代码就可以读取txt文件的内容生成PDF文件。如果还需要在PDF文件中添加图片、表格、形状等各种元素,可以通过Free Spire.PDF提供的其他API接口来实现。

方法补充

除了上文的方法,小编还为大家整理了其他Java将TXT转为pdf的方法,希望对大家有所帮助

方法一:

引用jar包:

  	<dependency>
        <groupId>org.xhtmlrenderer</groupId>
        <artifactId>flying-saucer-pdf</artifactId>
        <version>9.1.2</version>
    </dependency>
    <dependency>
        <groupId>cn.lesper</groupId>
        <artifactId>iTextAsian</artifactId>
        <version>2.0</version>
    </dependency>    

Java代码

package yll2023;
 
import java.io.FileOutputStream;
import java.io.IOException;
 
import com.lowagie.text.*;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfWriter;
 
/**
 * 将文本内容转成pdf
 * @author y
 *
 */
public class ObjectToPdf {
    
    public void strToPdf() throws DocumentException, IOException {
        Document document = new Document();
        PdfWriter.getInstance(document,new FileOutputStream("E:\\a\\test.pdf"));
        BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H",BaseFont.NOT_EMBEDDED);
        Font font = new Font(bfChinese,12,Font.NORMAL);
        // 设置标题
        Paragraph pHeader = new Paragraph("line",font);
        // 设置标题居中
        pHeader.setAlignment(Element.ALIGN_CENTER);
        
        // 设置正文
        Paragraph ph = new Paragraph("content",font);
        document.open();
        document.add(pHeader);
        document.add(ph);
        document.close();
    }
}

方法二

import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;

import java.io.FileOutputStream;
import java.io.IOException;

public class TextToPdfConverter {

    public static void main(String[] args) {
        String text = "Hello, World! This is a sample text.";

        try {
            PdfDocument pdfDocument = new PdfDocument(new PdfWriter(new FileOutputStream("output.pdf")));
            Document document = new Document(pdfDocument);

            Paragraph paragraph = new Paragraph(text);
            document.add(paragraph);

            document.close();
            System.out.println("PDF created successfully.");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到此这篇关于Java实现将TXT文本文件转换为PDF文件 的文章就介绍到这了,更多相关Java TXT转PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Java利用jenkins做项目的自动化部署

    Java利用jenkins做项目的自动化部署

    这篇文章主要介绍了Java利用jenkins做项目的自动化部署,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Java中递归、循环的优劣分析

    Java中递归、循环的优劣分析

    这篇文章主要给大家介绍了关于Java中递归、循环的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Spring Boot如何在加载bean时优先选择我

    Spring Boot如何在加载bean时优先选择我

    这篇文章主要介绍了Spring Boot如何在加载bean时优先选择我,在 Spring Boot 应用程序中,我们可以采取三种方式实现自己的 bean 优先加载,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2023-03-03
  • 使用SpringBoot实现Redis多数据库缓存

    使用SpringBoot实现Redis多数据库缓存

    在我的系统中,为了优化用户行为数据的存储与访问效率,我引入了Redis缓存,并将数据分布在不同的Redis数据库中,通过这种方式,可以减少单一数据库的负载,提高系统的整体性能,所以本文给大家介绍了使用SpringBoot实现Redis多数据库缓存,需要的朋友可以参考下
    2024-06-06
  • Spring中propagation的传播机制详解

    Spring中propagation的传播机制详解

    这篇文章主要介绍了Spring中propagation的传播机制详解,要搞懂事务的传播机制,那么就要明白逻辑事务中各个事务的关系,才能彻底理解事务传播特性,在Spring事务中,各个逻辑事务的关系可以是并列、覆盖或包含,需要的朋友可以参考下
    2023-12-12
  • java使用lambda表达式多条件排序方式

    java使用lambda表达式多条件排序方式

    这篇文章主要介绍了java使用lambda表达式多条件排序方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Spring请求传递参数的解决方案

    Spring请求传递参数的解决方案

    访问不同的路径,就是发送不同的请求.在发送请求时,可能会带⼀些参数,所以我们在学习Spring的请求时,主要是学习如何传递参数到后端以及后端如何接收,下面给大家讲解 Spring请求传递参数详解,一起看看吧
    2024-01-01
  • ThreadLocal的set方法原理示例解析

    ThreadLocal的set方法原理示例解析

    这篇文章主要为大家介绍了ThreadLocal的set方法原理示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • java高并发ThreadPoolExecutor类解析线程池执行流程

    java高并发ThreadPoolExecutor类解析线程池执行流程

    这篇文章主要为大家介绍了java高并发ThreadPoolExecutor类解析线程池执行流程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • SpringBoot集成netty实现websocket通信功能

    SpringBoot集成netty实现websocket通信功能

    Netty是一个高性能、异步事件驱动的网络应用框架,用于快速开发可维护的高性能协议服务器和客户端,WebSocket 是一种网络通信协议,相比传统的HTTP协议,本文给大家介绍了SpringBoot集成netty实现websocket通信功能,需要的朋友可以参考下
    2024-03-03

最新评论