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

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

免费Java PDF库

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

免费 Java PDF组件icon-default.png?t=N7T8https://www.e-iceblue.cn/Introduce/Free-Spire-PDF-JAVA.html

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

Free Spire.PDF for JAVA | 下载下载Java PDF库来阅读、创建、操作、转换以及打印PDF文档。icon-default.png?t=N7T8https://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接口来实现。更多demo示例可查看:

Free Spire.PDF 中文教程icon-default.png?t=N7T8https://www.e-iceblue.cn/spirepdfjava/spire-pdf-for-java-program-guide-content.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2774291.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

波卡 2023 四季度报告:开发者数量位列加密生态前三,五项新技术将于今年发布

作者:Nicholas Garcia|Messari 研究分析师 编译:OneBlock 原文:https://messari.io/report/state-of-polkadot-q4-2023?utm_mediumorganic_social&utm_sourcetwitter_messari&utm_campaignstate_of_polkadot_q4_2023 …

07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)

Kubectl 命令详解|K8S资源对象管理|K8S集群管理 kubectl管理命令kubectl get 查询资源常用的排错命令kubectl run 创建容器 POD原理pod的生命周期 k8s资源对象管理资源文件使用资源文件管理对象Pod资源文件deploy资源文件 集群调度的规则扩容与缩减集群更…

Mysql-Explain-使用说明

Explain 说明 explain SELECT * FROM tb_category_report;id:SELECT识别符,这是SELECT查询序列号。select_type:表示单位查询的查询类型,比如:普通查询、联合查询(union、union all)、子查询等复杂查询。table&#x…

[设计模式Java实现附plantuml源码~行为型]请求的链式处理——职责链模式

前言: 为什么之前写过Golang 版的设计模式,还在重新写Java 版? 答:因为对于我而言,当然也希望对正在学习的大伙有帮助。Java作为一门纯面向对象的语言,更适合用于学习设计模式。 为什么类图要附上uml 因为很…

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测

多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测 目录 多维时序 | Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现RF-Adaboost随机森林结合Adaboost多变量时间序列预…

YOLOv8改进 | 利用训练好权重文件计算YOLOv8的FPS、推理每张图片的平均时间(科研必备)

一、本文介绍 本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量…

极致成本,如何基于容器计算服务 ACS 打造企业级幻兽帕鲁私服 SaaS 服务?

作者:韩运韬(青炽) 《幻兽帕鲁》是一款最近大热的开放世界生存游戏。据报道。上市不到一周,《幻兽帕鲁》销量已突破 700 万份,成为名副其实的现象级游戏。根据游戏数据库网站 SteamDB 的数据显示,《幻兽帕…

QTabWidget和QTabBar控件样式设置(qss)

QTabWidget和QTabBar控件样式设置 1、QTabWidget样式可自定义的有哪些示例:效果图 2、QTabBar样式可自定义的有哪些示例效果图 1、QTabWidget样式可自定义的有哪些 QTabWidget::pane{} 定义tabWidgetFrameQTabWidget::tab-bar{} 定义TabBar的位置QTabWidget::tab{}定…

性能篇:如何解决高并发下 I/O 瓶颈?

我们可以有效地解决高并发下I/O瓶颈的问题,提升系统的性能。当然,实际场景中的优化可能涉及到更多的细节和技术,但希望这篇文章能为大家提供一些思路和方法。​ 引言 大家好,我是小米!今天我们来聊一个在高并发场景…

【Netty技术专题】「原理分析系列」Netty强大特性之Native transports扩展开发实战

Netty强大特性之Native transports技术原理分析 背景介绍JNI概念介绍不同平台的JNI实现 使用Native transports库Maven的分类器(Classifier)使用Linux native transport使用MacOS/BSD native transport库构建native transport库Linux版本要求MacOS/BSD版…

制度下降算法c语言

#include<stdio.h> #include<string.h> int location0; //遍历字符串的当前位置 char arr[20]"idid*id#"; void error(); //错误提示函数 /* 每一个非终结符都构造一个函数 */ void E(char t); void Ep(char t); void T(char t); void Tp(char t);…

Python 线性回归可视化 并将回归函数放置到图像上

import matplotlib.pyplot as plt import scipy import seaborn as sns# 加载内置的数据集 df sns.load_dataset(tips)#create regplot p sns.regplot(xtotal_bill, ytip, datadf)#calculate slope and intercept of regression equation slope, intercept, r, p, sterr sci…

基于BatchNorm的模型剪枝【详解+代码】

文章目录 1、BatchNorm&#xff08;BN&#xff09;2、L1与L2正则化2.1 L1与L2的导数及其应用2.2 论文核心点 3、模型剪枝的流程 ICCV经典论文&#xff0c;通俗易懂&#xff01;论文题目&#xff1a;Learning Efficient Convolutional Networks through Network Slimming卷积后能…

《动手学深度学习(PyTorch版)》笔记7.6

注&#xff1a;书中对代码的讲解并不详细&#xff0c;本文对很多细节做了详细注释。另外&#xff0c;书上的源代码是在Jupyter Notebook上运行的&#xff0c;较为分散&#xff0c;本文将代码集中起来&#xff0c;并加以完善&#xff0c;全部用vscode在python 3.9.18下测试通过&…

CC工具箱使用指南:【获取字段的所有唯一值】

一、简介 这个工具的目的是获取选定要素图层的字段的所有唯一值。 一般就是用于查看&#xff0c;比如说看一下规划用地有多少种地类&#xff0c;都是哪些地类。 二、工具参数介绍 点击【信息获取】组里的【获取字段的所有唯一值】工具&#xff1a; 即可打开下面的工具框界面…

Codeforces Round 923 (Div. 3)E. Klever Permutation 找规律,有共同区间

Problem - E - Codeforces 目录 Source of idea: 思路&#xff1a; 代码&#xff1a; 另一个up的找规律的解法&#xff1a; Source of idea: Codeforces Round 923(A-F题解) - 哔哩哔哩 (bilibili.com) 思路&#xff1a; 上面up分析的很好。两个相邻区间也就端点不一样&…

干货总结!Dockerfile编写优秀实践

Dockerfile 优秀实践 1. 善用.dockerignore文件 Docker 是CS架构&#xff0c;这就意味着 Client 和 Server 可以在不同的主机上。在构建镜像的时候&#xff0c;Client 会把所有需要的文件打包发送给 Server&#xff0c;这些发送的文件叫做 build context 默认情况下&#xf…

深度学习的新进展:解析技术演进与应用前景

深度学习的新进展&#xff1a;解析技术演进与应用前景 深度学习&#xff0c;作为人工智能领域的一颗璀璨明珠&#xff0c;一直以来都在不断刷新我们对技术和未来的认知。随着时间的推移&#xff0c;深度学习不断迎来新的进展&#xff0c;这不仅推动了技术的演进&#xff0c;也…

百面嵌入式专栏(面试题)C语言面试题22道

沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们将介绍C语言相关面试题 。 宏定义是在编译的哪个阶段被处理的?答案:宏定义是在编译预处理阶段被处理的。 解读:编译预处理:头文件包含、宏替换、条件编译、去除注释、添加行号。 写一个“标准”宏MIN,这个…

FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…