冰蓝科技
|
028-81705109
|
|
微信扫一扫
|

Spire.Cloud 纯前端文档控件

Spire.Barcode for C++ 7.2.2 现已正式发布。最新版本优化了二维码的扫描效果。此外,该版本还将依赖的 SkiaSharp 版本升级至 3.116.1。更多详情请查阅下面的内容。

调整:

问题修复:


获取 Spire.Barcode for C++ 7.2.2 请点击:

Spire.Barcode for C++ 下载页面

Spire.Presentation for C++ 10.7.1 更新已发布。本次更新增强了 PPT 到图片的转换功能。此外,一些已知问题也在该版本中成功修复,如设置shape.TextFrame.AutofitType = TextAutofitType.Normal 效果不正确的问题。详情请阅读以下内容。

调整:

问题修复:


获取 Spire.Presentation for C++ 10.7.1 请点击:

Spire.Presentation for C++ 下载页面

Spire.PDF 11.7.10 现已发布,该版本加强了EMF到PDF的转换效果。详细信息如下。

问题修复:


请从以下页面获取 Spire.PDF 11.7.10:

Spire.PDF for .NET 下载页面

使用 C# 创建 Excel 文件的整体流程图

在 C# 中生成 Excel 文件是一项常见任务,广泛应用于报表系统构建、结构化数据导出及 Excel 自动化流程开发。无论你是在构建桌面工具、Web API,还是跨平台应用,通过代码生成 .xlsx 文件,都能显著提升数据处理和交互效率。

本文将介绍如何使用 Spire.XLS for .NET(一款独立的 Excel 操作库)在各类 .NET 项目中生成 Excel 文件,包括 .NET 桌面程序、ASP.NET Web 服务以及后台自动化任务。内容涵盖从零新建 Excel 工作簿、导出 DataTable、服务器端生成文件、设置格式与公式等常见功能,并配有详细的代码示例。

目录

环境准备

Spire.XLS for .NET 是一款轻量级 Excel 操作库,可完全通过代码创建和操作 .xls 或 .xlsx 文件,无需安装 Office,也不依赖 COM 组件,非常适合部署于 Web 服务器、微服务或云平台应用。

你可以通过 NuGet 安装该库:

Install-Package Spire.XLS

对于功能较轻的需求,也可使用免费版:Free Spire.XLS for .NET

Install-Package FreeSpire.XLS

用 C# 新建 Excel 文件

在处理配置数据、小规模内容或生成模板时,直接通过 C# 新建 Excel 文件能带来极高的控制力与灵活性。

以下示例展示了如何新建一个包含文本与数值的工作表,并设置列宽和样式:

using Spire.Xls;

// 创建一个新的工作簿和工作表
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "汇总"; // 设置工作表名称为“汇总”

// 填充表头和数据
// 通过单元格名称访问
sheet.Range["A1"].Text = "员工";
sheet.Range["B1"].Text = "部门";
sheet.Range["C1"].Text = "薪资";

// 通过行列索引访问单元格
sheet.Range[2, 1].Text = "小丽";
sheet.Range[2, 2].Text = "人事部";
sheet.Range[2, 3].NumberValue = 6500;

sheet.Range[3, 1].Text = "小明";
sheet.Range[3, 2].Text = "信息部";
sheet.Range[3, 3].NumberValue = 7200;

// 应用样式
CellStyle headerStyle = workbook.Styles.Add("Header");
headerStyle.Font.IsBold = true; // 设置加粗字体
sheet.Range["A1:C1"].Style = headerStyle;

// 自动调整列宽
sheet.AllocatedRange.AutoFitColumns();

// 保存文件
workbook.SaveToFile("BasicExcel.xlsx", FileFormat.Version2016);
workbook.Dispose();

生成的 Excel 文件:

示例:C# 新建的包含员工信息的 Excel 工作表

该方法无需安装 Office 即可直接新建 Excel 文件,适用于数据导出或配置生成任务。

用 C# 导出 DataTable 到 Excel

在处理数据库结果或 API 返回数据时,将 DataTable 导出为 Excel 文件是一项常见需求。Spire.XLS 支持快速加载结构化数据并自动生成列头,无需手动遍历行列。

以下示例展示如何将 DataTable 写入工作表并导出为 Excel 文件:

using System.Data;
using Spire.Xls;

// 创建一个模拟的数据表
DataTable dt = new DataTable("产品清单");
dt.Columns.Add("产品名称", typeof(string));
dt.Columns.Add("价格", typeof(double));
dt.Columns.Add("库存", typeof(int));

// 添加数据行(中文)
dt.Rows.Add("笔记本电脑", 1299.99, 20);
dt.Rows.Add("显示器", 199.5, 50);
dt.Rows.Add("鼠标", 25.75, 150);

// 导入到 Excel
Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "库存报告";
sheet.InsertDataTable(dt, true, 1, 1); // 从第1行第1列插入,并包含表头

// 自动调整列宽
sheet.AllocatedRange.AutoFitColumns();

// 保存文件
workbook.SaveToFile("库存报表.xlsx", FileFormat.Version2016);
workbook.Dispose();

导出的 Excel 文件:

示例:将 DataTable 导出为 Excel 文件后的工作表预览

这种方式适合生成库存清单、业务报表和数据分析结果,无需使用 Excel 或 COM 自动化。

扩展阅读:如何在 C# 中实现 Excel 与 DataTable 之间导入与导出数据

用 C# 设置 Excel 表格格式与公式

为了提升 Excel 报表的可读性与专业性,除了写入原始数据,还可以通过 C# 设置单元格样式、边框、字体颜色、数字格式,以及插入 Excel 原生公式。

以下示例展示如何使用 Spire.XLS 设置标题样式、货币格式、计算公式及交替行颜色:

using Spire.Xls;
using System.Drawing;

Workbook workbook = new Workbook();
Worksheet sheet = workbook.Worksheets[0];
sheet.Name = "销售报表"; // 设置工作表名称

// 设置表头
sheet.Range["A1"].Text = "商品";
sheet.Range["B1"].Text = "单价";
sheet.Range["C1"].Text = "数量";
sheet.Range["D1"].Text = "总价";

// 添加示例数据(中文)
string[,] items = {
    { "圆珠笔", "1.5", "10" },
    { "笔记本", "3.75", "5" },
    { "橡皮擦", "0.99", "20" }
};

for (int i = 0; i < items.GetLength(0); i++)
{
    int row = i + 2;
    sheet.Range[$"A{row}"].Text = items[i, 0];                          // 商品名称
    sheet.Range[$"B{row}"].NumberValue = double.Parse(items[i, 1]);   // 单价
    sheet.Range[$"C{row}"].NumberValue = double.Parse(items[i, 2]);   // 数量
    sheet.Range[$"D{row}"].Formula = $"=B{row}*C{row}";               // 总价(公式计算)
}

// 样式:表头行
CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
headerStyle.Font.IsBold = true;
headerStyle.Font.Color = Color.White;
headerStyle.Font.Size = 12;
headerStyle.KnownColor = ExcelColors.DarkBlue;
headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
headerStyle.VerticalAlignment = VerticalAlignType.Center;
headerStyle.Borders[BordersLineType.EdgeTop].LineStyle = LineStyleType.Thick;
headerStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thick;
sheet.Range["A1:D1"].Style = headerStyle;
sheet.Range["A1:D1"].RowHeight = 22;

// 样式:数据单元格
CellStyle dataStyle = workbook.Styles.Add("DataStyle");
dataStyle.NumberFormat = "\"¥\"#,##0.00"; // 显示人民币符号
dataStyle.HorizontalAlignment = HorizontalAlignType.Right;
dataStyle.VerticalAlignment = VerticalAlignType.Center;
dataStyle.Borders[BordersLineType.EdgeLeft].LineStyle = LineStyleType.Thin;
dataStyle.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Thin;

// 应用数据样式到单价、数量、总价列
sheet.Range["B2:D4"].Style = dataStyle;

// 可选:交替行底色增强可读性
for (int r = 2; r <= 4; r++)
{
    if (r % 2 == 0)
        sheet.Range[$"A{r}:D{r}"].Style.KnownColor = ExcelColors.LightYellow;
}

// 设置列宽和行高
sheet.AllocatedRange.ColumnWidth = 10;
sheet.AllocatedRange.RowHeight = 20;

// 保存文件
workbook.SaveToFile("样式化报表.xlsx", FileFormat.Version2016);
workbook.Dispose();

生成的 Excel 文件:

示例:包含格式和公式的 Excel 报表文件预览

这种方法适合生成销售报表、财务记录、采购清单等需要格式与计算支持的 Excel 文档。

你还可以进一步应用百分比、自定义数字格式等样式。阅读更多:如何设置 Excel 数字格式

在 ASP.NET Core 中生成 Excel 文件

在 ASP.NET Core 应用中(例如 .NET 6/7/8),动态导出 Excel 报表是后台管理系统和数据平台中的常见需求。

以下示例展示了如何在 Razor Pages 页面中生成 Excel 文件并通过浏览器下载,无需将文件保存到磁盘:

using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Spire.Xls;
using System.Data;

public class ExportModel : PageModel
{
    public IActionResult OnGet()
    {
        // 模拟专业数据:项目进度报告
        DataTable dt = new DataTable("项目进度");
        dt.Columns.Add("项目编号", typeof(string));
        dt.Columns.Add("项目名称", typeof(string));
        dt.Columns.Add("负责人", typeof(string));
        dt.Columns.Add("开始日期", typeof(DateTime));
        dt.Columns.Add("计划完成", typeof(DateTime));
        dt.Columns.Add("当前进度", typeof(string));
        dt.Columns.Add("状态", typeof(string));

        dt.Rows.Add("PRJ001", "智能仓储系统", "张强", new DateTime(2024, 3, 1), new DateTime(2024, 9, 30), "65%", "进行中");
        dt.Rows.Add("PRJ002", "企业门户网站升级", "李华", new DateTime(2024, 5, 10), new DateTime(2024, 7, 15), "100%", "已完成");
        dt.Rows.Add("PRJ003", "数据治理平台建设", "王敏", new DateTime(2024, 6, 1), new DateTime(2024, 12, 31), "30%", "延迟");

        // 创建 Excel 工作簿和工作表
        Workbook workbook = new Workbook();
        Worksheet sheet = workbook.Worksheets[0];
        sheet.Name = "项目进度报告";

        // 插入数据表(包含表头)
        sheet.InsertDataTable(dt, true, 1, 1);

        // 表头样式
        CellStyle headerStyle = workbook.Styles.Add("HeaderStyle");
        headerStyle.Font.IsBold = true;
        headerStyle.HorizontalAlignment = HorizontalAlignType.Center;
        headerStyle.VerticalAlignment = VerticalAlignType.Center;
        sheet.Rows[0].Style = headerStyle;

        // 自动调整列宽
        sheet.AllocatedRange.AutoFitColumns();

        // 保存为内存流
        using var stream = new MemoryStream();
        workbook.SaveToStream(stream, FileFormat.Version2016);
        stream.Position = 0;

        // 返回文件
        return File(stream.ToArray(),
            "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
            "项目进度报告.xlsx");
    }
}

导出的 Excel 文件:

ASP.NET Core 页面中生成并下载的 Excel 项目进度报表

该方法适用于需要服务端生成并下载 Excel 文件的 Web 场景,支持:

  • ✅ ASP.NET Core 3.1、.NET 5、.NET 6、.NET 7、.NET 8
  • ✅ Razor Pages、MVC 控制器、API 接口等类型项目

在 ASP.NET Web Forms 中生成 Excel 文件

对于使用经典 ASP.NET Web Forms 的项目,也可以通过 Spire.XLS 实现在浏览器中即时下载 Excel 文件,而无需中间文件或 Office 安装。

以下示例展示了如何在 Web Forms 页面中使用内存流创建并返回 Excel 文件:

using Spire.Xls;
using System;
using System.IO;

namespace YourNamespace
{
    public partial class Default : System.Web.UI.Page
    {
        protected void btnExport_Click(object sender, EventArgs e)
        {
            // 创建 Excel 文件并准备导出下载
            Workbook workbook = new Workbook();
            Worksheet sheet = workbook.Worksheets[0];
            sheet.Name = "用户信息";

            // 表头
            string[] headers = { "编号", "姓名", "部门", "入职日期" };
            for (int i = 0; i < headers.Length; i++)
            {
                sheet.Range[1, i + 1].Text = headers[i];
                sheet.Range[1, i + 1].Style.Font.IsBold = true;
            }

            // 示例数据(中文)
            string[,] data = {
                { "U001", "张美", "人事部", "2023-01-15" },
                { "U002", "李强", "信息部", "2022-11-03" }
            };

            // 填充数据
            for (int r = 0; r < data.GetLength(0); r++)
                for (int c = 0; c < data.GetLength(1); c++)
                    sheet.Range[r + 2, c + 1].Text = data[r, c];

            // 自动调整列宽
            sheet.AllocatedRange.AutoFitColumns();

            // 导出并触发浏览器下载
            using (MemoryStream ms = new MemoryStream())
            {
                workbook.SaveToStream(ms, FileFormat.Version2016);
                byte[] bytes = ms.ToArray();
                Response.Clear();
                Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
                Response.AddHeader("Content-Disposition", "attachment; filename=用户信息.xlsx");
                Response.BinaryWrite(bytes);
                Response.End();
            }
        }
    }
}

导出的 Excel 文件:

ASP.NET Web Forms 中生成并导出的用户信息 Excel 文件

该方式适合用于后台管理系统、内部工具或企业内部门户,实现便捷的数据导出功能。

常见问题解答

如何在 C# 中创建 Excel 文件?

使用 Spire.XLS 等库,可以创建新的工作簿、填充数据,并保存为 Excel 文件,无需安装 Office。

如何将数据导出为 Excel 文件?

可以将 DataTable 数据直接导入工作表,再保存为 Excel 文件,Spire.XLS 会自动生成列头并支持格式设置。

ASP.NET 如何生成 Excel 文件?

Spire.XLS 兼容 ASP.NET Core 和 Web Forms。在 Core 中通过流返回文件,在 Web Forms 中使用 Response.BinaryWrite() 实现下载。

是否支持 .NET Core?

是的,Spire.XLS 支持 .NET Core 3.1 及以上版本,包括 .NET 5、6、7、8,适用于跨平台部署。

总结

使用 Spire.XLS for .NET,你可以轻松地在 C# 中生成 Excel 文件,覆盖桌面、Web 和后台任务等多种使用场景。不论是导出 DataTable、创建格式化报表,还是自动生成计算内容,本指南均提供了完整的示例与操作步骤。

点击申请临时免费授权,解锁付费版全部功能并移除评估限制。

Spire.PDF for Python 11.7.0 现已正式发布。该版本支持移除 PdfWatermarkAnnotationWidget 对象,并修复了两个在转换OFD到PDF和获取PDF字体属性时出现的问题。详情请查阅以下内容。

调整:

新功能:

问题修复:


获取 Spire.PDF for Python 11.7.0 请点击:

Spire.PDF for Python 下载页面

Python 添加文字到 PDF 的示意图

在处理 PDF 时,向文档中添加文字是非常常见的场景,比如自动生成报告、插入批注说明、填写表单模板或添加版本标记等。借助 Python 向 PDF 插入文本,可以大幅提升文档处理的灵活性与自动化效率。

相比手动操作或依赖复杂工具,使用专业的 PDF 库能让你通过几行代码精准地控制文本位置、样式和内容。本文将借助功能强大的 Spire.PDF for Python 库,演示如何实现这些操作。

文章导航

  1. 环境准备:安装 PDF 库
  2. 创建新 PDF 并添加文字
  3. 向已有 PDF 添加文字
  4. 设置文本样式、位置、透明度与旋转
  5. 常见问题与跨平台注意事项
  6. 总结
  7. 常见问题解答(FAQ)

环境准备:安装 Python PDF 库

开始前,请先安装 Spire.PDF for Python:

pip install Spire.PDF

如使用免费版本,请安装:

pip install spire.pdf.free

选择 Spire.PDF 的理由:

  • 无需安装 Acrobat 或其他办公软件
  • 支持精确控制文本样式与位置
  • 同时支持创建与修改 PDF
  • 跨平台兼容,适用于各种操作系统

创建新 PDF 并添加文字

如果你需要从零创建一个 PDF 文件并写入文字,以下示例展示了如何在空白页面中插入带有自定义样式的文本内容。

示例:创建空白 PDF 并插入文字

from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, RectangleF, \
    PdfStringFormat, PdfTextAlignment, PdfVerticalAlignment

# 创建一个新的 PDF 文档并添加一页
pdf = PdfDocument()
page = pdf.Pages.Add()

# 要绘制的文本内容(示例字符串)
text = ("本报告总结了 2025 年第一季度各类产品的销售表现。"
        + "以下是按产品类别划分的总销售额明细,"
        + "随后是各个地区的销售对比分析。")

# 设置字体、画刷和起始坐标点
font = PdfTrueTypeFont("微软雅黑", 14.0, PdfFontStyle.Regular, True)  # 使用 Arial 字体,14号,常规样式,嵌入字体
brush = PdfSolidBrush(PdfRGBColor(0, 0, 0))  # 使用黑色实心画刷
point = PointF(50.0, 100.0)  # 文本起始绘制坐标(未被实际使用)

# 设置文本布局区域和格式
layoutArea = RectangleF(50.0, 50.0, page.GetClientSize().Width - 100.0, page.GetClientSize().Height)
# 从页面距离左边 50、高度 50 的位置开始绘制文本,宽度为页面宽度减去两侧各 50 的边距,高度为整页高度

stringFormat = PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Top)
# 文本左对齐,垂直顶部对齐

# 在页面上绘制文本
page.Canvas.DrawString(text, font, brush, layoutArea, stringFormat, False)

# 保存 PDF 文件并关闭文档
pdf.SaveToFile("output/new.pdf")
pdf.Close()

要点说明:

  • 使用 PdfTrueTypeFont() 加载系统字体,支持字体大小与样式配置。
  • 通过 PdfSolidBrush() 设置文本颜色,例如 (0, 0, 0) 表示黑色。
  • 使用 RectangleF() 定义文本绘制区域,支持自动换行。
  • 通过 PdfStringFormat() 控制文字对齐方式。
  • 使用 DrawString() 在页面指定位置绘制文字,不影响其他内容。

生成的 PDF 文件:

使用Python创建新PDF插入文本

提示: 若有多段文字或需手动换行,可调整 Y 坐标或多次调用 DrawString() 分段插入。

想了解如何将 TXT 文件转换为 PDF?请参考:Python 将文本文件转换为 PDF 教程

向已有 PDF 添加文字

若你希望在现有 PDF 文档中添加文字,可通过加载 PDF、定位页面,并指定位置插入文本。

常见应用场景:

  • 添加注释或说明
  • 标记文档处理状态(如“已审核”、“作废”)
  • 向模板中填入信息字段

示例:在已有 PDF 页面中添加文字

from spire.pdf import PdfDocument, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF, PdfCjkStandardFont, PdfCjkFontFamily

# 加载已有的 PDF 文档
pdf = PdfDocument()
pdf.LoadFromFile("input.pdf")  # 从文件加载 PDF
page = pdf.Pages.get_Item(0)  # 获取第一页

# 设置字体为 Times Roman,字号 12,加粗
font = PdfCjkStandardFont(PdfCjkFontFamily.MonotypeHeiMedium, 16.0, PdfFontStyle.Bold)

# 使用红色画刷
brush = PdfSolidBrush(PdfRGBColor(255, 0, 0))  # 红色

# 设置文本绘制位置
location = PointF(150.0, 110.0)

# 在指定位置绘制文本
page.Canvas.DrawString("本文件已批准。", font, brush, location)

# 保存修改后的 PDF 文件
pdf.SaveToFile("output/modified.pdf")
pdf.Close()

要点说明:

  • LoadFromFile() 可加载本地 PDF 文档
  • 使用 pdf.Pages[index] 访问页面对象
  • 添加的内容以叠加形式呈现,不会修改原始内容
  • 文本位置由 PointF(x, y) 控制,坐标单位为磅(point)

保存的 PDF 文件:

使用Python载入PDF文件插入文本

通过调整坐标参数,即可灵活控制文本位置。

延伸阅读:Python 查找并替换 PDF 中文本

设置文本样式、位置、透明度与旋转

添加文本不仅仅是插入内容,更重要的是其呈现方式。Spire.PDF 支持多种文本样式控制,包括字体、颜色、对齐方式、透明度和旋转角度,常用于水印或提示标签。

设置字体与颜色

# 创建 PdfTrueTypeFont(使用系统中的 Calibri 字体,16号,斜体,嵌入字体)
font = PdfTrueTypeFont("Calibri", 16.0, PdfFontStyle.Italic, True)

# 创建 PdfFont(使用内置 Times Roman 字体,16号,斜体)
font = PdfFont(PdfFontFamily.TimesRoman, 16.0, PdfFontStyle.Italic)

# 创建 PdfBrush,用于设置文本绘制颜色
brush = PdfSolidBrush(PdfRGBColor(34, 139, 34))  # 森林绿(forest green)

PdfTrueTypeFont 支持将字体嵌入 PDF,确保在不同设备上显示一致。如需减小文件体积,可使用系统字体(不嵌入)。

设置透明度与旋转角度

# 保存当前画布状态
state = page.Canvas.Save()

# 设置半透明效果(0.0 = 完全透明,1.0 = 完全不透明)
page.Canvas.SetTransparency(0.4)

# 将原点移动到页面中心
page.Canvas.TranslateTransform(page.Size.Width / 2, page.Size.Height / 2)

# 将画布逆时针旋转 45 度
page.Canvas.RotateTransform(-45)

# 在新的原点位置绘制文本
page.Canvas.DrawString("草稿", font, brush, PointF(-50, -20))

透明度与旋转角度的结合,常用于创建水印、对角标记等视觉效果。

示例:添加居中斜体水印

from spire.pdf import PdfDocument, PdfTrueTypeFont, PdfFontStyle, PdfSolidBrush, PdfRGBColor, PointF
from spire.pdf.common import Color

# 加载已有的 PDF 文档
pdf = PdfDocument()
pdf.LoadFromFile("input1.pdf")
page = pdf.Pages[0]

# 要添加的水印文字
text = "请勿外传此文档"  # 将 "Confidential" 翻译为中文“机密”

# 创建字体(微软雅黑,40号,加粗,嵌入字体)
font = PdfTrueTypeFont("微软雅黑", 40.0, PdfFontStyle.Bold, True)

# 创建画刷(深蓝色)
brush = PdfSolidBrush(PdfRGBColor(Color.get_DarkBlue()))

# 测量文字尺寸以计算居中位置
size = font.MeasureString(text)
x = (page.Canvas.ClientSize.Width - size.Width) / 2
y = (page.Canvas.ClientSize.Height - size.Height) / 2

# 保存当前画布状态
state = page.Canvas.Save()

# 设置透明度为 0.3(30% 不透明)
page.Canvas.SetTransparency(0.3)

# 将原点移动到文字中心
page.Canvas.TranslateTransform(x + size.Width / 2, y + size.Height / 2)

# 旋转画布 -45 度(逆时针)
page.Canvas.RotateTransform(-45.0)

# 在旋转后的画布中心绘制文字,使其居中显示
page.Canvas.DrawString(text, font, brush, PointF(-size.Width / 2, -size.Height / 2))

# 恢复画布状态
page.Canvas.Restore(state)

# 保存包含水印的新 PDF 文件
pdf.SaveToFile("output/with_watermark.pdf")
pdf.Close()

常用于生成自动水印文字,如 “CONFIDENTIAL”、“COPY” 等,可灵活用于批量处理。

生成的 PDF 文件:

使用Python在PDF文件中插入水印文字

文件正在被其他程序占用,保存时可能遇到 PermissionError

查看完整水印添加方法:Python 向 PDF 添加文字水印

常见问题与跨平台注意事项

在不同平台或字体环境下添加文本时,可能会遇到如下问题。以下是一些常见问题及解决建议:

问题 可能原因 解决方案
文本位置偏差 坐标设置未考虑页面尺寸 使用 ClientSizeMeasureString() 实现动态适配
字体无法显示 缺少对应字体或不支持字符集 嵌入常用字体如 Arial Unicode,或使用 Noto Sans 等 Unicode 字体
Unicode 字符乱码 字体不支持全字符集 使用支持广泛字符集的字体并嵌入
内容重叠 行距或位置设置不当 使用 MeasureString() 计算文本高度,合理设置 Y 坐标
出现水印文字 使用试用版未授权 使用免费版本,或申请临时授权
文件体积变大 嵌入字体增加文件大小 如不需跨设备显示一致性,可使用不嵌入字体的 PdfFont
macOS/Linux 显示异常 系统字体差异或度量方式不同 携带字体文件,或使用跨平台字体以确保一致性

总结

通过 Spire.PDF for Python,你可以灵活地实现 PDF 文档的文字添加,无论是新建文档、修改现有文件,还是批量处理。该库提供丰富的样式与位置控制选项,适用于自动化报告、水印标注、模板填充等多种场景。

你可以立即使用免费版本开始开发,或联系销售申请免费临时License 以解锁完整功能。

常见问题(FAQ)

如何用 Python 向 PDF 添加文字?

使用如 Spire.PDF 等库,通过 DrawString() 方法添加文字,并可设置字体、颜色和位置等属性。

能否向已有 PDF 添加文字?

当然可以。加载 PDF 后通过页面对象调用 DrawString() 添加内容即可。

如何将文本文件内容转换成 PDF?

逐行读取 TXT 文件内容,结合 DrawString() 方法按需写入 PDF 页面。

可以批量向多个 PDF 添加相同的内容吗?

可以。遍历文件目录,对每个 PDF 分别加载并插入指定文字即可完成批量处理。

Spire.Doc for Java 13.7.2 现已正式发布。最新版本增强了从 Word 到 PDF 的转换功能。此外,该版本还修复了一些已知问题,例如,修复了 MailMerge.executeWidthRegion(dataSource) 读取 XML 中的图片路径不正确的问题。更多详情请查阅下面的内容。

问题修复:


获取 Spire.Doc for Java 13.7.2 请点击:

Spire.Doc for Java 下载页面

Spire.PDF 11.7.2 现已发布。该版本新增 GetCustomApplicationData() 方法,支持提取 PDF 中的自定义数据值。同时还修复了多个问题,提升了 PDF 的转换效率、渲染效果、表单域处理、打印输出及异常处理能力。详情如下:

新功能:

问题修复:


获取 Spire.PDF 11.7.2 请点击:

Spire.PDF for .NET 下载页面

Spire.PDF for Java 11.7.0现已发布,该版本加强了SVG转PDF的效果,并且修复了另外两个问题。更多详情如下:

问题修复:


获取 Spire.PDF for Java 11.7.0 请点击:

Spire.PDF for Java 下载页面

Spire.Presentation for Python 10.6.4 已发布。该版本新增支持Linux arm64 平台以及保存形状shape到SVG的新功能。此外,一些在转换PPT到图片和加载文件时出现的问题也已成功被修复。详情请查看下文。

新功能:

问题修复:


获取Spire.Presentation for Python 10.6.4,请点击:

Spire.Presentation for Python 下载页面