C#使用Spire.Pdf给PDF添加图片背景

唐可
唐可
发布时间:2026-10-13 | 4人浏览过
原创

在生成或修改PDF文档时,简单的单页背景往往难以处理内容跨页的情况。本文将展示两种使用C#实现PDF全页图片背景的方法:一种是利用iTextSharp库直接操作页面底层图层,另一种是使用Spire.Pdf组件进行高级对象属性设置。

方法一:使用 iTextSharp 逐页渲染背景

iTextSharp 是一个功能强大的 .NET PDF 库。当 PDF 内容较长且跨越多个页面时,需要遍历每一页,将背景图片绘制在文本内容的下方(UnderContent),以确保文字不被遮挡。

第1步:引入必要的命名空间与准备数据

首先需要添加对 iTextSharp 和 System.Drawing 的引用。确定源 PDF 路径、目标输出路径以及背景图片的路径。

第2步:初始化 PdfReader 和 PdfStamper

创建 PdfReader 实例读取现有 PDF,并使用 PdfStamper 包装读写流,以便写入新内容。

string pdfFilePath = "sample.pdf";
string destFile = "output.pdf"; // 确保该路径可写
FileStream stream = new FileStream(destFile, FileMode.Create, FileAccess.ReadWrite);
PdfReader reader = new PdfReader(pdfFilePath);
PdfStamper stamper = new PdfStamper(reader, stream);

第3步:加载背景图片并配置参数

使用 System.Drawing.Image.FromFile 加载图片,并通过 iTextSharp.text.Image.GetInstance 转换为 PDF 支持的图像对象。设置绝对位置坐标为 (0, 0)。

string imagePage = @"../images/bg.png";
System.Drawing.Image image = System.Drawing.Image.FromFile(imagePage);
iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(image, System.Drawing.Imaging.ImageFormat.Png);
img.SetAbsolutePosition(0, 0); // 定位到左上角

第4步:遍历所有页面并添加背景

获取总页数,循环每一个页面,调用 GetUnderContent(current) 获取当前页面的下层绘图对象,并添加背景图片。

int totalPage = reader.NumberOfPages;
for (int current = 1; current <= totalPage; current++)
{
    var canvas = stamper.GetUnderContent(current);
    canvas.AddImage(img);
}

第5步:关闭资源并保存

操作完成后,务必依次关闭 Stamper 和 Reader 以释放文件句柄和内存。

stamper.Close();
reader.Close();

方法二:使用 Spire.Pdf 设置页面背景属性

如果项目中已集成 E-iceblue 的 Spire.Pdf 组件,可以通过更高层级的 API 直接设置页面的 BackgroundImage 属性,代码更加简洁。

第1步:加载 PDF 文档

实例化 PdfDocument 对象并调用 LoadFromFile 加载源文件。

using System.Drawing;
using Spire.Pdf;

PdfDocument doc = new PdfDocument();
doc.LoadFromFile("sample.pdf");

第2步:获取指定页面并设置背景

获取目标页(例如第一页 PdfPageBase page = doc.Pages[0]),然后从文件系统加载背景图像并将其赋值给页面的 BackgroundImage 属性。

PdfPageBase page = doc.Pages[0];
Image backgroundImage = Image.FromFile("background.jpg");
page.BackgroundImage = backgroundImage;

第3步:保存结果

使用 SaveToFile 将带有背景的文档保存为新的 PDF 文件。

doc.SaveToFile("result.pdf");

以上就是使用 C# 实现 PDF 文件添加图片背景的详细内容,更多关于 C# PDF 开发优化技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表