C# 使用itextsharp在整个pdf页面上添加水印时出错

C# 使用itextsharp在整个pdf页面上添加水印时出错,c#,asp.net,watermark,C#,Asp.net,Watermark,我使用下面的代码在页面上添加水印,但是输出MemoryStream总是空的,我想知道我哪里做错了 public static MemoryStream testwatermark(MemoryStream pdf) { PdfReader reader = new PdfReader(pdf); using (MemoryStream output = new MemoryStream()) { PdfStamper pdfStamper = new P

我使用下面的代码在页面上添加水印,但是输出
MemoryStream
总是空的,我想知道我哪里做错了

public static MemoryStream testwatermark(MemoryStream pdf)
{
    PdfReader reader = new PdfReader(pdf);

    using (MemoryStream output = new MemoryStream())
    {
        PdfStamper pdfStamper = new PdfStamper(reader, output);

        for (int pageIndex = 1; pageIndex <= reader.NumberOfPages; pageIndex++)
        {
            iTextSharp.text.Rectangle pageRectangle = reader.GetPageSizeWithRotation(pageIndex);
            PdfContentByte pdfData = pdfStamper.GetUnderContent(pageIndex);
            pdfData.SetFontAndSize(BaseFont.CreateFont(BaseFont.HELVETICA_BOLD, BaseFont.CP1252, BaseFont.NOT_EMBEDDED), 40);
            PdfGState graphicsState = new PdfGState(); graphicsState.FillOpacity = 0.4F;
            pdfData.SetGState(graphicsState);     
            //set color of watermark     
            pdfData.SetColorFill(BaseColor.BLUE);
            pdfData.BeginText();     
            //show text as per position and rotation     
            pdfData.ShowTextAligned(Element.ALIGN_CENTER, "BlueLemonCode", pageRectangle.Width / 2, pageRectangle.Height / 2, 45);     
            //call endText to invalid font set     
            pdfData.EndText();
        }
        pdfStamper.Close();
        return output;
    }
}

在上面的代码中,通过返回字节而不是memorystream来解决这个问题

.
.
.
.
pdfStamper.Close();
return output;

在上面的代码中,通过返回字节而不是memorystream来解决这个问题

.
.
.
.
pdfStamper.Close();
return output;

试着看看代码的特点:返回byte[]而不是disposed流(因为using语句)。返回输出.ToArray();试着看看代码的特点:返回byte[]而不是disposed流(因为using语句)。返回输出.ToArray();我有同样的问题,但我通过这个答案摆脱了。竖起大拇指,阿米尔。我有同样的问题,但我通过这个答案摆脱了。竖起大拇指,阿米尔