Here, our code creates objects to request the data from the Web, setting the
absolute server timeout. If the machine responds within the given timeframe, the
response is fed into a stream, converted into the UTF8 text format we all under-
stand, and then passed back as the result of the function. You can use it a little 
like this:
strHTML = GetPageHTML("http://www.karlmoore.com/", 5)
Admittedly, this all seems like a lot of work just to add a timeout. But it does its
job—and well. Enjoy!
TOP TIP Remember,the timeout we’ve added is for our request to be acknowl-
edged by the server,rather than for the full HTML to have been received.
Tricks of Parsing a Web Page for Links and Images
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—Parse Links and Images” folder.
So, you’ve retrieved the HTML of that Web page and now need to parse out all the
links to use in your research database. Or maybe you’ve visited the page and want
to make a note of all the image links, so you can download at some later point.
Well, you have two options. You can write your own parsing algorithm, con-
sisting of ten million InStr and Midstatements. They’re often slow and frequently
buggy, but they’re a truly great challenge (always my favorite routines to write).
Alternatively, you can write a regular expression in VB .NET. This is where you
provide an “expression” that describes how a link looks and what portion you want
to retrieve (that is, the bit after <a href=" but before the next " for a hyperlink).
Then you run the expression and retrieve matches. The problem with these is that
they’re difficult to formulate. (See Chapter 8, “The Hidden .NET Language” for
more information.)
So, why not cheat? Following you’ll find two neat little functions I’ve already
put together using regular expressions. Just pass in the HTML from your Web page,
and it’ll return an ArrayList object containing the link/image matches:
Public Function ParseLinks(ByVal HTML As String) As ArrayList
' Remember to add the following at top of class:
' - Imports System.Text.RegularExpressions
Dim objRegEx As System.Text.RegularExpressions.Regex
More .NET Secrets
229
Pdf form save - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
add an image to a pdf form; add image field to pdf form
Pdf form save - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
chrome save pdf form; adding text to a pdf form
Dim objMatch As System.Text.RegularExpressions.Match
Dim arrLinks As New System.Collections.ArrayList()
' Create regular expression
objRegEx = New System.Text.RegularExpressions.Regex( _
"a.*href\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", _
System.Text.RegularExpressions.RegexOptions.IgnoreCase Or _
System.Text.RegularExpressions.RegexOptions.Compiled)
' Match expression to HTML
objMatch = objRegEx.Match(HTML)
' Loop through matches and add <1> to ArrayList
While objMatch.Success
Dim strMatch As String
strMatch = objMatch.Groups(1).ToString
arrLinks.Add(strMatch)
objMatch = objMatch.NextMatch()
End While
' Pass back results
Return arrLinks
End Function
Public Function ParseImages(ByVal HTML As String) As ArrayList
' Remember to add the following at top of class:
' - Imports System.Text.RegularExpressions
Dim objRegEx As System.Text.RegularExpressions.Regex
Dim objMatch As System.Text.RegularExpressions.Match
Dim arrLinks As New System.Collections.ArrayList()
' Create regular expression
objRegEx = New System.Text.RegularExpressions.Regex( _
"img.*src\s*=\s*(?:""(?<1>[^""]*)""|(?<1>\S+))", _
System.Text.RegularExpressions.RegexOptions.IgnoreCase Or _
System.Text.RegularExpressions.RegexOptions.Compiled)
' Match expression to HTML
objMatch = objRegEx.Match(HTML)
' Loop through matches and add <1> to ArrayList
While objMatch.Success
Dim strMatch As String
strMatch = objMatch.Groups(1).ToString
arrLinks.Add(strMatch)
objMatch = objMatch.NextMatch()
End While
' Pass back results
Return arrLinks
End Function
Chapter 7
230
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to the end of another and save to a single PDF file.
cannot edit pdf form; adding form fields to pdf files
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
to extract single or multiple pages from adobe PDF file and save into a The portable document format, known as PDF document, is a widely-used form of file
add form fields to pdf without acrobat; can reader edit pdf forms
Here’s a simplified example using the ParseLinks routine. The ParseImages
routine works in exactly the same way:
Dim arrLinks As ArrayList = ParseLinks( _
"<a href=""http://www.marksandler.com/"">" & _
"Visit MarkSandler.com</a>")
' Loop through results
Dim shtCount As Integer
For shtCount = 0 To arrLinks.Count - 1
MessageBox.Show(arrLinks(shtCount).ToString)
Next
One word of warning: many Web sites use relative links. In other words, an
image may refer to /images/mypic.gif rather than
http://www.mysite.com/images/mypic.gif. You may wish to check for this in code
(perhaps look for the existence of “http”)—if the prefix isn’t there, add it program-
matically.
And that’s all you need to know to successfully strip links and images out of
any HTML. Best wishes!
Converting HTML to Text, Easily
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—HTML to Text” folder.
Whether you want to convert an HTML page into pure text so you can parse out
that special piece of information, or you simply want to load a page from the Net
into your own word processing package, this mini function could come in handy.
It’s called StripTags and accepts an HTML string. Using a regular expression, it
identifies all <tags>, removes them, and returns the modified string. Here’s the code:
Public Function StripTags(ByVal HTML As String) As String
' Removes tags from passed HTML
Dim objRegEx As _
System.Text.RegularExpressions.Regex
Return objRegEx.Replace(HTML, "<[^>]*>", "")
End Function
More .NET Secrets
231
VB.NET Image: How to Save Image & Print Image Using VB.NET
printing multi-page document files, like PDF and Word is used to illustrate how to save a sample RE__Test Public Partial Class Form1 Inherits Form Public Sub New
add fillable fields to pdf online; change pdf to fillable form
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
this RasterEdge XDoc.PDF SDK, you can simply delete a single page from a PDF document using VB.NET or remove any page from a PDF document and save to local
create a pdf form; change font pdf fillable form
Here’s a simple example demonstrating how you could use this function in
code (see Figure 7-2 for my sample application):
strData = StripTags("<body><b>Welcome!</b></body>")
I admit, it doesn’t look like much, but this little snippet can be a true lifesaver,
especially if you’ve ever tried doing it yourself using Instrand Mid statements.
Have fun!
Figure 7-2. My sample application, retrieving HTML from www.bbc.co.uk, then con-
verting it to text
Real Code for Posting Data to the Web
One of my early tasks when working with .NET was figuring out how to take a
stream of data (in my case, an XML document) and post it to a CGI script, in code.
It wasn’t easy. I ended up with two pages of code incorporating practically
every Internet-related class in the .NET Framework. Months later now, and I’ve
managed to refine this posting technique to just a few generic lines of code. And
that’s what I’d like to share with you in this tip.
Chapter 7
232
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it into stream. Parameters: zoomValue, The magnification of the original PDF page size.
change text size pdf form; create a pdf form online
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Description: Convert to PDF and save it on the disk. Parameters: Name, Description, Valid Value. Description: Convert to PDF and save it into stream. Parameters:
add text fields to pdf; adding a text field to a pdf
The following chunk of code starts by creating a WebClient object and setting a
number of headers (which you can change as appropriate). It then converts my
string (MyData) into an array of bytes, and then uploads direct to the specified
URL. The server response to this upload is then converted into a string, which
you’ll probably want to analyze for possible success or error messages.
' Setup WebClient object
Dim objWebClient As New System.Net.WebClient()
' Convert data to send into an array of bytes
Dim bytData As Byte() = System.Text.Encoding.ASCII.GetBytes(MyData)
' Add appropriate headers
With objWebClient.Headers
.Add("Content-Type", "text/xml")
.Add("Authorization", "Basic " & _
Convert.ToBase64String( _
System.Text.Encoding.ASCII.GetBytes( _
"MyUsername:MyPassword")))
End With
' Upload data to page (CGI script, or whatever) and receive response
Dim objResponse As Byte() = objWebClient.UploadData( _
"http://www.examplesite.com/clients/upload.cgi", _
"POST", bytData)
' Convert response to a string
Dim strResponse As String = _
System.Text.Encoding.ASCII.GetString(objResponse)
' Check response for data, errors, etc...
I initially used this code to submit details of new store locations automatically
to mapping solution provider Multimap.com. It accessed the destination CGI
script, providing all necessary credentials, streamed my own XML document
across the wire, and then checked the XML response for any errors.
A few pointers here. Firstly, you can easily remove the “Authorization” header.
This was included to demonstrate how you can upload to a protected source—
which, although a common request, is not everyone’s cup of tea. Secondly, the
content type here is set to “text/xml”. You can change this to whatever content
type you deem fit—“text/html” for example, or perhaps “application/x-www-
form-urlencoded” if you want to make the post look as though it were coming
from a Web form. Finally, you don’t always have to upload pure data like this; 
More .NET Secrets
233
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
change font size in pdf form; best program to create pdf forms
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
add fields to pdf form; pdf form change font size
you can also upload files with the .UploadFile function, or simulate a true form
post, by submitting key pairs (such as text box names and related values) with 
the .UploadValues function.
Adding a Web Shortcut to the Favorites
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—Adding Favorites” folder.
This is one of those cute little code snippets that you have a use for in practically
every application. Applications that can do this look cool and intelligent—and it
takes just a few simple lines of code. I’m talking about adding an Internet shortcut
to the user’s Favorites menu.
How do you do it? Well, the following function encompasses all the logic for
you. It accepts a page title and a URL. Then it locates the current Favorites folder
(which could vary greatly depending on the machine setup) and creates a URL 
file in that folder, based on the title you passed. Inside that file, it includes a little
required text for an Internet shortcut, alongside your URL. And that’s it—shortcut
created!
Here’s the code:
Public Sub CreateShortcut(ByVal Title As String, ByVal URL As String)
' Creates a shortcut in the users Favorites folder
Dim strFavoriteFolder As String
' Retrieve the favorite folder
strFavoriteFolder = System.Environment.GetFolderPath( _
Environment.SpecialFolder.Favorites)
' Create shortcut file, based on Title
Dim objWriter As System.IO.StreamWriter = _
System.IO.File.CreateText(strFavoriteFolder & _
"\" & Title & ".url")
' Write URL to file
objWriter.WriteLine("[InternetShortcut]")
objWriter.WriteLine("URL=" & URL)
' Close file
objWriter.Close()
End Sub
Chapter 7
234
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
create a fillable pdf form; add text field to pdf acrobat
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
can save pdf form data; add photo to pdf form
To finish off this snippet, here are a couple of interesting calls to this 
procedure (see Figure 7-3 to see the created shortcuts in Internet Explorer):
CreateShortcut("Karl Moore.com", "http://www.karlmoore.com/")
CreateShortcut("Send mail to Karl Moore", "mailto:karl@karlmoore.com")
Figure 7-3. A couple of plug-plug Internet shortcuts added by my sample code
Retrieving Your IP Address—And Why You May Want To
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—IP” folder.
You may want to discover the IP address of your local machine for a number of
reasons. You may, for example, be developing a messaging-style application using
the .NET equivalent of the Winsock control—the Socket class (look up “Socket
class” in the help index) and need to register the local IP in a central database
somewhere.
More .NET Secrets
235
So, how can you find out your IP address? The code is easy:
Dim objEntry As System.Net.IPHostEntry = _
System.Net.Dns.GetHostByName( _
System.Net.Dns.GetHostName)
Dim strIP As String = CType( _
objEntry.AddressList.GetValue(0), _
System.Net.IPAddress).ToString
Here, we pass our machine name to the GetHostByNamefunction, which returns
a valid IPHostEntryobject. We then retrieve the first IP address from the entry
AddressListarray and convert it to a string. Simple!
Is an Internet Connection Available?
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—IsConnectionAvailable” folder.
Checking whether an Internet connection is available isn’t always as easy as it
sounds.
Admittedly, there is a Windows API call that can check whether a connection
exists, but it’s extremely fragile and returns incorrect results if the machine has
never had Internet Explorer configured correctly. Oops.
The best method is to actually make a Web request and see whether it works.
If it does, you’ve got your connection. The following neat code snippet does
exactly that. Just call IsConnectionAvailable and check the return value:
Public Function IsConnectionAvailable() As Boolean
' Returns True if connection is available
' Replace www.yoursite.com with a site that
' is guaranteed to be online - perhaps your 
' corporate site, or microsoft.com
Dim objUrl As New System.Uri("http://www.yoursite.com/")
' Setup WebRequest
Dim objWebReq As System.Net.WebRequest
objWebReq = System.Net.WebRequest.Create(objUrl)
Dim objResp As System.Net.WebResponse
Try
' Attempt to get response and return True
Chapter 7
236
objResp = objWebReq.GetResponse
objResp.Close()
objWebReq = Nothing
Return True
Catch ex As Exception
' Error, exit and return False
objResp.Close()
objWebReq = Nothing
Return False
End Try
Here’s how you might use this function in your application:
If IsConnectionAvailable() = True Then
MessageBox.Show("You are online!")
End If
Manipulating Files and Folders
Wanting to “watch” a directory for file changes? Or find out the .NET replacement
for App.Path? Or uncover how big that file is... in English? If you’re looking for the
best file and folder techniques for your VB .NET applications, simply read on.
Two Easy-to-Use Functions for Reading and 
Writing Files
Download supporting files at www.apress.com. 
The files for this tip are in the “Ch7—Read and Write Files” folder.
Reading and writing to simple text files is perhaps one of the most common tasks
in the programming world. The old VB6 way of doing this is now defunct, and a
new .NET method is here, involving objects within the System.IO namespace.
The following functions help simplify the process of reading and writing to
files. The first is called ReadTextFromFile and accepts a filename as a parameter. It
returns the text from the specified file:
Public Function ReadTextFromFile(ByVal Filename As String) As String
' Returns text from the specified file
On Error Resume Next
Dim strFileText As String
More .NET Secrets
237
' Open the file and launch StreamReader object
Dim MyReader As System.IO.StreamReader = _
System.IO.File.OpenText(Filename)
' Read all text through to the end
strFileText = MyReader.ReadToEnd
' Close the stream
MyReader.Close()
' Return data
Return strFileText
End Function
The second code snippet is a method called WriteTextToFile, and it accepts a
filename and the text to write as parameters:
Public Sub WriteTextToFile(ByVal Filename As String, ByVal Text As String)
' Writes the passed Text into the specified file
' Create file and StreamWriter object
Dim MyWriter As System.IO.StreamWriter = _
System.IO.File.CreateText(Filename)
' Write text to the stream
MyWriter.Write(Text)
' Close the stream
MyWriter.Close()
End Sub
Here is an example of each of these code snippets in action:
WriteTextToFile("c:\myfile.txt", TextBox1.Text)
MessageBox.Show(ReadTextFromFile("c:\myfile.txt"))
Files: Moving, Deleting, Attributes, and More!
If you’re looking to manipulate files using the .NET Framework base classes, you
should be heading to the System.IO.File class, where you’ll find functions to delete
files, copy files, check file attributes, and much more.
Here is a commented example demonstrating the most common uses of the
Fileclass:
Chapter 7
238
Documents you may be interested
Documents you may be interested