使用iTextSharp在PDF上添加印章/水印/内容

本文关键字:水印 内容 添加 iTextSharp PDF 使用 | 更新日期: 2023-09-27 18:28:07

我使用以下代码:

PdfReader PDFReader = new PdfReader("C:''file.pdf");
FileStream Stream = new FileStream("C:''new.pdf", FileMode.Create, FileAccess.Write);
PdfStamper PDFStamper = new PdfStamper(PDFReader, Stream);
for (int iCount = 0; iCount < PDFStamper.Reader.NumberOfPages; iCount++)
{
    PdfContentByte PDFData = PDFStamper.GetOverContent(iCount + 1);
    BaseFont baseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED);
    PDFData.BeginText();
    PDFData.SetColorFill(CMYKColor.LIGHT_GRAY);
    PDFData.SetFontAndSize(baseFont, 80);
    PDFData.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "SAMPLE DOCUMENT", 300, 400, 45);
    PDFData.EndText();
}
Stream.Close();
PDFReader.Close();
PDFStamper.Close();

PDFStamper.Close();抛出错误。此外,我不确定是在PDFStamper.Close(); 之前还是之后调用PDFReader.Close();

并且水印不会添加到PDF文件中。

使用iTextSharp在PDF上添加印章/水印/内容

您的Close调用顺序全部错误:

Stream.Close();
PDFReader.Close();
PDFStamper.Close();

特别地,PDFStamper要求PDFReaderStream在其闭合时仍然打开。

此外,除非抛出异常,否则Stream将在PDFStamper.Close()期间自动关闭。

因此,使用

PDFStamper.Close();
PDFReader.Close();

相反。

如果要确保Stream在发生异常时处于关闭状态,请使用using语句。