如何使用iTextSharp在PDF现有内容上层添加水印解决遮挡问题
问题根因
你遇到的水印被矩形遮盖的核心原因是PdfStamper默认未开启追加模式,新写入的内容会被插入到页面原有内容(包括你之前添加的遮盖矩形)的下层,导致新增水印被遮挡。
修复代码
仅需修改PdfStamper的初始化参数,开启追加模式即可,修改后代码如下:
//Add watermark using (PdfReader pdfReader = new PdfReader(pdfFile)) { // 第四个参数设为true开启追加模式,新内容会写在所有现有内容的最上层 using (PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(outpdfFile, FileMode.Create), '\0', true)) { PdfContentByte over = stamper.GetOverContent(1); iTextSharp.text.Font font = new iTextSharp.text.Font(); font.Size = 20; ColumnText.ShowTextAligned(over, Element.ALIGN_CENTER, new Phrase("This is water mark over existing content", font), 200, 500, 0); } }
参数说明
PdfStamper构造函数的第四个参数为appendMode,设为true时,所有新添加的内容会直接追加到PDF页面已有内容的最顶部,不会插入到原有内容层级之间。- 原有逻辑不需要其他调整,开启追加模式后新增的水印就会显示在你之前添加的遮盖矩形上层。
内容的提问来源于stack exchange,提问作者shahzad aftab
相关产品推荐
相关产品推荐

