我正在使用以下代码:
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文件中未添加水印。
答案 0 :(得分:2)
您的Close
来电订单完全错误:
Stream.Close();
PDFReader.Close();
PDFStamper.Close();
特别是PDFStamper
要求PDFReader
和Stream
在关闭时仍然处于打开状态。
此外,除非引发异常,否则Stream
会自动关闭PDFStamper.Close()
。
因此,请使用
PDFStamper.Close();
PDFReader.Close();
代替。
如果您想确保在发生异常时Stream
被关闭,请使用using
声明。