cjhaas.com Basically a place that Chris can post solutions to problems so he can easily find them later

September 3, 2011

#3 – VB.Net iTextSharp Tutorial – Add a scaled image to a document

Filed under: iTextSharp — Tags: — Chris Haas @ 9:43 am

This is part of a series of iTextSharp tutorials for VB 2010 Express. See this post for an overview and to answer any basic questions that you may have.

This post is a followup to the previous one, this time it scales the image based on the document’s size

Option Explicit On
Option Strict On

Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ''//The main folder that we are working in
        Dim WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

        ''//The file that we are creating
        Dim WorkingFile = Path.Combine(WorkingFolder, "Output.pdf")

        Dim SampleImage = Path.Combine(WorkingFolder, "IMG_5605.JPG")

        ''//Create our file with an exclusive writer lock
        Using FS As New FileStream(WorkingFile, FileMode.Create, FileAccess.Write, FileShare.None)
            ''//Create our PDF document
            Using Doc As New Document(PageSize.LETTER)
                ''//Bind our PDF object to the physical file using a PdfWriter
                Using Writer = PdfWriter.GetInstance(Doc, FS)
                    ''//Open our document for writing
                    Doc.Open()

                    ''//Insert a blank page
                    Doc.NewPage()

                    ''//Create a PDF image object from our physical image
                    Dim ThisImage = iTextSharp.text.Image.GetInstance(SampleImage)

                    ''//Use standard ratio resizing algorithms to calculate new image dimensions based on the documents dimensions. This will shrink or grow documents to fit

                    ''//Will hold our new image dimensions
                    ''//Documents sometimes have margins (and this sample does) so subtract them so that our image in centered in the page
                    Dim NewW, NewH As Single

                    NewW = Doc.PageSize.Width - (Doc.LeftMargin + Doc.RightMargin)
                    NewH = Doc.PageSize.Height - (Doc.TopMargin + Doc.BottomMargin)

                    ''//Scale the image
                    ThisImage.ScaleToFit(NewW, NewH)

                    ''//Add the image to the document
                    Doc.Add(ThisImage)

                    ''//Close our document
                    Doc.Close()
                End Using
            End Using
        End Using

        Me.Close()
    End Sub
End Class

#2 – VB.Net iTextSharp Tutorial – Add an image to a document

Filed under: iTextSharp — Tags: — Chris Haas @ 9:17 am

This is part of a series of iTextSharp tutorials for VB 2010 Express. See this post for an overview and to answer any basic questions that you may have.

Option Explicit On
Option Strict On

Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ''//The main folder that we are working in
        Dim WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

        ''//The file that we are creating
        Dim WorkingFile = Path.Combine(WorkingFolder, "Output.pdf")

        Dim SampleImage = Path.Combine(WorkingFolder, "IMG_0259.JPG")

        ''//Create our file with an exclusive writer lock
        Using FS As New FileStream(WorkingFile, FileMode.Create, FileAccess.Write, FileShare.None)
            ''//Create our PDF document
            Using Doc As New Document(PageSize.LETTER)
                ''//Bind our PDF object to the physical file using a PdfWriter
                Using Writer = PdfWriter.GetInstance(Doc, FS)
                    ''//Open our document for writing
                    Doc.Open()

                    ''//Insert a blank page
                    Doc.NewPage()

                    ''//Add an image to a document. This does not scale the image or anything so if your image is large it might go off the canvas
                    Doc.Add(iTextSharp.text.Image.GetInstance(SampleImage))

                    ''//Close our document
                    Doc.Close()
                End Using
            End Using
        End Using

        Me.Close()
    End Sub
End Class

#1 – VB.Net iTextSharp Tutorial – Hello World

Filed under: iTextSharp — Tags: — Chris Haas @ 9:09 am

This is the first in the series of iTextSharp tutorials for VB 2010 Express. See this post for an overview and to answer any basic questions that you may have.

This is the starter, the “hello world” program done in VB.Net. The comments in the code should hopefully be enough to explain what’s going on, but after running (and it should run fast, just opens and closes), you should have a PDF on your desktop called “Output.pdf”

Option Explicit On
Option Strict On

Imports System.IO
Imports iTextSharp.text
Imports iTextSharp.text.pdf

Public Class Form1
    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        ''//The main folder that we are working in
        Dim WorkingFolder = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)

        ''//The file that we are creating
        Dim WorkingFile = Path.Combine(WorkingFolder, "Output.pdf")

        ''//Create our file with an exclusive writer lock
        Using FS As New FileStream(WorkingFile, FileMode.Create, FileAccess.Write, FileShare.None)
            ''//Create our PDF document
            Using Doc As New Document(PageSize.LETTER)
                ''//Bind our PDF object to the physical file using a PdfWriter
                Using Writer = PdfWriter.GetInstance(Doc, FS)
                    ''//Open our document for writing
                    Doc.Open()

                    ''//Insert a blank page
                    Doc.NewPage()

                    ''//Add a simple paragraph with text
                    Doc.Add(New Paragraph("Hello World"))

                    ''//Close our document
                    Doc.Close()
                End Using
            End Using
        End Using

        Me.Close()
    End Sub
End Class

VB.Net tutorial for iTextSharp

Filed under: iTextSharp — Tags: — Chris Haas @ 8:38 am

iTextSharp is a great open source PDF creation and manipulation library and is a port of the original Java version iText. Unfortunately I’ve found the documentation and samples lacking, especially for VB.Net. The only good collection of tutorials that I’ve found was written by Mike Brind. While they were a great start for me, they targeted the 4.x series and were written in C#.The tutorials are fairly easy to upgrade and convert to VB.Net but I wanted to have my own collection. So stay tuned to this post for what I hope will be several iTextSharp tutorials.

A couple of things about the tutorials themselves.:

  • All will be written targetting iTextSharp 5.1.1.0 unless otherwise noted.
  • All will be written using Visual Basic 2010 Express
  • My comments are written a little weird, they all start with ”//. This is because StackOverflow’s (SO) HTML code highlighting system seems to break when using VB comments. So I “open and close” and VB comment and then start a C-style comment which seems to work best. One other problem I’ve had with SO is that apostrophes seem to mess up highlighting in comments, so you’ll usually see me say “do not” instead of “don’t” or “the objects properties” instead of “the object’s properties”.
  • All code samples are complete WinForms apps unless otherwise noted. This means that you should be able to launch VB Express 2010, create a new Windows Forms Application, add a reference to iTextSharp, switch to the code-behind on the form and paste the entire portion of my code on top of the existing code and it will work for you. The only modifications needed might be variables pointing to specific files and those will be called out at the top. If you hunt-and-peck at my code and it doesn’t work for you, don’t complain right away. Start with my exact base and modify bits at a time.
  • The reason I use WinForms apps for samples over Console Apps is because I occassionally need System.Drawing. While you can definately use System.Drawing with a Console App, this route makes copy and pasting of code easier.
  • If you have a question about a specific tutorial, feel free to post a comment. If a tutorial is about XYZ and you want to know ABC, feel free to also post a comment but don’t expect an immediate answer. I might eventually get around to it but there’s no guarantee. Instead, also post your question on StackOverflow. Feel free to cite my tutorial as a reference.
  • If you find a tutorial helpful I really do enjoy feedback!
  • All code that I post here is free for you to use as far as I’m concerned. For licensing of iTextSharp itself please contact iText. I in no way represent them, work for them or anything. I just like their product.
  • Some or all examples will execute code directly in Form1_Load. Because of this you’ll often see a Me.Close() at the end of the code. Because this is all sample code this is just so that I don’t need to close an empty form every time.
  1. VB.Net iTextSharp Tutorial – Hello World
  2. VB.Net iTextSharp Tutorial – Add an image to a document
  3. VB.Net iTextSharp Tutorial – Add a scaled image to a document

Powered by WordPress