Add image to PDF with iTextSharp and VB.Net

PNRT
PNRT used Ask the Experts™
on
Hi Experts

I have the following code using iTextSharp.   It creates a barcode and inserts it into a PDF document created by iTextSharp

The code works correctly but only with newly created documents.   I need to be able to do the same thing but with an already existing PDF.   I have searched and found many examples but all assume a newly created document which doesn't help me.

Any assistance would be appreciated


        Dim Batch As String = "12345"

        'Define a new PDF Doc
        Dim doc As New Document(New iTextSharp.text.Rectangle(350, 400), 5, 5, 1, 1)  ''the size of the rectangle width x height

        Try
            Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream("C:\somepath\TestLabel.abc", FileMode.Create))
            doc.Open()

            Dim dt As New DataTable()
            dt.Columns.Add("Batch")
            Dim row As DataRow = dt.NewRow()
            row("Batch") = Batch.ToString    '& i.ToString()
            dt.Rows.Add(row)
          
            Dim img1 As System.Drawing.Image = Nothing
            For i As Integer = 0 To dt.Rows.Count - 1
                If i <> 0 Then
                    doc.NewPage()
                End If

                Dim cb As iTextSharp.text.pdf.PdfContentByte = writer.DirectContent
                Dim bc As iTextSharp.text.pdf.Barcode128 = New Barcode128() 
                bc.TextAlignment = Element.ALIGN_LEFT
                bc.Code = dt.Rows(i)("Batch").ToString()
                bc.StartStopText = False
                bc.CodeType = iTextSharp.text.pdf.Barcode128.EAN13
                bc.Extended = True

                Dim img As iTextSharp.text.Image = bc.CreateImageWithBarcode(cb, iTextSharp.text.Color.BLACK, iTextSharp.text.Color.BLACK)

                cb.SetTextMatrix(100.5F, 320.0F)
                img.ScaleToFit(240, 600)
                img.SetAbsolutePosition(5.5F, 320) 
                cb.AddImage(img)
            Next i

            doc.Close()

            Catch ex As Exception
                doc.Close()
                MsgBox(ex.ToString)
            End Try

Open in new window

Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Software Architect
Commented:
Hi PNRT, You can open existing PDF document by using the FileMode.Append instead of FileMode.Create. This shall open an existing PDF based on the path you have given, if that file does not exists it shall create a new one with FileMode as Append.
I tested with this change and it worked for me. However it overrides the previously draw bar code image at the same position.
if you want that every time the bar code image to be added to a new page then the above logic may need to be modified.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial