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

时间:2015-12-26 05:37:25

标签: c# itextsharp

我正在使用以下代码:

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();会引发错误。此外,我不确定是否在PDFReader.Close();

之前或之后致电PDFStamper.Close();

PDF文件中未添加水印。

1 个答案:

答案 0 :(得分:2)

您的Close来电订单完全错误:

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

特别是PDFStamper要求PDFReaderStream在关闭时仍然处于打开状态。

此外,除非引发异常,否则Stream会自动关闭PDFStamper.Close()

因此,请使用

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

代替。

如果您想确保在发生异常时Stream被关闭,请使用using声明。