Use PdfCopy.

Paulo

________________________________
From: Mark Hall [EMAIL PROTECTED]
Sent: Thursday, November 13, 2008 4:06 PM
To: [email protected]
Subject: [iText-questions] Stamped objects in template falling off one merge

Hello
I’m using ITextSharp Version 4.0.8.0.  I create array of PDF Memory Streams and 
once complete merge them into one document with page number breaks on a master 
number.   I was asked to add a signature to one of the forms templates.  I did 
that using a transparent gif and the stamper tool in Adobe.  When I fill the 
form out with a PdfStamper the form looks great.  When I take that filled out 
form and merge it using the code below, the signature stamp disappears.

##Creation of document

        Dim memoryStream As New System.IO.MemoryStream
        Dim filename As String
        filename = Server.MapPath("../forms/SigForm001.pdf")
        Dim ds As DataSet
        Dim row As DataRow

        Dim drdReader As IDataReader
        Dim bllForms As New BLL.bllForms
        bllForms.GetDocumentData(drdReader, "1653254")
        Try
            Dim reader As New PdfReader(filename)
            Dim n As Integer = reader.NumberOfPages
drdReader.Read
            ' filling in the form
            Dim stamp1 As New PdfStamper(reader, memoryStream)
            Dim form1 As AcroFields = stamp1.AcroFields()
            With form1
                    .SetField("First_Name-Copy", drdReader.Item("FirstName"))
                    .SetField("First_Name-Org", drdReader.Item("FirstName"))
                    .SetField("Last_Name-Copy", drdReader.Item("LastName"))
                    .SetField("Last_Name-Org", drdReader.Item("LastName"))
            End With
            stamp1.FormFlattening = True
            stamp1.SetFullCompression()

            stamp1.Close()


          ArrayOfFiles(0) = memoryStream


At this point if I output the memory stream to a PDF it looks great.  The 
Signiture stamp is there and all the filed out fields.  I then call call 
MergeFiles to merge all the PDFs that need to be in the one document.


        Public Function MergeFiles(ByVal sourceFiles() As MemoryStream) As 
MemoryStream

            Dim memoryStream As New System.IO.MemoryStream

            Dim f As Integer = 0
            Dim reader As New PdfReader(New 
RandomAccessFileOrArray(sourceFiles(f).ToArray), Nothing)
            Dim n As Integer = reader.NumberOfPages
            Dim document As New document(reader.GetPageSizeWithRotation(1))
            Dim writer As PdfWriter = PdfWriter.GetInstance(document, 
memoryStream)
            document.Open()
            Dim cb As PdfContentByte = writer.DirectContent
            Dim page As PdfImportedPage
            Dim rotation As Integer
            While f < sourceFiles.Length
                Dim i As Integer = 0
                While i < n
                    i += 1
                    document.SetPageSize(reader.GetPageSizeWithRotation(i))
                    document.NewPage()
                    page = writer.GetImportedPage(reader, i)
                    rotation = reader.GetPageRotation(i)
                    If rotation = 90 Or rotation = 270 Then
                        cb.AddTemplate(page, 0, -1.0F, 1.0F, 0, 0, 
reader.GetPageSizeWithRotation(i).Height)
                    Else
                        cb.AddTemplate(page, 1.0F, 0, 0, 1.0F, 0, 0)
                    End If
                End While
                writer.FreeReader(reader)
                f += 1
                If f < sourceFiles.Length Then
                    If sourceFiles(f) Is Nothing Then Exit While
                    reader = New PdfReader(New 
RandomAccessFileOrArray(sourceFiles(f).ToArray), Nothing)
                    n = reader.NumberOfPages
                End If
                If f < sourceFiles.Length Then sourceFiles(f).Close()
            End While
            document.Close()
            Return memoryStream
        End Function 'MergeFiles

At this point the document loses the stamped signature.

Thanks in advance for any suggestions.

Cheers,
Mark


Aviso Legal:
Esta mensagem é destinada exclusivamente ao destinatário. Pode conter 
informação confidencial ou legalmente protegida. A incorrecta transmissão desta 
mensagem não significa a perca de confidencialidade. Se esta mensagem for 
recebida por engano, por favor envie-a de volta para o remetente e apague-a do 
seu sistema de imediato. É proibido a qualquer pessoa que não o destinatário de 
usar, revelar ou distribuir qualquer parte desta mensagem. 

Disclaimer:
This message is destined exclusively to the intended receiver. It may contain 
confidential or legally protected information. The incorrect transmission of 
this message does not mean the loss of its confidentiality. If this message is 
received by mistake, please send it back to the sender and delete it from your 
system immediately. It is forbidden to any person who is not the intended 
receiver to use, distribute or copy any part of this message.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
iText-questions mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/itext-questions

Buy the iText book: http://www.1t3xt.com/docs/book.php

Reply via email to