Spire.Presentation for Java 10.11.4 现已发布。本次更新主要针对跨平台使用场景提升稳定性,修复了在 ColdFusion 平台调用组件时出现 NullReferenceException 的问题,从而增强了整体兼容性与可靠性。更新详情如下:
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-JAVA.html
Spire.Presentation for Python 10.11.1 已发布,本次更新主要修复了在将 PowerPoint 文件转换为图片时出现的问题。具体更新内容如下。
问题修复:
https://www.e-iceblue.cn/Downloads/Spire-Presentation-Python.html
Spire.Doc for Java 13.11.2 现已正式发布。该版本支持在 Word 文档中创建组合图表,此外还修复了一些在转换 Word 到 PDF、Markdown 到 Word,和加载、保存 Word 文档时出现的问题。详情如下。
新功能:
Document doc = new Document();
Paragraph paragraph = doc.addSection().addParagraph();
Chart chart = paragraph.appendChart(ChartType.Column, 450, 300).getChart();
chart.changeSeriesType("Series 3", ChartSeriesType.Line, true);
System.out.println(chart.getSeries().get(2).getChartType());
doc.saveToFile("ComboChart.docx");
问题修复:
CSV(逗号分隔值)是一种用于存储表格数据的通用文件格式,而列表是 Python 中用于轻松进行数据操作的基本数据结构。在 Python 中将 CSV 转换为列表,能实现数据的无缝处理、分析及与其他工作流的集成。虽然 Python 内置的 csv 模块可满足基础需求,但 Spire.XLS for Python 凭借类电子表格的直观界面,能更简化结构化 CSV 数据的处理流程。
本文将通过实用代码示例介绍如何使用 Python 读取 CSV 并转化为列表,覆盖从基础到进阶的各类场景。
目录:
Spire.XLS 是一款强大的电子表格处理库,在 CSV 处理方面优势显著:
安装步骤
开始前,通过 pip 安装Spire.XLS for Python:
pip install Spire.XLS
该命令会安装最新稳定版本,安装完成后即可直接在项目中使用。
若 CSV 文件无标题行(纯数据行),Spire.XLS 可直接读取行数据并将其转换为“列表的列表”(每个子列表对应 CSV 中的一行)。
操作步骤:
Spire.XLS 模块;Workbook 对象并加载 CSV 文件;CSV 转列表的 Python 代码示例:
from spire.xls import *
from spire.xls.common import *
# 初始化工作簿并加载 CSV 文件
workbook = Workbook()
workbook.LoadFromFile("数据.csv", ",")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 初始化列表用于存储转换后的数据
data_list = []
# 遍历工作表的每一行
for i in range(sheet.Rows.Length):
row = [] # 存储当前行的数据
# 遍历当前行的每一列
for j in range(sheet.Columns.Length):
cell_value = sheet.Range[i + 1, j + 1].Value
row.append(cell_value)
data_list.append(row) # 将当前行数据加入总列表
# 打印转换结果
for row in data_list:
print(row)
# 释放资源
workbook.Dispose()
输出效果:

如需将列表转回 CSV 格式,可参考:Python 将列表导出为 CSV 文件(含一维/二维/字典列表)
对于含标题行的CSV文件,转换为“字典列表”(键为标题、值为行数据)更便于数据操作。
CSV 转字典列表的 Python 代码示例:
from spire.xls import *
# 初始化工作簿并加载CSV文件
workbook = Workbook()
workbook.LoadFromFile("示例.csv", ",")
# 获取第一个工作表
sheet = workbook.Worksheets[0]
# 提取标题行(第一行数据作为字典的键)
headers = []
for j in range(sheet.Columns.Length):
headers.append(sheet.Range[1, j + 1].Value) # 1基索引取第一行
# 初始化列表用于存储字典
dict_list = []
# 遍历数据行(从第二行开始,跳过标题行)
for i in range(1, sheet.Rows.Length):
row_dict = {} # 存储当前行的键值对
for j in range(sheet.Columns.Length):
key = headers[j] # 标题作为键
value = sheet.Range[i + 1, j + 1].Value # 当前单元格值作为值
row_dict[key] = value
dict_list.append(row_dict) # 将字典加入列表
# 打印转换结果
for record in dict_list:
print(record)
# 释放资源
workbook.Dispose()
代码说明:
Workbook 类的 LoadFromFile() 方法加载文件,指定分隔符;输出效果:

处理非逗号分隔的 CSV 文件(如制表符分隔的 TSV 文件)时,只需在 LoadFromFile 中指定分隔符:
# 加载制表符分隔的文件(TSV)
workbook.LoadFromFile("data.tsv", "\t")
# 加载分号分隔的文件(常见于欧洲地区数据)
workbook.LoadFromFile("data_eu.csv", ";")
CSV 中的空单元格会被转换为空字符串('')。若需将空值替换为自定义内容(如 “N/A”),可修改单元格值提取逻辑:
# 为空值设置默认值“N/A”
cell_value = sheet.Range[i + 1, j + 1].Value or "N/A"
使用 Spire.XLS 在 Python 中将 CSV 转换为列表的方法十分高效、灵活且对初学者友好。无论您需要“列表的列表”存储原始数据,还是“字典列表”用于结构化分析,该库都能高效处理解析、索引及资源管理。通过本文示例,你可轻松将此转换集成到数据管道、分析脚本或应用程序中。
如需了解更多高级功能(如 CSV 转 Excel、批量处理等),可访问 Spire.XLS for Python 文档。
A: 是的,Spire.XLS 能高效处理大型文件。但对于超大规模数据集(数百万行),建议分块处理或结合大数据工具;对于常规业务数据,其性能表现优异。
A: Spire.XLS 提供了对解析过程更多的控制,并且不需要额外的数据科学依赖。虽然 pandas 非常适合分析,但当您需要精确控制 CSV 解析或在没有 pandas 的环境中工作时,Spire.XLS 是理想选择。
A: 推荐使用“字典列表”转换法:提取第一行作为标题(字典的键),后续行数据作为值,既能保留列含义,又便于通过列名访问数据。
A: 可通过指定目标列索引修改内循环逻辑:
# 仅转换第1列和第3列(对应索引0和2)
target_columns = [0, 2]
for i in range(sheet.Rows.Length):
row = []
for j in target_columns:
cell_value = sheet.Range[i + 1, j + 1].Value
row.append(cell_value)
data_list.append(row)
在数据处理与交换中,CSV(逗号分隔值)格式因简洁通用,成为跨应用、跨数据库的数据交换首选。对于 Python 开发者而言,将 Python 列表转换为 CSV 格式是高频需求——无论是导出应用数据、生成报表,还是准备分析数据集,都离不开这一操作。
Spire.XLS for Python 凭借直观可靠的方法简化了这一过程,无需依赖 Microsoft Excel,即可轻松将各类列表导出到 CSV 文件。本文将分步骤详解如何利用该工具实现转换,覆盖从简单一维列表到复杂字典列表的全场景。
目录
Python内置的 csv 模块可满足基础需求,但 Spire.XLS 提供了更强大的功能:
通过 pip 即可快速安装 Spire.XLS for Python,在终端或命令提示符中运行:
pip install Spire.XLS
安装完成后,即可直接导入模块开始编码。
一维列表是简单的序列值(如 ["苹果", "香蕉", "樱桃"])。 以下是将这些值写入 CSV 中的单行或单列的步骤。
步骤 1:导入 Spire.XLS 模块
首先,从 Spire.XLS 导入必要的类:
from spire.xls import *
from spire.xls.common import *
步骤2:创建工作簿与工作表
Spire.XLS 使用工作簿和工作表来组织数据。我们将创建一个新的工作簿并添加一个新的工作表:
# 初始化工作簿
workbook = Workbook()
# 清除默认工作表,新建一个工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("一维列表")
步骤 3:将一维列表数据写入工作表
可以选择将列表写入单行(水平)或单列(垂直)。
示例 1:将一维列表写入单行
data_list = ["苹果", "香蕉", "橙子", "葡萄", "芒果"]
# 循环写入第1行,列索引从1开始
for i, item in enumerate(data_list):
worksheet.Range[1, i+1].Value = item
示例 2:将一维列表写入单列
data_list = ["苹果", "香蕉", "橙子", "葡萄", "芒果"]
# 循环写入第1列,行索引从1开始
for i, item in enumerate(data_list):
worksheet.Range[i+1, 1].Value = item
步骤 4:将工作表保存为 CSV 文件
使用 SaveToFile() 将工作簿导出为 CSV 文件。指定 FileFormat.CSV 以确保正确的格式:
# 指定文件格式为CSV
workbook.SaveToFile("一维列表.csv", FileFormat.CSV)
# 释放资源
workbook.Dispose()
输出效果:

二维列表是“列表的列表”,适合表示表格数据(如包含表头和多行记录),每个内部列表对应 CSV 的一行。
二维列表输出为 CSV 格式的 Python 代码:
from spire.xls import *
from spire.xls.common import *
# 初始化工作簿与工作表
workbook = Workbook()
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("二维列表")
# 示例二维列表(含表头和数据)
data = [
["姓名", "年龄", "城市", "员工号"],
["小张", 30, "北京", 1001],
["小王", 25, "广东", 1069],
["小李", 35, "天津", 2078],
["小孙", 28, "武汉", 2692]
]
# 双层循环写入行和列
for row_idx, row_data in enumerate(data):
for col_idx, cell_data in enumerate(row_data):
# 转换为字符串确保兼容性
worksheet.Range[row_idx+1, col_idx+1].Value = str(cell_data)
# 保存为CSV
workbook.SaveToFile("二维列表.csv", FileFormat.CSV)
workbook.Dispose()
关键说明:
输出效果:

扩展技巧:生成的 CSV 可以 转换为 PDF 用于安全展示,或转换为 JSON 用于 Web/API 数据交换。
字典列表(如 [{"姓名": "小张", "年龄": 30}, ...])适合处理带字段名的数据,字典的键作为 CSV 表头,值作为行数据。
字典列表输出为 CSV 格式的 Python 代码:
from spire.xls import *
from spire.xls.common import *
# 初始化工作簿与工作表
workbook = Workbook()
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("字典列表")
# 示例字典列表
customer_list = [
{"客户ID": 101, "姓名": "小张", "邮箱": "该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。"},
{"客户ID": 102, "姓名": "小王", "邮箱": "该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。"},
{"客户ID": 103, "姓名": "小孙", "邮箱": "该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。"}
]
# 提取表头并写入第1行(若列表非空)
if customer_list:
headers = list(customer_list[0].keys())
# 写入表头
for col_idx, header in enumerate(headers):
worksheet.Range[1, col_idx+1].Value = str(header)
# 写入数据行(从第2行开始)
for row_idx, record in enumerate(customer_list):
for col_idx, header in enumerate(headers):
# 安全获取值,缺失键时用空字符串
value = record.get(header, "")
worksheet.Range[row_idx+2, col_idx+1].Value = str(value)
# 保存为CSV
workbook.SaveToFile("字典列表.csv", FileFormat.CSV)
workbook.Dispose()
关键说明:
record.get(header, "") 处理可能的缺失键;输出效果:

Spire.XLS 支持灵活设置 CSV 文件的分隔符(默认逗号)和编码,适配不同地区或系统需求。通过 Worksheet.SaveToFile() 方法的参数指定:
# 分号分隔(欧洲常用),UTF-8编码
worksheet.SaveToFile("分号分隔.csv", ";", Encoding.get_UTF8())
# 制表符分隔,UTF-8编码
worksheet.SaveToFile("制表符分隔.csv", "\t", Encoding.get_UTF8())
# 逗号分隔,Unicode编码
worksheet.SaveToFile("Unicode编码.csv", ",", Encoding.get_Unicode())
借助 Spire.XLS for Python,无论是简单的一维列表、结构化的二维列表,还是带字段名的字典列表,都能高效导出到 CSV 文件。只需根据数据结构选择对应方法,即可确保转换准确、输出专业。更多高级功能可参考 Spire.XLS for Python 教程合集。
try-catch 块捕获异常(如文件权限错误);Dispose() 释放资源。通过循环遍历列表字典,逐个保存:
lists = {
"水果": ["苹果", "香蕉", "樱桃"],
"分数": [85, 92, 78]
}
for name, data in lists.items():
wb = Workbook()
wb.Worksheets.Clear()
ws = wb.Worksheets.Add(name)
for i, val in enumerate(data):
ws.Range[i+1, 1].Value = str(val)
wb.SaveToFile(f"{name}.csv", FileFormat.CSV)
wb.Dispose()
CSV 以文本存储数字,需提前设置格式:
# 设置A1:A10为货币格式($1,234.56)
ws.Range["A1:A10"].NumberFormat = "$#,##0.00"
更多格式可参考:Python 在 Excel 中设置数字格式。
全平台支持,包括 Windows、macOS 和 Linux。

在日常工作中,我们常常遇到一些需要将 PowerPoint 文档转换为图片的情况。比如说想要避免其他人修改幻灯片上的内容,或者在 PowerPoint 的基础上生成缩略图,又或者想要在社交媒体上分享这个 PowerPoint 文档。在今天的指南中,我们一起来看看怎样通过 Spire.Presentation for .NET,使用 C# 将 PowerPoint 转换为多种格式的图片,轻松完成工作!
在开始之前,你需要先将 Spire.Presentation for .NET 包中包含的 DLL 文件添加到 .NET 项目中作为引用。这些 DLL 文件可以通过下载获取,也可以直接通过 NuGet 进行安装。
PM> Install-Package Spire.Presentation
JPG 和 PNG 都是常见的位图格式,可以直接通过 Spire.Presentation 提供的 ISlide.SaveAsImage() 方法将 PowerPoint 幻灯片转换为这两种图片格式。下面是具体的转换步骤:
下面的代码展示了怎样将一个 PowerPoint 演示文稿转换为 PNG 格式的图片:
using Spire.Presentation;
using System.Drawing;
namespace ConvertPowerPointToJpgOrPngImage
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Presentation 实例
Presentation presentation = new Presentation();
// 加载一个 PowerPoint 演示文稿
presentation.LoadFromFile(@"\input\幻灯片2.pptx");
int i = 0;
// 遍历所有幻灯片
foreach (ISlide slide in presentation.Slides)
{
// 将幻灯片保存为 PNG 图片
Image image = slide.SaveAsImage();
string fileName = string.Format("\output\JPGPNG\图-{0}.png", i);
image.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
i++;
}
}
}
}
转换后的 PNG 图片预览:

在一些工作中,我们可能需要将 PowerPoint 幻灯片保存为 TIFF 格式的图片。与 JPG 或 PNG 不同,TIFF 支持高质量、无损压缩,非常适合打印或专业图像处理等场景。使用 Spire.Presentation for .NET,我们可以轻松完成这一转换。
主要步骤如下:
下方是将 PowerPoint 文档转换为 TIFF 图片的代码示例:
using Spire.Presentation;
namespace ConvertPowerPointToTiffImage
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Presentation 实例
Presentation presentation = new Presentation();
// 加载 PowerPoint 文档
presentation.LoadFromFile(@"\input\幻灯片2.pptx");
// 文档转换为 TIFF 图片
presentation.SaveToFile("output\TIFF\转TIFF.tiff", FileFormat.Tiff);
}
}
}
转换后的 TIFF 图片预览:

EMF(Enhanced Metafile)是一种矢量图格式,相比位图格式(如 JPG、PNG),它在放大时不会失真,因此非常适合用于打印或高分辨率显示场景。通过 ISlide.SaveAsEMF() 方法,我们可以快速将幻灯片保存为 EMF 格式的图片。下面来看看主要的操作步骤和代码示例。
主要步骤如下:
下方为将 PowerPoint 演示文稿转换为 EMF 的完整代码示例:
using Spire.Presentation;
namespace ConvertPowerPointToEmfImage
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Presentation 实例
Presentation presentation = new Presentation();
// 加载 PowerPoint 文档
presentation.LoadFromFile(@"\input\\幻灯片2.pptx");
int i = 0;
// 遍历文件中的每一张幻灯片
foreach (ISlide slide in presentation.Slides)
{
string fileName = string.Format("output\EMF\图-{0}.emf", i);
// 将幻灯片保存为 EMF 图片
slide.SaveAsEMF(fileName);
// 保存幻灯片为指定宽高的 EMF 图片
//slide.SaveAsEMF(fileName, 1075, 710);
i++;
}
}
}
}
转换后的 EMF 图片预览:

小提示:如果你在进行网页设计时需要使用 PowerPoint 文件,除了将它转换为 EMF 或 SVG 格式外,还可以将 PowerPoint 转换为 HTML,以便进行更灵活的编辑与个性化设计。
SVG(Scalable Vector Graphics)是一种基于矢量的图像格式,具有可无限缩放且不失真的优点,同样适合在网页上使用,在进行设计时也很常见。通过调用 Spire.Presentation for .NET 提供的 Presentation.SaveToSVG() 方法,我们可以一次性将整个 PowerPoint 文件转换为 SVG。
将演示文稿转换为 SVG 图片的主要步骤:
下方为 PowerPoint 转换到 SVG 的完整代码示例:
using Spire.Presentation;
using System.Collections.Generic;
using System.IO;
namespace ConvertPowerPointToSvgImage
{
class Program
{
static void Main(string[] args)
{
// 创建一个 Presentation 的实例
Presentation presentation = new Presentation();
// 加载 PowerPoint 文档
presentation.LoadFromFile(@"\input\幻灯片2.pptx");
// 将 PowerPoint 文档转换为 SVG 并获取字节队列
Queue<byte[]> svgBytes = presentation.SaveToSVG();
int index = 0;
while (svgBytes.Count > 0)
{
byte[] bt = svgBytes.Dequeue();
string fileName = $@"\output\SVG\图-{index}.svg";
File.WriteAllBytes(fileName, bt);
index++;
}
}
}
}
转换后的 SVG 图片预览:

小提示:如果你只想从幻灯片中提取图片,而不是将整页幻灯片转换为图像,可以参考这篇教程:如何从 PowerPoint 幻灯片中提取图像 >>
以上就是使用 Spire.Presentation for .NET 将 PowerPoint 文档转换为多种图片格式的几种方法。无论是用于展示、分享还是后期编辑,这些方法都能让你轻松实现格式转换。如果在使用过程中遇到任何问题,或想了解更多产品功能,欢迎随时该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取技术支持与帮助。

在日常开发中,常常会遇到将 RTF(Rich Text Format)文件转换为 PDF 格式的需求。RTF 格式广泛用于文本格式化、字体样式和图片插入,而 PDF(Portable Document Format)则是跨平台文档存储和传输的标准格式,具有高度的兼容性和安全性。
本教程将深入介绍如何使用 Spire.Doc for Java 库在 Java 中将 RTF 文件转换为 PDF。此外,还将提供一些进阶转换设置,以确保转换结果符合不同业务需求。
目录
尽管 RTF 文件提供了基本的文本格式化功能,但其跨平台兼容性差,特别是在文档格式较复杂(如表格、图片)时,RTF 文件无法很好地保证不同设备和操作系统中的一致性。PDF 格式则能更好地解决这个问题,以下是 RTF 转 PDF 的几个主要优势:
为了能够在 Java 中将 RTF 文件转换为 PDF,首先需要下载并安装 Spire.Doc for Java库。Spire.Doc for Java是一款功能强大的文档处理库,支持多种格式的文档转换,包括 RTF 转 Word 和 PDF,Word 转 PDF,Word转HTML 等。
Spire.Doc for Java 主要提供了两种安装方式,您可以根据项目的需求选择适合的方式进行安装。
方法一:手动下载 JAR 文件
方法二:使用 Maven 引入依赖
添加 Maven 仓库
在项目的 pom.xml 文件中,添加 Spire 官方 Maven 仓库地址:
<repositories>
<repository>
<id>com.e-iceblue</id>
<name>e-iceblue</name>
<url>https://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
添加 Maven 依赖
在 pom.xml 文件中的 <dependencies> 部分,加入 Spire.Doc 的 Maven 依赖:
<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.doc</artifactId>
<version>13.12.2</version>
</dependency>
</dependencies>
选择适合您项目的安装方法,并按照上述步骤进行操作,即可顺利完成 Spire.Doc for Java 的安装。
遇到安装问题?联系技术支持团队为您提供免费、及时、专业的技术支持服务。
使用 Spire.Doc for Java 将 RTF 文件转换为 PDF的过程非常简单,只需要三个步骤:
首先,导入 Spire.Doc for Java 库中的类:
import com.spire.doc.*;
将 RTF 文件加载到Spire.Doc 的 Document 对象中:
// 创建 Document 对象
Document document = new Document();
// 加载 RTF 文件
document.loadFromFile("Input.rtf");
使用Document.saveToFile()方法将加载的 RTF 文件保存为 PDF 文件并释放文档资源:
// 将文档保存为 PDF 文件
document.saveToFile("ToPDF.pdf", FileFormat.PDF);
// 释放文档资源
document.close();
以下是在 Java 中将 RTF 文件转换为 PDF的完整代码示例:
import com.spire.doc.*;
public class RtfToPdf {
public static void main(String[] args) {
// 创建 Document 对象
Document document = new Document();
// 加载 RTF 文件
document.loadFromFile("Input.rtf");
// 将文档保存为 PDF
document.saveToFile("ToPDF.pdf", FileFormat.PDF);
// 关闭文档
document.close();
}
}
输出结果
下图展示了输入RTF文档与转换生成的PDF文档:

在将 RTF 文件转换为 PDF 时,除了基本的文件转换操作外,还可以对输出的 PDF 文件进行更多的定制化设置。这些进阶设置可以帮助您根据不同的需求进行优化,包括页面布局调整、长期存档、批量处理文件、以及确保文件的安全性等。
在转换 RTF 文件为 PDF 时,您可以根据需要调整页面的方向、尺寸和边距,以确保内容能够在 PDF 文件中正确呈现。以下是常见的优化方法:
调整页面方向和尺寸
对于包含宽表格或长文本的 RTF 文件,默认的纵向(Portrait)页面可能不适合。您可以将页面设置为横向(Landscape)或者调整页面尺寸以适应内容:
// 获取文档的节
Section section = document.getSections().get(0);
// 设置页面尺寸为 A4
section.getPageSetup().setPageSize(PageSize.A4);
// 设置页面方向为横向
section.getPageSetup().setOrientation(PageOrientation.Landscape);
调整页边距
如果需要,您还可以设置页面的边距,以确保文档内容不会被裁切或者失真:
// 设置页面边距
section.getPageSetup().getMargins().setAll(40f);
通过这些设置,您可以确保 PDF 输出的内容排版更加合理,避免重要信息被裁切,提升可读性。
对于需要长期存档和符合合规性要求的文档,PDF/A 格式非常重要。PDF/A 是专门为长期存档而设计的格式,确保文档能够长期稳定地访问,并且无需依赖外部资源(如字体、图片等)。
将 RTF 转换为 PDF/A 格式
将 RTF 文件转换为符合归档要求的 PDF/A 格式,确保文档可以在未来的任何时候被准确地复现:
// 设置 PDF/A 格式
ToPdfParameterList pdfOptions = new ToPdfParameterList();
pdfOptions.setPdfConformanceLevel(PdfConformanceLevel.Pdf_A_1_A);
// 将 RTF 文件保存为 PDF/A 格式
document.saveToFile("ToPdfA.pdf", pdfOptions);
此设置非常适用于法律合规性、金融、医疗等行业的文档,确保长期存档的文件可以随时被准确读取。
如果需要批量转换多个 RTF 文件为 PDF,可以使用以下代码来遍历指定目录中的所有 RTF 文件,并一次性将它们转换为 PDF。批量转换可以大大提高效率,尤其在处理大量文件时。
批量转换 RTF 文件为 PDF
// 指定要转换的 RTF 文件目录
String rtfDirectory = "path_to_rtf_files/";
// 获取该目录下的所有 RTF 文件
File folder = new File(rtfDirectory);
File[] rtfFiles = folder.listFiles((dir, name) -> name.endsWith(".rtf"));
if (rtfFiles != null) {
for (File rtfFile : rtfFiles) {
try {
// 创建 Document 对象
Document document = new Document();
// 加载 RTF 文件
document.loadFromFile(rtfFile.getAbsolutePath());
// 设置输出 PDF 文件的路径
String pdfFileName = rtfFile.getName().replace(".rtf", ".pdf");
String pdfFilePath = "path_to_output_pdfs/" + pdfFileName;
// 将 RTF 文件转换为 PDF 并保存
document.saveToFile(pdfFilePath, FileFormat.PDF);
// 关闭文档
document.close();
System.out.println("已转换: " + rtfFile.getName() + " 为 PDF 文件。");
} catch (Exception e) {
e.printStackTrace();
System.err.println("转换文件时出错: " + rtfFile.getName());
}
}
}
这种方法非常适合批量处理多个文档,大大提高了文件处理效率。
对于包含敏感信息的文档,保护其安全性非常重要。您可以通过为 PDF 文件添加 密码保护 来确保文档不会被未经授权的人员查看、编辑或打印。
设置用户密码和拥有者密码
您可以为 PDF 设置 用户密码(用于打开文件)和 拥有者密码(用于管理权限,如禁止打印、禁止编辑等)。另外,您还可以设置加密强度(例如 256 位加密)来增强文件的安全性:
// 创建 ToPdfParameterList 对象
ToPdfParameterList pdfOptions = new ToPdfParameterList();
// 设置用户密码和拥有者密码
pdfOptions.getPdfSecurity().encrypt(
"userPassword", // 用户密码,用于打开文件
"ownerPassword", // 拥有者密码,用于管理权限
PdfPermissionsFlags.Print, // 设置允许打印和复制内容的权限
PdfEncryptionKeySize.Key_256_Bit // 设置 256 位加密强度
);
// 将 RTF 文件保存为加密的 PDF 文件
document.saveToFile("加密文档.pdf", pdfOptions);
通过这种设置,您可以灵活地控制 PDF 文件的操作权限,确保文件安全。
通过本教程,您已经掌握了如何使用Java 和 Spire.Doc for Java 将 RTF 文件转换为 PDF 的基本操作和进阶设置。无论是调整 PDF 输出的页面布局,还是将 RTF 文件转换为符合长期存档标准的 PDF/A 格式,或者批量转换文件、为文件添加安全保护,这些功能都能有效提高您的文档处理效率。
答:Spire.Doc for Java 能够很好地处理包含嵌入图片的 RTF 文件。对于包含特殊字体的文件,在转换时,请确保系统中安装了源文件中所使用的字体,这样 PDF 转换后能保持原样。
答:当处理大量 RTF 文件时,可以考虑使用多线程或并行处理技术来提高批量转换的效率。
答:选择转换为 PDF/A 格式可以确保文件在未来任何设备上显示一致,适合用于长期存档的需求。
答:RTF 文件中的超链接会在转换为 PDF 时得到保留,默认情况下,Spire.Doc 会将 RTF 中的链接转换为 PDF 中可点击的超链接。如果您希望自定义链接的样式,可以通过 Spire.Doc 的 API 设置链接的样式。
Spire.PDF 11.11.1 现已正式发布。该版本支持在 NetStandard DLL 中启用打印日志功能。同时,移除了部分依赖项,并修复了多个在 PDF 转换、字体替换、验证及打印过程中出现的问题,进一步提升了产品的稳定性和性能。更多详情如下。
调整:
新功能:
PdfDocument doc = new PdfDocument();
doc.LoadFromFile("http://cdn.e-iceblue.cn/in.pdf");
doc.PrintSettings.PrintLogger= new DefaultPrintLogger("log.txt");
doc.PrintSettings.PaperSize =PdfPaperSize.A4;
doc.Print();
问题修复:

在日常的数据处理中,CSV 文件以其轻量和通用性广泛用于数据交换和系统导出。然而,它仅能提供基础的表格结构,不支持复杂排版,也不便于展示和打印。相比之下,PDF 格式则拥有固定版面、跨平台兼容和可打印的优势,非常适合用于正式报告或档案归档。
如果能将 CSV 自动转换为 PDF ,就能快速生成清晰、美观的报表,既节省手动排版时间,又能保持数据的专业呈现。本文将介绍如何使用 Spire.XLS for Java 实现这一过程——从加载 CSV 到输出高质量 PDF,仅需数行代码即可完成。
文章目录
Spire.XLS for Java 是一款功能强大的 Excel 处理类库,能够在无需安装 Microsoft Excel 的前提下,直接在 Java 程序中创建、编辑、读取和转换各种表格文件。
它支持多种格式(XLS、XLSX、CSV、ODS、HTML等),并提供丰富的格式控制功能,如字体样式、单元格边框、分页设置、打印布局等,非常适合生成 PDF 报告或表格打印文件。
安装方法
在你的 Maven 项目的 pom.xml 文件中添加以下内容,以引入Spire.XLS for Java库:
<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.xls</artifactId>
<version>15.11.3</version>
</dependency>
</dependencies>
如果你更倾向于手动安装,可以下载 Spire.XLS for Java,并将Spire.Xls.jar文件添加为项目的依赖项。
以下示例展示了如何加载 CSV 文件并将其保存为 PDF 格式:
import com.spire.xls.*;
public class CsvToPdfExample {
public static void main(String[] args) {
// 创建 Workbook 对象
Workbook workbook = new Workbook();
// 从 CSV 文件加载数据
workbook.loadFromFile("D:\\data\\input.csv", ",", 1, 1);
// 获取第一个工作表
Worksheet sheet = workbook.getWorksheets().get(0);
// 直接将工作表导出为 PDF 文件
sheet.saveToPdf("CsvToPdf.pdf");
// 释放资源
workbook.dispose();
}
}
代码解析
这种方法简单高效,非常适合处理结构相对简单的CSV文件。然而,如果某一列的内容过长,可能会被截断;而当列数较多时,表格可能会被分割到第二页,从而影响整体的阅读体验。
效果图:

你可能感兴趣:Java 将 Excel 转为 CSV 以及 CSV 转为 Excel
默认生成的 PDF通常较为简单,通过以下五个技巧,可以显著提升输出文件的清晰度和专业性。
确保文本不会被截断,同时避免单元格留白不均,从而提升整体可读性。
// 自动调整所有列宽
for (int i = 1; i <= sheet.getColumns().length; i++)
{
sheet.autoFitColumn(i);
}
// 设置默认行高
sheet.setDefaultRowHeight(18);
调整导出PDF的纸张尺寸和边距,使其更适合打印和分享。
sheet.getPageSetup().setPaperSize(PaperSizeType.PaperA4);
sheet.getPageSetup().setTopMargin(0.5);
sheet.getPageSetup().setBottomMargin(0.5);
sheet.getPageSetup().setLeftMargin(0.5);
sheet.getPageSetup().setRightMargin(0.5);
当CSV列数较多时,启用这一功能可以防止内容分页错乱,确保信息完整展示。
workbook.getConverterSetting().setSheetFitToWidth(true);
通过显示网格线,使表格结构更加清晰,特别适合用于报表展示,帮助读者更好地理解数据。
sheet.getPageSetup().isPrintGridlines(true);
统一文本的对齐方式,不仅提升了布局的整洁性,还增强了整体的可读性。
sheet.getAllocatedRange().getStyle().setHorizontalAlignment(HorizontalAlignType.Left);
sheet.getAllocatedRange().getStyle().setVerticalAlignment(VerticalAlignType.Center);
效果图:

你可能感兴趣:使用 Java 将 Excel 转为 PDF
| 问题场景 | 可能原因 | 解决方案 |
|---|---|---|
| 中文或特殊字符显示异常 | 文件编码不匹配 | 确保CSV使用UTF-8保存 |
| PDF表格分页错乱 | 页面宽度不足 | 启用SheetFitToWidth或切换横向纸张 |
| 内容被截断 | 列宽过窄 | 调用autoFitColumns()自动调整 |
| 转换性能较慢 | 文件体积较大 | 分批处理或释放资源(dispose()) |
| 样式过于单调 | 未应用格式设置 | 自定义字体、颜色、边框等样式 |
| 程序运行异常 | 文件路径错误或权限不足 | 添加文件检查与try-catch异常处理 |
| 批量转换多个文件 | 单次只处理一个文件 | 遍历文件夹批量调用转换逻辑 |
这些常见问题与技巧涵盖了从样式优化到性能提升的关键要点,能让您的转换程序更健壮、输出效果更专业。
通过本文的讲解,我们可以看到,使用 Spire.XLS for Java 将 CSV 文件转换为 PDF 报告,不仅操作简洁,而且输出效果稳定、专业。相比手动排版或依赖 Excel 软件的传统方式,这种方法能在自动化处理场景中显著提升效率。
借助 Spire.XLS 提供的灵活格式控制,开发者可以自由设置字体、边框、页边距和对齐方式,使转换后的 PDF 不仅保留数据的准确性,还具备良好的可读性与视觉美感。无论是企业报表、统计分析,还是系统自动生成文档,CSV 到 PDF 的转换都能在极短时间内完成,从而让数据展示更加清晰,信息传达更具专业性。
这种方式既满足了日常开发对自动化的需求,又兼顾了视觉呈现的品质,是构建高效文档生成系统的理想方案。
不需要。该库完全独立,可直接在任何 Java 环境中运行。
可以。Spire.XLS 生成的 PDF 保留文本信息,可进行搜索与复制。
可遍历目录下的所有 CSV 文件,循环调用 loadFromFile() 与 saveToPdf()。
支持。通过 CellRange.getStyle() 设置字体、背景色或边框样式即可。
如果您需要去除生成文档中的评估提示或解除功能限制,请联系我们获取有效期 30 天的临时许可证。
我们很高兴宣布发布Spire.Office 10.10.0。在此版本中,Spire.Doc支持从Word文件中提取页面到单独文件;Spire.XLS支持读取Office缓存云字体;Spire.Presentation支持设置音频淡入淡出时长;Spire.PDF支持验证时间戳服务URL。同时,本次更新修复了一系列已知问题。更多细节如下。
该版本涵盖了最新版的 Spire.Doc、Spire.PDF、Spire.XLS、Spire.Presentation、Spire.Barcode、Spire.Email、Spire.DocViewer、Spire.PDFViewer、Spire.OfficeViewer 和 Spire.DataExport。
https://www.e-iceblue.cn/Downloads/Spire-Office-NET.html
新功能:
Document doc = new Document();
doc.LoadFromFile("http://cdn.e-iceblue.cn/sample.docx");
Document extractPage = doc.ExtractPages(0, 1);
extractPage.SaveToFile("result.docx");
问题修复:
新功能:
问题修复:
新功能:
// New Append Audio
Presentation pres = new Presentation();
FileStream from_stream = File.OpenRead(inputFile);
RectangleF audioRect = new RectangleF(50, 50, 100, 100);
IAudio audio = pres.Slides[0].Shapes.AppendAudioMedia(from_stream, audioRect);
// Set the duration of the starting fade for 13s
audio.FadeInDuration = 13000f;
// Set the duration of the ending fade for 40s
audio.FadeOutDuration = 10000f;
pres.SaveToFile(outputFile, FileFormat.Pptx2013);
// Retrieve existing documents
FileStream from_stream = File.OpenRead(inputFile);
Presentation presentation = new Presentation();
presentation.LoadFromStream(from_stream, FileFormat.Auto);
foreach (IShape shape in presentation.Slides[0].Shapes)
{
if (shape is IAudio)
{
IAudio audio = shape as IAudio;
// Set the duration of the starting fade for 13s
audio.FadeInDuration = 13000f;
// Set the duration of the ending fade for 20s
audio.FadeOutDuration = 20000f;
}
}
presentation.SaveToFile(outputFile, FileFormat.Pptx2013);
// New Append Audio
Presentation pres = new Presentation();
FileStream from_stream = File.OpenRead(inputFile);
RectangleF audioRect = new RectangleF(50, 50, 100, 100);
IAudio audio = pres.Slides[0].Shapes.AppendAudioMedia(from_stream, audioRect);
// Set the start trimming time 8 seconds
audio.TrimFromStart = 8000f;
// Set the end trimming time 13 seconds
audio.TrimFromEnd = 13000f;
pres.SaveToFile(outputFile, FileFormat.Pptx2013);
// Retrieve existing documents
FileStream from_stream = File.OpenRead(inputFile);
Presentation presentation = new Presentation();
presentation.LoadFromStream(from_stream, FileFormat.Auto);
foreach (IShape shape in presentation.Slides[0].Shapes)
{
if (shape is IAudio)
{
IAudio audio = shape as IAudio;
// Set the start trimming time 8 seconds
audio.TrimFromStart = 8000f;
// Set the end trimming time 13 seconds
audio.TrimFromEnd = 13000f;
}
}
presentation.SaveToFile(outputFile, FileFormat.Pptx2013);
/table.Fill.Transparency = 0.5f; // Value range is 1-0, table default color is black
// Need to set specific table color, set color code as follows:
table[0, 0].FillFormat.FillType = Spire.Presentation.Drawing.FillFormatType.Solid;
table[0, 0].FillFormat.SolidColor.Color = Color.Orange;
调整:
Presentation ppt = new Presentation();
ppt.LoadFromFile("in.pptx");
//Add a digital signature,The parameters: string certificatePath, string certificatePassword, string comments, DateTime signTime
ppt.AddDigitalSignature("test.pfx", "e-iceblue", "111", DateTime.Now);
ppt.SaveToFile("result.pptx", Spire.Presentation.FileFormat.Pptx2016);
ppt.Dispose();
问题修复:
新功能:
TSAHttpService timestampService = new TSAHttpService("http://time2.certum.pl");
TSAResponse response = timestampService.Check();
//if it is success to receive tsa token
if (response.Success){
formatter.TimestampService = timestampService; }
问题修复:
新功能:
private void Form1_Load(object sender, EventArgs e)
{
string pdfDoc = @"test.pdf";
if (File.Exists(pdfDoc))
{
this.pdfDocumentViewer1.LoadFromFile(pdfDoc);
this.pdfDocumentViewer1.Find("FindedText", Color.Empty);
}
}
private void before_Click(object sender, EventArgs e)
{
this.pdfDocumentViewer1.FindPrevious();
}
private void next_Click(object sender, EventArgs e)
{
this.pdfDocumentViewer1.FindNext();
}