You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在IText7(C#)中将添加的文字置于PDF页面内容底层?

解决iText7添加内容覆盖原有PDF内容的问题

要让添加的文字置于原有内容底层,核心是把内容写入页面的底层内容流,而非默认的顶层流。你的原有代码直接在页面顶层添加内容,所以会覆盖原有内容,修改方法如下:

修改后的代码

PdfPage pag = pdfDocument.GetLastPage();
// 获取页面的底层内容流,创建对应Canvas
PdfCanvas underCanvas = new PdfCanvas(pag.GetUnderContent());
Canvas canvas = new Canvas(underCanvas, pag.GetPageSize());

var div = new Div().SetMargin(0).SetPadding(0).SetKeepTogether(true);
div.SetFixedPosition(0, 0, pag.GetPageSize().GetWidth());
div.Add(new Paragraph("info").SetFontSize(12));

canvas.Add(div);
canvas.Close();

关键说明

  • iText7中每个PDF页面包含两个内容流:顶层(GetContentStream())和底层(GetUnderContent())。默认创建的Canvas绑定顶层流,新内容会绘制在原有内容之上;
  • 通过pag.GetUnderContent()获取底层流后,基于它创建的Canvas会把内容写入底层,原有内容会自然覆盖在新添加的文字之上,符合预期效果;
  • 若要给所有页面添加信息,只需遍历pdfDocument.GetPages()中的每一页,重复上述逻辑即可。

内容的提问来源于stack exchange,提问作者Erik Olivares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 11:45:35