I am trying to create a watermark before displaying the pdf in IE. SQL Server reporting services currently gives me a byte array and I use Response.BinaryWrite to open the result as a pdf in the browser. Before I do Response.BinaryWrite I want to modify the byte array so it has a watermark and then display it. Can someone give me sample code to do this?
Are you getting Pdf stream from SQL Server Reporting Services, if yes then just get that byte Array and convert it to Memory Stream and then by using Aspose.Pdf.Kit you can add Watermark. After then you need to send that OutStream to Web Page. Please refer to following code to add Watermark.
[C#]
PdfFileStamp stamp = new PdfFileStamp(innerStream,outputStream); stamp.AddWatermark(imageFile,10,10); outputStream.Close(); innerStream.Close();
Thank you for the response. Yes my Pdf stream is from Reporting Services. I get it as a byte array and converted it to a stream and did what you suggested. However the outputstream is always empty. What am I doing wrong?
Public Function Test(ByVal arrBytes() As Byte) As Byte()
Dim msInputStream As MemoryStream = New MemoryStream(arrBytes, True)
Dim msOutputStream As MemoryStream = New MemoryStream()
Try
Dim stamper As PdfFileStamp = New PdfFileStamp(msInputStream, msOutputStream)
Dim stamp As Stamp = New Stamp()
stamp.BindLogo(New FormattedText("This is a test"))
stamp.IsBackground = False
stamp.Rotation = 30
stamp.SetOrigin(100, 100)
stamper.AddStamp(stamp)
arrBytes = GetStreamAsByteArray(msOutputStream)
msInputStream.Close()
msOutputStream.Close()
stamper.Close()
Catch ex As Exception
Console.WriteLine(ex.Message)
End Try
Return arrBytes
End Function
Private Function GetStreamAsByteArray(ByVal stream As System.IO.Stream) As Byte()
Dim streamLength As Integer = Convert.ToInt32(stream.Length)
Dim fileData As Byte() = New Byte(streamLength) {}
I am sorry for my mistake, it should have to be AddStamp(). About the other problem, please first try to save that Byte Array in some file and give it’s Extension “pdf” and try to open that file manually with Adobe Reader. If it is opened fine then it means that the stream is of pdf stream type and send us that pdf file so that we should investigate this issue. But if the file after saving on the disk can’t be open in Adobe Reader then you can’t stamped that stream using Aspose.Pdf.Kit because the byteArray wasn’t of type Pdf. So, please check it and let us know about it.
Please send us the pdf file that you are trying to stamp as well as the code that you are using so that we can check this out. Please ensure that you are using the latest version.
I am trying to use an evaluation copy to test watermark creation and I am facing the same issue. I have created a pdf and saved it to a memory stream. When I render it to the browser (or save it as a file) it works. But if I try to add a watermark to the memorystream, it fails. Can you please let me know if you got a solution for this?
Here is the sample code I tried. I have been able to adda text watermark using FloatingBox. The FileInfo and PdfFileStamp object I have used are giving me errors with the memorystream.