我正在使用以下代码:
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();
Run Code Online (Sandbox Code Playgroud)
但PDFStamper.Close();
抛出错误。另外,我不确定是PDFReader.Close();
在之前还是之后打电话PDFStamper.Close();
并且PDF文件中不添加水印。
您的调用顺序Close
完全错误:
Stream.Close();
PDFReader.Close();
PDFStamper.Close();
Run Code Online (Sandbox Code Playgroud)
特别是PDFStamper
要求PDFReader
和Stream
关闭时仍保持打开状态。
此外,除非抛出异常,否则Stream
会在 期间自动关闭PDFStamper.Close()
。
因此,使用
PDFStamper.Close();
PDFReader.Close();
Run Code Online (Sandbox Code Playgroud)
反而。
如果您想确保Stream
在发生异常时关闭,请使用using
语句。
归档时间: |
|
查看次数: |
9858 次 |
最近记录: |