pdf reader in asp.net c# : Erase text from pdf control application system web page azure wpf console Milos_DocumentManagement_DownloadFileAttachment2-part819

21
www.cod
e
-m
a
g
a
z
in
e
.com
Liv
e
from th
e
W
e
b! Bring th
e
Windows Liv
e
M
e
ss
e
ng
e
E
xp
e
ri
e
nc
e
to Your W
e
b Applic
a
tions
foreach (Group g in userAccount.Groups){
foreach (Contact c in g.Contacts)
{
if (c.IsAllowed)
{…} 
}
}
Each ContactCollection contains a list of Contact in-
stances that contain details about each contact. This 
information  is  useful  for  presenting  the  signed-in 
user’s contacts in the UI for them to interact with.
Lis
t
i
n
g
4 shows you how to present a list of con-
tacts to the user after they sign in, organizing the 
list by group. In the SignInCompleted event, if sign 
in is successful, listContacts() is called to traverse 
the contacts within each group. The contact collec-
tion for the user and the list of contact IMAddress 
instances are saved for later use at the client. Then, 
the contact collection for each group is traversed—
building an <a> element showing the address of the 
contact:
<a href='javascript:MyMessengerScriptLibrary.
ContactsByGroup.showContactDetails([contactIndex])
'>[contactAddress]</a>
The result is a list of links on the page that show 
the  contacts  within  their  group  heading.  When  a 
user clicks the contact link, showContactDetails() is 
called passing the index of the contact to display their 
details in the page. The information displayed about 
the selected contact includes the following proper-
ties  of  the Contact  class:  Presence.DisplayName, 
namespace MyMessengerScriptLibrary
{
public class AccountDetails
{
private static SignInControl signinControl;
private static User userAccount;
public static void authenticateUser()
{
signinControl = new SignInControl("divSignIn", 
"http://.../PrivacyPolicy.htm", 
"http://.../Channel.htm", "");
signinControl.AuthenticationCompleted += new 
AuthenticationCompletedEventHandler(
signinControl_AuthenticationCompleted);
}
static void signinControl_AuthenticationCompleted(object 
sender, AuthenticationCompletedEventArgs e)
 {
userAccount = new User(e.Identity);
     userAccount.SignInCompleted += new 
SignInCompletedEventHandler(userAccount_SignInCompleted);
userAccount.SignIn(null);
}
static void userAccount_SignInCompleted(object sender, 
SignInCompletedEventArgs e)
{
if (e.ResultCode == SignInResultCode.Success)
displayAccountDetails();
}
public static void displayAccountDetails()
{
StringBuilder sb = new StringBuilder();
sb.Append("<h1>Account Info</h1>");
sb.Append("DisplayName: ");
sb.Append(userAccount.Address.Presence.DisplayName);
sb.Append("<br/>");
sb.Append("DisplayPictureUrl: ");
sb.Append(userAccount.Presence.DisplayPictureUrl.ToString());
sb.Append("<br/>");
sb.Append("PersonalMessage: ");
sb.Append(userAccount.Address.Presence.PersonalMessage);
sb.Append("<br/>");
sb.Append("Address: ");
sb.Append(userAccount.Address.Address);
sb.Append("<br/>");
sb.Append("LiveId: ");
sb.Append(userAccount.Identity.LiveId);
sb.Append("<br/>");
sb.Append("Status: ");
sb.Append(userAccount.Address.Presence.Status.ToString());
sb.Append("<br/>");
Document.GetElementById("divWelcome").InnerHTML = 
sb.ToString();
}
}
}
Li
s
ting 3: 
C
# cod
e
illustr
a
ting how to cr
e
a
t
e
th
e
SignIn
C
ontrol, h
a
ndl
e
a
uth
e
ntic
a
tion, 
a
nd 
a
cc
e
ss us
e
a
ccount d
e
t
a
ils.
Presence.PersonalMessage, 
Presence.IMAddress.
Address, Presence.Status, IsAllowed, and IsBlocked.
You can use the collection to produce a contact list 
for the signed-in user to communicate with directly 
from the browser. You can fi lter this list to organize 
by groups, include only unblocked contacts, or even 
to produce UI to toggle contact properties, such as 
unblocking or blocking contacts  using the Allow() 
and Block() functions (respectively) exposed by the 
Contact class. You can also provide messaging fea-
tures for the  signed-in  user so  they  can  exchange 
messages  with  their  online contacts.  Beyond  mes-
senger-like functionality, your Web applications can 
also provide other unique ways for signed-in users to 
interact with their contact list, such as inviting them 
to join the application or sending them a link to the 
content they are  browsing. In  this  respect,  you’ve 
created an instant social network for the user within 
the context of your Web application.
T
he Art of 
C
onversation: Sending and 
R
eceiving 
Messages
Providing users with a way to send and receive mes-
sages is one of the primary features exposed by the 
Messenger Library. To send messages to a contact pro-
grammatically, you must have access to the signed-in 
User instance and a reference to the IMAddress of the 
contact to whom the message will be sent. The Con-
versation class provides functionality to create a new 
conversation and subsequently interact with that con-
versation by sending messages, handling received mes-
Erase text from pdf - delete, remove text from PDF file in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Allow C# developers to use mature APIs to delete and remove text content from PDF document
erase text from pdf; how to delete text from pdf with acrobat
Erase text from pdf - VB.NET PDF delete text library: delete, remove text from PDF file in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
VB.NET Programming Guide to Delete Text from PDF File
how to remove text watermark from pdf; how to erase text in pdf
22
www.cod
e
-m
a
g
a
z
in
e
.com
Liv
e
from th
e
W
e
b! Bring th
e
Windows Liv
e
M
e
ss
e
ng
e
E
xp
e
ri
e
nc
e
to Your W
e
b Applic
a
tions
You can Close() a conversation instance to free the 
resource after sending a message or create a new con-
versation for subsequent messages. However, if you 
save a reference to the Conversation instance, you 
can send and receive messages as part of the same 
conversation for the user session. Furthermore, you 
can invite other contacts to join the conversation by 
calling the InviteAddress() function exposed by the 
Conversation class. Assuming that you have a refer-
ence to the active conversation instance, the follow-
ing code  checks  the participant list via the  Roster 
property to verify if the invitee is already in the con-
versation. If not, InviteAddress() sends an invitation 
to this address:
Conversation conv = null;
if (activeConversation !=null)
{
conv = activeConversation;
foreach (IMAddress a in 
activeConversation.Roster)
{
if (a.Address == address.Address)
conv = null;
}
}
if (conv != null)
conv.InviteAddress(address, null);
Of course participants using the messenger client ap-
plication  may also invite additional participants. If 
you are presenting a list of participants to the user, 
you’ll need to know when they add or remove new 
participants. The Roster property of the conversation 
instance tracks  these  changes.  You  can  handle the 
CollectionChanged event of the Roster as follows:
conv.Roster.CollectionChanged += new 
NotifyCollectionChangedEventHandler(
Roster_CollectionChanged);
In  the  event  handler, you  can iterate  through  the 
Roster collection and present the current conversa-
tion participants. Likewise, the conversation instance 
exposes a History property that you can monitor for 
changes. The History property holds the collection of 
messages in the conversation and you can use it to 
display or save conversations.
CAUTION:
While
you
should
always
t
es
t
and
p
r
o-
t
ec
t
agains
t
C
r
oss-Si
t
e
Sc
r
ip
t
ing
(XSS)
a
t
t
acks,
t
he
need
fo
r
secu
r
e
code
is
heigh
t
ened
fo
r
scena
r
ios
like
t
hose
discussed
in
t
his
a
r
t
icle
since
t
he
Windows
Live
Messenge
r
Lib
r
a
r
y
is
accessed
via
JavaSc
r
ip
t
.
Fo
r
mo
r
e
info
r
ma
t
ion
on
p
r
o
t
ec
t
ing
agains
t
XSS
see
t
he
following
r
esou
r
ces:
http://
s
ear
c
h.mi
c
ro
s
oft.
c
om/re-
s
ult
s
.a
s
p
x
?m
k
t=en-US&
s
etlang=en-US&q=XSS.
The
code
sample
fo
r
t
his
a
r
t
icle
will
also
include
app
r
op
r
ia
t
e
measu
r
es
t
o
p
r
o
t
ec
t
agains
t
XSS,
so
be
su
r
e
t
o
no
t
e
t
hose
r
ecommenda
t
ions.
C
onc
l
us
i
on
Unlike the simplicity of the Windows Live Messenger 
IM Control and Windows Live Messenger Presence 
API, the Windows Live Messenger Library provides 
sages, adding contacts to the conversation for multiple 
party conversations, and other related features.
If you provide a user interface with a list of contacts 
and maintain a reference to the signed-in user and 
contact  list as shown in Lis
t
ing
4—your JavaScript 
functions will be able to access those references. The 
following code assumes the user invokes a function 
that passes an index for the correct contact to send a 
message to. The User instance is used to create a Con-
versation instance with a particular contact by calling 
Create() on the Conversations collection for the user. 
A text message is subsequently sent by calling Send-
Message() on the new Conversation instance:
IMAddress address = addressList[index];
Contact contact = 
contactList.FindByAddress(address);
Conversation conv = userAccount.Conversations.
Create(contact.CurrentAddress);
conv.SendMessageFailed += new 
SendMessageFailedEventHandler(
conv_SendMessageFailed);
conv.SendMessage(
new TextMessage("test message", null), null);
The message is sent to the Windows Live account as-
sociated with the IM Address—and if they are signed 
in to the messenger client, a new conversation win-
dow will appear with the message. If you handle the 
SendMessageFailedEventHandler,  you  will  be  in-
formed of any failed deliveries so you can present this 
information to the user.
SendMessage() supports three different types of mes-
sages—TextMessage, NudgeMessage, and Application-
Message—the latter of which provides an extensibility 
point for custom messages. You can send a nudge to 
the participants of a conversation as follows:
conv.SendMessage(new NudgeMessage(), null);
Messages  sent  from  a  messenger-enabled  Web  ap-
plication will be  sent to  the  messenger  application 
where the user is signed in. They, in turn, will likely 
send  messages back.  In order to  retrieve messages 
sent by conversation participants you must hook the 
MessageReceivedEventHandler of the Conversation 
class after creating the conversation:
Conversation conv = userAccount.Conversations.
Create(contact.CurrentAddress);
conv.MessageReceived += new 
MessageReceivedEventHandler(conv_MessageReceived);
When messages  are  received,  the event  handler  is 
passed a parameter, MessageReceivedEventArgs, that 
provides access to the Message object. Message is the 
base type  for all message types including TextMes-
sage and NudgeMessage. You can detect which type 
of message it is through the Type property and, sub-
sequently, cast to the correct type to gather necessary 
information about the message to present to the user. 
Lis
t
ing
5 illustrates this.
C# PDF Text Redact Library: select, redact text content from PDF
Free online C# source code to erase text from adobe PDF file in Visual Studio. How to Use C# Code to Erase PDF Text in C#.NET. Add necessary references:
delete text from pdf file; how to delete text in pdf preview
C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
Draw PDF markups. PDF Protection. • Sign PDF document with signature. • Erase PDF text. • Erase PDF images. • Erase PDF pages. Miscellaneous.
delete text from pdf; delete text pdf acrobat
23
www.cod
e
-m
a
g
a
z
in
e
.com
private static User userAccount;
private static IMAddress[] addressList;
private static ContactCollection contactList;
static void userAccount_SignInCompleted(object sender, 
SignInCompletedEventArgs e)
{
if (e.ResultCode == SignInResultCode.Success)
{
listContacts();
}
}
public static void listContacts()
{
StringBuilder sb = new StringBuilder();
int index = 0;
contactList = userAccount.Contacts;
addressList = new IMAddress[userAccount.Contacts.Count];
foreach (Group g in userAccount.Groups)
{
sb.Append("<h1>");
sb.Append(g.Name);
sb.Append("</h1>");
foreach (Contact c in g.Contacts)
{
IMAddress address = c.CurrentAddress;
addressList[index] = address;
s
b
.
A
p
p
e
n
d
(
"
<
a
h
r
e
f
=
'
j
a
v
a
s
c
r
i
p
t
:
M
y
M
e
s
s
e
n
g
e
r
S
c
r
i
p
t
L
i
b
r
a
r
y
.
C
o
n
t
a
c
t
s
B
y
G
r
o
u
p
.
showContactDetails(" + index + ")'>" + 
c.CurrentAddress.Address + "</a><br />");
index++;
}
}
Document.GetElementById("divContactList").InnerHTML += 
sb.ToString();
}
public static void showContactDetails(int index)
{
IMAddress address = addressList[index];
Contact c = contactList.FindByAddress(address);
StringBuilder sb = new StringBuilder();
sb.Append("<h1>");
sb.Append(address.Address);
sb.Append("</h1>");
sb.Append("DisplayName: ");
sb.Append(address.Presence.DisplayName);
sb.Append("<br/>");
sb.Append("PersonalMessage: ");
sb.Append(address.Presence.PersonalMessage);
sb.Append("<br/>");
sb.Append("Address: ");
sb.Append(address.Presence.IMAddress.Address);
sb.Append("<br/>");
sb.Append("Status: ");
sb.Append(address.Presence.Status.ToString());
sb.Append("<br/>");
sb.Append("<b>Contact</b><br/>");
sb.Append("IsAllowed: ");
sb.Append(c.IsAllowed.ToString());
sb.Append("<br/>");
sb.Append("IsBlocked: ");
sb.Append(c.IsBlocked.ToString());
sb.Append("<br/>");
Document.GetElementById("divSelectedContact").InnerHTML += 
sb.ToString();
}
Li
s
ting 4: Listing cont
a
cts by group 
a
nd displ
a
ying cont
a
ct d
e
t
a
ils.
Liv
e
from th
e
W
e
b! Bring th
e
Windows Liv
e
M
e
ss
e
ng
e
E
xp
e
ri
e
nc
e
to Your W
e
b Applic
a
tions
an incredibly rich set of features for interacting with 
messenger accounts to  produce  a messenger-client 
experience on the Web.  The IM control combined 
with  the presence  API  play  a very important  role 
since they don’t require development expertise. Just 
put the control on a Web page and you have an in-
stance presence  on  the Internet where  others  can 
reach you. Specifi cally, the IM control can be used 
by anonymous visitors and by non-Windows Live ac-
counts. The Messenger Library is not considered an 
extension to the IM control—it serves a much different 
purpose with its rich SDK for building a social net-
working experience for a Web application. Although 
exposing a customized messenger client is one aspect 
of this, to increase the stickiness of an application, 
leveraging the SDK to provide extended features that 
enable users to interact with their social network is 
extremely compelling and quite powerful. From this 
article, you can only begin to appreciate the amount 
of functionality available through the Messenger Li-
brary—but the hope is that this inspires you to take a 
look at the code and play with the SDK yourself!
static void conv_MessageReceived(object sender,
MessageReceivedEventArgs e)
{
string message = "";
if (e.Message.Type == MessageType.TextMessage)
{
TextMessage textMessage = e.Message as TextMessage;
message = textMessage.Text;
}
else if (e.Message.Type == MessageType.NudgeMessage)
{
NudgeMessage nudgeMessage = e.Message as NudgeMessage;
message = "Nudge";
}
Document.GetElementById("divMessageLog").InnerHTML += 
"<b>Received from " + e.Message.Sender.Address + ": </b>" + message + "<br/>";
}
Li
s
ting 5: H
a
ndling r
e
c
e
iv
e
d m
e
ss
a
g
e
s.
Michèle
Lero
u
x
B
u
stamante,
Pa
u
l
Bir
k
bec
k
C# WPF Viewer: Load, View, Convert, Annotate and Edit PDF
Draw markups to PDF document. PDF Protection. • Add signatures to PDF document. • Erase PDF text. • Erase PDF images. • Erase PDF pages. Miscellaneous.
how to delete text in pdf converter; how to edit and delete text in pdf file online
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PDF
Redact tab on viewer empower users to redact and erase PDF text, erase PDF images and erase PDF pages online. Miscellaneous. • RasterEdge XDoc.
how to delete text in pdf file online; remove text from pdf
24
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
O
N
L
I
N
E
Q
U
I
C
K
I
D
0
8
0
4
0
4
2
John 
O
’Br
i
en
john@
s
oul
s
olution
s
.
c
om.au
John 
O
’Bri
e
n is 
a
Dir
e
ctor 
of Soul Solutions, b
a
s
e
d in 
Brisb
a
n
e
, Austr
a
li
a
.
John is 
a
Windows Liv
e
D
e
v
e
lop
e
r MVP 
a
nd 
mod
e
r
a
t
e
s th
e
Virtu
a
E
a
rth 
forum on MSDN. H
e
is p
a
rt 
of th
e
cor
e
t
e
a
m th
a
t runs 
th
e
Vi
a
WindowsLiv
e
.com 
community sit
e
for Windows 
Liv
e
t
e
chnologi
e
s.
John h
a
s pr
e
s
e
nt
e
d on 
Windows Liv
e
t
e
chnologi
e
a
m
a
ny 
e
v
e
nts including T
e
ch 
E
d Austr
a
li
a
, Mus
e
ums 
a
nd 
th
e
W
e
b, 
a
nd MSDN/S
Q
L us
e
groups.
V
i
r
t
ua
l
Ea
r
t
h—Wha
t '
s New 
i
t
he La
t
es
t
Re
l
ease?
N
o
w
i
n
i
t
s
s
i
x
t
h
m
a
j
o
r
r
e
l
e
a
s
e
,
Vir
t
u
a
l
E
a
r
t
h
o
f
f
e
r
s
a
n
e
n
t
ir
e
w
o
rl
d
o
f
o
p
p
o
r
t
u
n
i
t
i
e
s
f
o
r
i
n
n
o
v
a
t
i
v
e
W
e
b
-
b
a
s
e
d
m
a
p
p
i
n
g
.
Microsoft’s
premier
Web-based
mapping
solution
has
undergone
upgrades
to
its
user
interface,
compatibility,
and
functionality
ma
k
ing
it
an
ideal
time
to
get
started
with
the
platform
or
upgrade
your
existing
application.
Let’s
explore
what’s
new
and
what
has
changed
in
this
latest
release.
Wh
e
th
e
r you n
e
e
d a 
s
tor
e
lo
c
ator, 
s
e
ll R
e
al E
s
tat
e
tra
c
k a
s
s
e
t
s
, or 
s
impl
e
hav
e
s
om
e
data to vi
s
ualiz
e
on th
e
Earth, Mi
c
ro
s
oft Virtual Earth 
i
s
r
e
ady to provid
e
s
tabl
e
high-p
e
rforman
c
e
, a
c
c
urat
e
and 
e
ngaging W
e
b-ba
s
e
e
xp
e
ri
e
n
c
e
for your 
c
li
e
nt
s
.
Ri
c
h f
e
atur
e
s
in
c
lud
e
“in 
brow
s
e
r” 3D, uniqu
e
“bird’
s
e
y
e
” 
imag
e
s
, turn-by-turn dir
e
c
tion
s
and pla
c
e
s
e
ar
c
h
e
s
. Vi
s
ualiz
e
your data a
s
s
tati
c
til
e
ov
e
rlay 
or int
e
ra
c
tiv
e
pu
s
hpin
s
, lin
e
s
and polygon
s
.
D
e
v
e
lopm
e
nt i
s
s
traightforward 
with your 
c
hoi
c
e
of 
s
e
rv
e
r-
s
id
e
t
e
c
hnology and a w
e
ll 
do
c
um
e
nt
e
d and 
s
upport
e
JavaS
c
ript AP
I
.
With SSL 
s
upport and an SLA, 
bring Virtual Earth into your 
proj
e
c
t today!
Fa
s
t Fa
c
t
s
can minimize the control if they need more screen 
real estate for the map application.
You have three built-in dashboards in Virtual Earth 
to choose from or you turn them off completely and 
create your own. If you want to change to a differ-
ent, built-in dashboard, you must do this before you 
load the map as follows:
map = new VEMap('myMap');
map.SetDashboardSize(VEDashboardSize.Tiny);
map.LoadMap();
“Photosynth” 
S
ty
l
B
i
rd’s 
E
ye Images 
i
n 3
D
The “Bird’s Eye” images within 
Virtual  Earth  are  truly  amaz-
ing. These oblique images  are 
taken  from  a  low  angle  and 
give high-resolution images of 
all four sides of a scene. Popu-
lar  with  Real  Estate  applica-
tions, these images compliment 
the  straight  down  orthogonal 
images  providing  much  more 
location  detail  than  simply 
rooftops.
New  to  Virtual  Earth  is  the 
incorporation  of  these images 
in  3D  mode.  With  an  inter-
face  style  directly  based  on 
the upcoming Microsoft “Pho-
tosynth,”  the  user  visually  se-
lects high-resolution scenes to 
be  loaded  into  the  3D  space. 
Combined  with  the  existing 
and  ever  expanding  3D  mod-
els, this provides an innovative 
experience  ready  for  devel-
opers  to  utilize  in  their  own 
applications.  Fig
u
r
e
 shows 
a bird’s eye scene loaded over 
a set of 3D buildings in New York—note the out-
line of surrounding images easily selectable by the 
user.
T
he  Virtual  Earth  platform  combines  a 
JavaScript library, a rich set of mapping data 
and imagery, a set of Web services, and a pow-
erful 3D control. Getting started with the platform 
is trivial; a simple HTML Web page is all that you 
need to access the powerful AJAX mapping. Lis
t
-
i
n
g
1 shows a basic “hello world” example.
The  power  of  the  2D  interface  comes  from 
JavaScript  manipulating  the  HTML  DOM  and 
making  AJAX  calls  directly  to  Microsoft’s  Web 
servers. The interface requires no plug-ins and, in 
version 6, supports Internet Explorer 6, 7, Firefox 
2, and  Safari  2.  The  3D con-
trol, installed on demand and 
still  offering  a  seamless  “in 
browser” experience, supports 
Internet  Explorer  and  Firefox 
on  Windows-based  machines 
with adequate 3D hardware.
Virtual  Earth  code  develop-
ment is not tied to any server 
side  technology.  As  demon-
strated  in  Lis
t
i
n
g
1,  the  con-
trol only relies on HTML and 
JavaScript  allowing  develop-
ment  in  your  favorite  editor. 
Although Microsoft Visual Stu-
dio  combined  with  ASP.NET 
AJAX extensions is an obvious 
choice,  you  can  quite  happily 
achieve great results with PHP 
and other AJAX frameworks—
the choice is yours.
N
ew 
N
av
i
gat
i
on w
i
th a 
N
ew 
D
efau
l
D
ashboard
The new navigation dashboard 
as shown in Fig
u
r
e
1 provides 
all the default navigation func-
tionality like zooming, panning, 
and  changing  map  styles  and 
map modes. Revamped in nearly every version to 
date, the latest control has a minimalist look and 
smaller download footprint. Importantly the user 
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
setting PDF file permissions. Help C# users to erase PDF text content, images and pages online in ASP.NET. RasterEdge C#.NET HTML5
how to edit and delete text in pdf file; erase pdf text
C# PDF Image Redact Library: redact selected PDF images in C#.net
redaction API to redact PDF images. Same as text redaction, you can specify custom text to appear over the image redaction area. How to Erase PDF Images in
erase text in pdf document; how to delete text from a pdf document
25
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
A tip, use the keyboard arrow keys and the dash-
board rotate buttons to navigate between the im-
ages seamlessly. You can preview this amazing func-
tionality at http:
/
/
maps.live.com.
Additionally you get two new Birdseye methods in 
the traditional 2D mode, fi rst:
VEBirdseyeScene.GetBoundingRectangle();
This method returns an oversized approximation 
of the bounds of the current scene. This method is 
perfect if you need to query for data within the cur-
rent scene. For example you could use the bound-
ing  latitude  and  longitude  values  returned  from 
this method to query a database for records within 
this bird’s eye scene, thus loading the records for 
display in Virtual Earth on demand and improving 
your application’s performance.
Due  to  licensing  restrictions,  you  cannot  access 
exact latitude and longitude values from bird’s eye 
images.
The second method is:
VEMap.SetBirdseyeScene(veLatLong,
orientation,zoomLevel,callback); 
This method allows you to request a bird’s eye scene 
based on a latitude
/
longitude coordinate and zoom 
level.
To facilitate highly accurate placement of shapes plot-
ted within the bird’s eye scene, Microsoft has added 
several  new  methods.  Firstly  you  can  confi gure  a 
“shapes accuracy” policy using the method VEMap.
SetShapes
A
cc
u
racy(policy) where the options are:
None:
no  shapes are  accurately converted (de-
fault).
Pushpin:
only pushpins are accurately converted.
All:
all shapes are accurately converted.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Virtual Earth Hello World!</title>
<!--A meta tag declaring utf-8 is required.-->
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<!--There is a single URL for the Virtual Earth JavaScript.-->
<script type="text/javascript"
src="http://dev.virtualearth.net/mapcontrol/
mapcontrol.ashx?v=6">
</script>
<script type="text/javascript">
var map = null;
function GetMap()
{
//The Virtual Earth constructor takes the 
//ID of the DIV.
map = new VEMap("myMap");
//LoadMap() creates the map.
//Many optional parameters can be used here.
map.LoadMap();
}
</script>
</head>
<!--You must create the map after the DOM has completely 
loaded.-->
<body onload="GetMap();">
<!--A simple DIV is needed as the placeholder for the map.-->
<div id="myMap"
style="position:relative; width:400px; 
height:400px;"></div>
</body>
</html>
Li
s
ting 1: Virtu
a
E
a
rth “H
e
llo World” cod
e
listing.
Figure 1: Th
e
D
e
f
a
ult Virtu
a
E
a
rth D
a
shbo
a
rd.
Figure 2: Photosynth styl
e
n
a
vig
a
tion of bird’s 
e
y
e
im
a
g
e
in Virtu
a
E
a
rth 3D.
How to C#: Special Effects
Erase. Set the image to current background color, the background color can be set by:ImageProcess.BackgroundColor = Color.Red. Encipher.
how to delete text in pdf file; acrobat delete text in pdf
Customize, Process Image in .NET Winforms| Online Tutorials
Include crop, merge, paste images; Support for image & documents rotation; Edit images & documents using Erase Rectangle & Merge Block function;
how to erase pdf text; remove text from pdf preview
26
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
Know Your Keyboard 
C
ontro
l
s
A
rrows 
(
pan
)
C
tr
l
A
rrows 
(
pan 
f
aster
)
(
Z
oom 
I
n
)
(
Z
oom 
O
ut
)
A
(
A
er
i
a
l
Sty
l
e
)
R
(
R
oad Sty
l
e
)
H
(
H
ybr
i
d Sty
l
e
)
B
or 
O
(
B
i
rd’s 
E
ye Sty
l
e
)
(
3
D
M
ode
)
C
tr
l
and a 
L
e
f
t mouse c
l
i
ck and 
drag 
(
draw new v
i
ew box
)
W
i
th
i
n 3
D
mode:
C
tr
l
-
Q
enters 1
st
person mode
M
ouse operates v
i
ewpo
i
nt
W
A
D
(
move around
)
C
(
Z
oom 
I
n
)
SP
A
C
E
(
Z
oom 
O
ut
)
E
S
C
(
E
x
i
t
)
Earth just like Fig
u
r
e
3. The application allows you 
to build your 3D model in  a  simple environment 
and add either built-in textures or your own. This 
allows you to capture an image yourself for use on 
your custom model.
The models themselves are stored at http:
/
/
maps.
live.com in a personal “collection” and you can add 
them to your own map by importing that collection 
as a layer as follows:
var l = new VEShapeLayer();
var veLayerSpec = new
VEShapeSourceSpecifi cation(VEDataType.VECollection,
"54139577DC329980!625", l);
map.ImportShapeLayerData(veLayerSpec,null,false);
R
out
i
ng 
N
ow 
S
upports Mu
l
t
i
p
l
e Po
i
nts
Do you want to enhance your application by letting 
your users get  visual and textual map directions
?
Secondly you can confi gure the number of shapes to 
accurately convert using VEMap.SetShapes
A
cc
u
rac
yReq
u
estLimit(n
u
mber). The default is 50. It is im-
portant to understand that this process is slow and 
you should only use it where absolutely required.
C
reate Your 
O
wn 3
D
Mode
l
s
Virtual Earth has had world-class, highly accurate, 
3D models for some time. Now, thanks to a partner-
ship with Dassault, the new 3DVIA technology al-
lows you to create your own models within Virtual 
Figure 3: Building 
a
3D mod
e
l in 3DVIA.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<titleVirtual Earth 6 Route Example</title>
<!--A meta tag declaring utf-8 is required.-->
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8" />
<!--There is a single URL for the Virtual Earth JavaScript.-->
<script type="text/javascript"
src="http://dev.virtualearth.net/mapcontrol/
mapcontrol.ashx?v=6">
</script>
<script type="text/javascript">
var map = null;
function GetMap()
{
//Load the map as normal.
map = new VEMap("myMap");
map.LoadMap();
//Create an object to set all the route options.
var options = new VERouteOptions();
//The RouteCallback will get the route information.
options.RouteCallback = onGotRoute;
//The array of locations specifi es multi-point routing.
map.GetDirections(["Microsoft", "Everett WA", 
"Bellingham WA"], options);
}
//This method fi res on once the route is calculated.
function onGotRoute(route)
{
var legs = route.RouteLegs;
var turns = "Total distance: " + 
route.Distance.toFixed(1) + " mi<br />";
var numTurns = 0;
var leg = null;
//The route contains legs, the legs contain items.
for(var i = 0; i < legs.length; i++)
{
leg = legs[i];
var turn = null;
for(var j = 0; j leg.Itinerary.Items.length; j ++)
{
turn = leg.Itinerary.Items[j];
numTurns++;
turns += numTurns + "" + turn.Text + " (" + 
turn.Distance.toFixed(1) + " mi)<br />";
}
}
//Simply write your string to your directions DIV.    
document.getElementById("myDirections").innerHTML = turns;
}
</script>
</head>
<!--You must create the map after the DOM has completely 
loaded.-->
<body onload="GetMap();">
<!--A simple DIV is needed as the placeholder for the map.-->
<div id="myMap"
style="position:relative; width:400px; 
height:400px;fl oat:left;"></div>
<!--A simple DIV to house your directions.-->
<div id="myDirections" style="position:relative; 
width:400px;height:400px;fl oat:left;overfl ow:auto;"></div>
</body>
</html>
Li
s
ting 2: Virtu
a
E
a
rth multi-point rout
e
with dir
e
ctions cod
e
listing.
The new 3
D
VIA techno
l
ogy 
a
l
l
ows you to create 
your own mode
l
w
i
th
i
n V
i
rtua
l
E
arth.
.NET Imaging Processing SDK | Process, Manipulate Images
Provide basic transformation functions, like Crop, Rotate, Resize, Flip and more; Basic image edit function support, such as Erase Rectangle, Merge Block, etc.
how to remove highlighted text in pdf; delete text pdf document
27
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
It is now supported in an ever-growing number of 
cities and is as simple to use as adding one line of 
code:
map.LoadTraffi c(true);
Additionally you can show a built-in legend to 
explain the colors (customizable options include 
the title and the position of this legend on the 
map):
map.LoadTraffi c(true);
map.ShowTraffi cLegend(200, 200);
map.SetTraffi cLegendText("myTraffi c");
Great  news,  the  Virtual  Earth  routing  functions 
have had a complete makeover for version 6.
Routing will  overlay a  line  along  the  streets  and 
roads  and  provide  turn-by-turn  instructions  for 
your selected route, see  Fig
u
r
e
4 for an example. 
The  new  method VEMap.GetDirections()  accepts 
an array of  locations  for  true  multi-point routing 
and the return method gives a wealth of informa-
tion about the resulting route, including distances 
and estimated time. You can format this informa-
tion into turn-by-turn directions. Lis
t
i
n
g
2 provides 
a simple example.
Importantly the objects added to the map are true 
VEShape classes. Virtual Earth no longer uses the 
old VEP
u
shpinVEPolygon, and VEPolyline classes.
The GetDirections method allows you to specify the 
following options:
Whether to display measurements in kilome-
• 
ters or miles.
Whether to draw the route on the map.
• 
Route line color.
• 
The line weight (thickness).
• 
Line Zindex (above or below other objects).
• 
Whether  to  set the  map view  to best fi t the 
• 
route.
Whether to show a disambiguation dialog box if 
• 
it can’t determine any of the supplied locations.
Whether to show error messages.
• 
Traffi c 
O
ver
l
ays Anyone?
Being able  to plot  a route is great,  but how about 
overlaying the latest traffi c fl ow data like in Figu
r
e
5
?
Figure 4: A rout
e
with turn-by-turn dir
e
ctions.
Figure 5: Tr
a
ffi c fl ow in S
a
F
r
a
ncisco.
28
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
Mercator Pro
j
ect
i
on
V
i
rtua
l
E
arth 2
D
uses the 
M
ercator” pro
j
ect
i
on and 
uses the 
W
G
S84 standard 
f
or 
i
ts coord
i
nates 
i
n dec
i
ma
l
degrees. 
E
ssent
i
a
l
l
i
n order 
to 
f
l
atten a sphere onto a 
f
l
at 
sur
f
ace th
i
s pro
j
ect
i
on d
i
storts 
the earth hor
i
zonta
l
l
y wh
i
l
ma
i
nta
i
n
i
ng accuracy vert
i
ca
l
l
y. 
T
h
i
s d
i
stort
i
on 
i
ncreases as you 
move 
f
rom the equator to the 
po
l
es. 
T
he s
i
de e
f
f
ect 
i
s that 
countr
i
es 
l
i
ke 
G
reen
l
and, at the 
extreme, 
l
ook s
i
gn
i
f
i
cant
l
y b
i
gger 
than 
i
n rea
l
i
ty. 
C
hange to 3
D
mode to see ob
j
ects w
i
thout th
i
d
i
stort
i
on.
L
oca
l
i
z
at
i
on: F
i
rst 
S
teps
Microsoft must address a number of different areas 
to  fully  localize  Virtual  Earth.  These  include  the 
control text, the map tiles themselves, and the Web 
service results. Version 6 provides the fi rst steps to-
wards localization by providing localized direction 
information for routing. To enable localized results, 
fi rstly you must add a query parameter to the Vir-
tual Earth Script URL, for example French:
<script type="text/javascript"
src="http://dev.virtualearth.net/mapcontrol/
mapcontrol.ashx?v=6&mkt=fr-fr"></script>
Table
1 gives the complete list of supported locales.
The second step to enable the localized directions 
is to set the property UseMWS equal to true in the 
GetDirections method as follows:
var myRouteOptions = new VERouteOptions();
myRouteOptions.UseMWS = true;
map.GetDirections(['redmond,wa','seattle,wa'],
myRouteOptions);
Improved 
G
eocod
i
ng and 
C
onfi dence 
D
ata
Geocoding is the process of assigning latitude and 
longitude values to data such as street addresses. In 
order to position anything on the Virtual Earth map, 
you need the location as a VELatLong class. Clearly 
it is uncommon to actually know these coordinates 
unless the data is coming from a GPS device or is 
previously geocoded. Virtual Earth provides geoc-
oding within its routing and, importantly, through 
the VEMap.Find() method.
The VEMap.Find() method is responsible for geoc-
oding  a  user-submitted  location.  This  process  is 
required to make  a  best  guess  based  on  the  text 
supplied. The method returns an array of VEPlace 
objects, which contains:
VEPlace.La
t
Lo
n
g:
gets  a  VELatLong  Class 
object that represents the location of the found 
result.
VEPlace.Name:
gets the String object that rep-
resents Virtual Earth's unambiguous name for 
the location.
VEPlace.Ma
t
c
h
Code:
a VEMatchCode  Enu-
meration  value  specifying  the  match  code 
from the geocoder.
VEPlace.Ma
t
c
h
Co
n
de
n
ce:
a  VEMatchCon-
fi dence  Enumeration  value  specifying  the 
match confi dence  from the geocoder. Values 
are High, Medium, or Low confi dence.
VEMatchCode enumeration contains:
No
n
e:
no match was found.
Good:
a successful match.
Ambig
u
o
u
s:
a  number  of  possible  locations 
match.
S
upport for 
S
S
L
(
E
ncrypted, 
S
ecure) 
Web 
S
i
tes
Virtual  Earth  targets  commercial  applications 
with  accurate  and  feature-rich  functionality.  Ver-
sion 6 now supports the use of HTTPS to support 
the growing number of enterprise, e-commerce, or 
membership applications that require this level of 
security for communications. Previously if your site 
ran  under SSL, you either had to redirect to an-
other page or put up with mixed content warning 
messages.
D
e
s
c
ri
p
t
i
o
n
C
o
d
e
English, Canada
en-ca
English, Great Britain
en-gb
English, United States
en-us
Japanese, Japan
ja-jp
Czech, Czech Republic
cs-cz
Danish, Denmark
da-dk
Dutch, Netherlands
nl-nl
Finnish, Finland
fi -fi 
French, France
fr-fr
German, Germany
de-de
Italian, Italy
it-it
Norwegian, Norway
nb-no
Portuguese, Portugal 
pt-pt
Spanish, Spain
es-es
Swedish, Sweden
sv-se
Chinese, China
zh-cn
Table 1: A compl
e
t
e
list of support
e
d loc
a
l
e
s.
C
l
ear
l
i
i
s uncommon 
to actua
l
l
y know these coord
i
nates 
un
l
ess the data 
i
s com
i
ng from a 
G
P
S
dev
i
ce.
There are two changes required to the Virtual Earth 
Script URL to enable SSL. First you must change 
the protocol to SSL, second you must add a query 
parameter of  “s=1”. The  complete URL  is as fol-
lows:
<script type="text/javascript"
src="https://dev.virtualearth.net/mapcontrol/
mapcontrol.ashx?v=6&s=1"></script>
This functionality is only supported for paying Vir-
tual Earth customers at this time.
29
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
map.SetMapStyle(VEMapStyle.Shaded);
With this addition you now have four tile sets, as 
well as the unique bird’s eye images and textured 3D 
models making up the imagery of Virtual Earth.
Prefer to 
Z
oom to the Mouse Po
i
nter?
A  new  option  for  navigating  Virtual  Earth  is  to 
change  from  the  default,  where  the  mouse  scroll 
wheel zooms on the center of the screen, to a mode 
where Virtual Earth will zoom on the mouse location 
itself. It can be a little counter-intuitive at fi rst as this 
functionality was previously reserved for a “double 
click” on the map. It does however, with a little prac-
tice, allow for a click-less zoom to any point on the 
planet. It is enabled with one line of code:
map.SetMouseWheelZoomToCenter(false); 
S
hapes 
G
et Faster and 
S
ome 
N
ew 
Methods A
l
so
Shapes are interactive elements you can add to your 
map. These include:
P
u
s
h
pi
n
s:
representing a single point.
Poly
li
n
es:
representing a path of many points.
Polygo
n
s:
representing a closed area of points.
Z
index
You can  now  change the “Zindex” of  shapes.  As 
shapes can easily overlap, it is important to be able 
to control which shape appears on top or behind. 
This is the same concept as in applications like Mi-
crosoft PowerPoint, where  you  may send  objects 
backwards or forward in their Z index. Microsoft 
has added three new methods to retrieve and set 
Zindex for the icon (pushpin) and the line or poly-
gon separately, collectively called the “polyshape”.
UpHie
r
a
r
c
h
y:
the  match  was  found  by  a 
broader search.
Modifi
ed:
the match was found, but to a modi-
fi ed place.
These classes give you, the developer, detailed infor-
mation you need to customize the results for your 
application and required accuracy.
Virtual Earth now supports “Roof Top Geocoding” 
in the United States. Rather than simply marking 
the location of the address on the road, this process 
will mark the actual house at that address. This is a 
very important feature for Real Estate applications.
U
sage Track
i
ng and 
C
l
i
ent Ident
i
fi cat
i
on 
w
i
th Tokens
The Virtual Earth platform now supports a mech-
anism to track individual usage. Essentially your 
Web server requests a specifi c token identifi er us-
ing a secure Web service for each instance of a Vir-
tual Earth map you serve. This token, specifi c to 
your application, is then set within the JavaScript 
Virtual Earth control before the map is loaded:
var map = new VEMap("mymap");
map.SetClientToken(token);
map.LoadMap();
As  JavaScript  executes  on  the  client,  this  token 
is  public. For  this  reason  the  token is  generated 
uniquely for each map, specifi c to your application.
Microsoft has added two new Virtual Earth events 
to support possible errors with tokens. You can at-
tach to onto
k
enerror to receive notifi cation if the 
token is not valid. Second, as the tokens themselves 
have a confi gurable lifespan, you attach to onto
k
en-
expire to receive a notifi cation if the token expires.
The usage statistics are then available for review 
on the Virtual Earth Platform Customer Services 
site alongside your Map Point Web Service usage.
Microsoft  is  recommending  all  commercial  ap-
plications implement the new tracking system. It 
will be a requirement of a Service Level Agreement 
(SLA) offered to commercial customers.
N
ew T
i
l
S
et—
H
i
l
l
S
haded
The core imagery of Virtual Earth is broken into 
tile sets, these 256 x 256 px images are loaded on 
demand in both the 2D AJAX control and the 3D 
control. “Hill Shaded” is a new tile set that com-
bines the lightweight, easy-to-read road tiles with 
a 3D  shading  effect based  on  the  elevation data 
(Fig
u
r
e
6).  The result provides an  alternative to 
the existing “Hybrid” tile set which provides the 
road information over the satellite and aerial pho-
tography available in the “Aerial” tile set. To switch 
to the new shaded tiles, use the new enumeration 
value in the map load or call:
Figure 6: Th
e
n
e
w Hill Sh
a
d
e
d til
e
s in Virtu
a
E
a
rth.
30
www.cod
e
-m
a
g
a
z
in
e
.com
Virtu
a
E
a
rth—Wh
a
t
'
s N
e
w in th
e
L
a
t
e
st R
e
l
e
a
s
e
R
eduction of Polygon / Poly Line Accuracy
Enabled by default, Virtual Earth will now remove 
points within a polygon or poly line that are very 
close  visually  given the  current zoom level. The 
concept is to reduce the complexity of these ob-
jects to improve performance, for example when 
a 1000 point polygon over New York is viewed at 
the country level it only needs a few points or, in 
fact, is too small to render at all.
You can disable this new performance feature with 
the following code:
map.EnableShapeDisplayThreshold(false);
Performance of Bulk Add
The Virtual Earth team has made a signifi cant per-
formance  improvement for  the  addition  of  many 
pushpin shapes to the map. The simple change al-
lows an array of shapes to be added in the existing 
function:
VEShapeLayer.AddShape(Array);
The  performance  increase  is  very  measureable; 
Table
2 shows performance improvements of using 
the bulk method over a loop of single 
A
ddShape() 
calls.
It is a simple change to most existing applications to 
benefi t from this. Rather than adding directly to the 
map, add your shapes to an array, and then add this 
array of shapes to the map in one call.
Map 
C
runcher Is 
N
ow Part of the V
i
rtua
l
E
arth P
l
atform
The core of Virtual Earth is accurate image tiles 
representing  the  Earth  in  several  different  for-
mats. The system allows the user to “stream” just 
the images  they require  as they  pan  and  zoom 
around the planet. This provides the fl uid experi-
ence and fast load times for such a massive set of 
data. A powerful feature is the ability to add your 
own tile layers on top of the map. This allows for 
the same highly scalable performance for your data 
overlay or additional imagery for your application.
Map Cruncher is a tool that imports raster-based 
and vector-based images, provides an interface to 
align the images directly with Virtual Earth, and 
outputs the tiles in the correct format and nam-
ing convention for use with the control. Figu
r
e
shows Map Cruncher in action. You can also run 
Map Cruncher from the command line.
Import Your 
D
ata 
H
ere
Lastly  Virtual  Earth  now  supports  the  import 
of the common XML format  KML or  “KeyHole 
Markup Language”. The process to import is iden-
VEShape.GetZIndex();
VEShape.GetZIndexPolyShape();
VEShape.SetZIndex(icon, polyshape);
Altitude
Within 3D mode, you can now position shapes at a 
specifi c altitude. The VELatLong class now has two 
extra properties:
VELatLong.Altitude
VELatLong.AltitudeMode
The Altitude is a fl oating point number while the 
Altitude  Mode is  an  enumeration supporting  the 
following options:
Absol
u
t
e:
the  altitude  is  meters  above  the 
WGS 84 ellipsoid.
Rela
t
iveToG
r
o
u
n
d:
the  altitude  is  meters 
above ground level (default).
This  opens  up  a  world  of  possible  visualizations 
within  3D  mode  for  anything  above  the  ground. 
You may have already seen some great applications 
tracking aircraft online.
Polygons and Poly lines also get a new method to 
draw a line to the ground from the shape at altitude. 
This  also opens up some interesting  visualization 
options:
VEShape.SetLineToGround(extrude);
C
onditional 
Z
oom Level 
R
ange
It is a common issue with Virtual Earth that as you 
zoom out, shapes overlap. You have already seen 
how you can adjust the Zindex, but it is also now 
possible to  hide shapes. Two new methods  allow 
for the specifi cation of a maximum and minimum 
zoom level to show the shape:
VEShape.SetMaxZoomLevel(level);
VEShape.SetMinZoomLevel(level);
This allows you simply to hide some or all of the 
shapes or provide additional shapes at other zoom 
levels to represent the density.
N
u
m
b
e
r
o
f
Pi
n
s
S
i
n
g
l
e
A
d
d
i
n
L
o
o
p
(
s
e
c
)
B
u
l
k
A
d
d
(
s
e
c
)
1
0.008
0.004
10
0.066
0.022
100
0.632
0.209
500
2.883
1.477
1000
7.264
2.259
2000
21.831
5.644
Table 2: P
e
rform
a
nc
e
comp
a
rison of AddSh
a
p
e
() 
a
e
x
e
cut
e
d in Int
e
rn
e
E
xplor
e
r 7 und
e
Microsoft Vist
a
x64 on 
a
D
e
ll XPS1330 2.4 
G
h
z
G
B RAM.
Documents you may be interested
Documents you may be interested