pdf reader in asp.net c# : Delete text pdf document Library application component asp.net html web page mvc Milos_DocumentManagement_DownloadFileAttachment5-part822

Delete text pdf document - 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
remove text from pdf reader; pdf text remover
Delete text pdf document - 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 erase text in pdf; how to delete text from pdf document
52
www.cod
e
-m
a
g
a
z
in
e
.com
O
N
L
I
N
E
Q
U
I
C
K
I
D
0
8
0
4
0
8
2
Light Up th
e
W
e
b—Microsoft Silv
e
rlight Str
e
a
ming by Windows Liv
e
R
ob B
l
ackwe
l
l
rob.bla
c
k
well@aw
s
.net
Rob Bl
a
ckw
e
ll is R&D Dir
e
ctor 
a
t Activ
e
W
e
b Solutions 
http://www.aw
s
.net
H
e
is 
a
Microsoft Most V
a
lu
a
bl
e
Prof
e
ssion
a
l (MVP) for Virtu
a
E
a
rth. 
H
e
occ
a
sion
a
lly h
a
s som
e
thing 
int
e
r
e
sting to s
a
y on his blog 
a
http://www.robbla
c
k
well.org.u
k
.
directed to an installation process. The runtime is 
surprisingly small (less than 2 MB) and is quick and 
painless to install.
I’ll start with a simple Silverlight 
“Hello World” demonstration.
Using XAML, defi ne  a  Canvas 
that includes a TextBlock with 
the  “Hello  World”  text  and 
save this fi le as Hello.xaml (Li-
s
t
ing
1).
Create an HTML page to host 
the  Silverlight  control;  call  it 
Default.html (Lis
t
ing
2).
You must also provide two Java-
Script fi les. Silverlight.js is part 
of the Silverlight SDK and CreateSilverlight.js is 
shown in Lis
t
ing
3. CreateSilverlight is the code 
responsible for instantiating the Silverlight control 
with your XAML.
You should now have four fi les: defaul
t
.h
t
m, Hel-
lo.xaml,  C
r
ea
t
eSilve
r
ligh
t
.js,  and  Silve
r
ligh
t
.js. 
Launching defaul
t
.h
t
m in a browser runs the ap-
plication (Figu
r
e
1).
S
i
l
ver
l
i
ght 
S
tream
i
ng
Microsoft  has  a  software  and  service  strategy 
and this  is  where the Silverlight  Streaming  by 
Windows Live service comes in—developers can 
deploy their Silverlight applications and rich me-
dia  “in the  cloud,”  leveraging  Microsoft’s  high 
performance, high availability content distributi-
on network.
While  the  product  is  in  pre-release,  storage 
and delivery is free up to 4 GB, with outbound 
streaming up to 700 Kbps. After release, develo-
pers will have continued use of the service with 
up to 1 million minutes of free video streaming at 
700 Kpbs per site per month. 
L
i
gh
t
Up 
t
he Web—
M
i
c
r
oso
f
t
S
i
l
ve
r
l
i
gh
t
S
t
r
eam
i
ng by W
i
ndows L
i
ve
Mi
c
r
o
s
o
f
t
®
S
il
v
e
rli
g
h
t
S
t
r
e
a
m
i
n
g
b
y
Wi
n
d
o
w
s
Li
v
e
i
s
a
f
r
e
e
s
t
r
e
a
m
i
n
g
a
n
d
a
p
p
li
c
a
t
i
o
n
h
o
s
t
i
n
g
s
e
r
v
i
c
e
f
o
r
d
e
li
v
e
ri
n
g
ri
c
h
i
n
t
e
r
a
c
t
i
v
e
a
p
p
li
c
a
t
i
o
n
s
(RIA
s
)
o
v
e
r
t
h
e
W
e
b
.
In
this
article
I’ll
show
you
how
to
get
started
with
Silverlight
and
how
to
upload
your
applications
and
rich
media
to
the
Silverlight
Streaming
Service.
I
n summer 2007, Microsoft released version 1.0 of 
Silverlight, a revolutionary way to build rich in-
teractive experiences on the Web. Silverlight is a 
cross-platform,  cross-browser 
plug-in that extends the brows-
er’s  Document  Object  Model 
(DOM)  with  vector  graphics 
and multimedia features. Based 
on XML Application Mark-up 
Language  (XAML),  the  same 
technique used in the Windows 
Presentation Foundation (WPF), 
Silverlight can be scripted with 
JavaScript and can work within 
AJAX-enabled Web pages.
Silverlight provides a consistent 
user experience with Firefox and 
Safari on the Mac and Firefox 
and Internet Explorer on Windows. Even Linux users 
can run Silverlight using Novel’s open-source Moon-
light code.
In fact, you’re not locked into the Microsoft platform 
at all—it’s just as easy to deliver Silverlight experiences 
from PHP sites on Apache
/
Linux as it is from ASP.
NET sites on a Windows Server.
H
e
l
l
o Wor
l
i
S
i
l
ver
l
i
ght
You need to install the Silverlight 1.0 runtime for your 
browser. The fi rst time you visit a Silverlight enabled 
site like http://www.mi
c
ro
s
oft.
c
om/
s
il
v
erlight, you'll be 
Silv
e
rlight Str
e
aming by 
Window
s
Liv
e
i
s
a fr
e
e
s
e
rvi
c
e
that giv
e
s
you up to 
4 GB of 
s
torag
e
and up to 
on
e
million minut
e
s
of vid
e
s
tr
e
aming at 700 Kbp
s
Silv
e
rlight 
s
upport
s
a rang
e
of vid
e
o format
s
in
c
luding 
high d
e
finition (HD) and 
(SMPTE) VC-1.
Fa
s
t Fa
c
t
s
<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.
microsoft.com/winfx/2006/xaml">
<TextBlock FontFamily="Times New Roman" 
FontSize="70" 
FontStyle="Italic"
Foreground="Green"   
Text="Hello World" />
</Canvas>
Li
s
ting 1: H
e
llo.x
a
ml.
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
VB.NET PDF - How to Delete PDF Document Page in VB.NET. Visual Basic Sample Codes to Delete PDF Document Page in VB.NET Class. Free
how to delete text from pdf; how to delete text in pdf converter professional
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
C#.NET PDF Library - Delete PDF Document Page in C#.NET. Provide C# Users in C#.NET. How to delete a single page from a PDF document.
how to delete text from pdf with acrobat; delete text pdf files
53
www.cod
e
-m
a
g
a
z
in
e
.com
Light Up th
e
W
e
b—Microsoft Silv
e
rlight Str
e
a
ming by Windows Liv
e
You can sign up for a free Silverlight streaming ac-
count at http://
s
il
v
erlight.li
v
e.
c
om. You need a Win-
dows Live ID to get started or you can create a new 
Windows Live ID for free.
U
p
l
oad
i
ng
Now move your Hello World sample to the Silver-
light Streaming Service.
First create a manifest.xml fi le, which describes the 
constituent parts of your Silverlight Streaming appli-
cation:
<SilverlightApp>
<version>1.0</version> 
<source>Hello.xaml</source>
</SilverlightApp>
For this simple example, you no longer need the de-
fault.html or JavaScript fi les. You just need to create 
a Hello.zip fi le that contains manifest.xml and Hello.
xaml.
On Windows, multiple select the fi les, right-click 
and select Send To Compressed (zipped) folder—
It’s 
j
ust as easy to
de
l
i
ver 
S
i
l
ver
l
i
ght exper
i
ences 
from P
H
P s
i
tes on Apache/
L
i
nux as 
i
i
s from A
S
P.
N
E
s
i
tes on a W
i
ndows 
S
erver.
Figure 1: Running th
e
Silv
e
rlight H
e
llo World 
a
pplic
a
tion.
Figure 2: Uplo
a
ding th
e
a
pplic
a
tion to Silv
e
rlight Str
e
a
ming.
function createSilverlight()
 
Silverlight.createObjectEx({
source: 'Hello.xaml',
parentElement: document.getElementById
('SilverlightPlugInHost'),
id: 'SilverlightPlugIn',
properties: {
width: '400',
height: '400',
background:'#ffffff',
isWindowless: 'false',
version: '1.0'
},
events: {
onError: null,
onLoad: null
},              
context: null 
});
}
Li
s
ting 3: 
C
r
e
a
t
e
Silv
e
rlight.js.
<!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" xml:lang="en">
<head>
<title>Hello World</title>
<script type="text/javascript" src="Silverlight.js"></script>
<script type="text/javascript" src="CreateSilverlight.js"></
script>
</head>
<body>
<div id="SilverlightPlugInHost">
<script type="text/javascript">
createSilverlight();
</script>
</div>
</body>
</html>
Li
s
ting 2: D
e
f
a
ult.htm.
L
i
ght 
U
p the Web
F
or more 
i
n
f
ormat
i
on about 
S
i
l
ver
l
i
ght see 
http://www.
mi
c
ro
s
oft.
c
om/
s
il
v
erlight/
or buy 
L
aurence 
M
oroney’s book 
I
ntroduc
i
ng 
M
i
croso
f
t S
i
l
ver
l
i
ght 
1.0” pub
l
i
shed by 
M
i
croso
f
t Press.
T
o s
i
gn up 
f
or a 
f
ree S
i
l
ver
l
i
ght 
Stream
i
ng serv
i
ce go to 
http://
s
il
v
erlight.li
v
e.
c
om
C# PDF Text Extract Library: extract text content from PDF file in
Free online source code for extracting text from adobe PDF document in C#.NET class. Ability to extract highlighted text out of PDF document.
how to delete text in pdf file; delete text pdf document
VB.NET PDF Text Extract Library: extract text content from PDF
SharePoint. Extract text from adobe PDF document in VB.NET Programming. Extract file. Extract highlighted text out of PDF document. Image
how to remove text watermark from pdf; how to delete text in pdf document
54
www.cod
e
-m
a
g
a
z
in
e
.com
Light Up th
e
W
e
b—Microsoft Silv
e
rlight Str
e
a
ming by Windows Liv
e
Click Launch Application Test Page (Figu
r
e
4).
You can also provide a link for others to run your 
application using an IFRAME. The URL is of the 
form:
http://silverlight.services.live.com/
invoke/accountId/appName/iframe.html
Where accountId is your Silverlight Streaming nu-
meric account identifi er and appName is the name 
of your application (in this case Hello). You can 
fi nd out your accountId by clicking the Manage Ac-
count link. The IFRAME invoker redirects you to 
an obfuscated URL as in Fig
u
r
e
5.
E
xpress
i
on 
E
ncoder
“Hello World” is a start, but what happened to the 
rich multimedia I was talking about
?
One of the 
easiest ways to get started with Silverlight video 
and audio is using Expression Encoder.
You can download a Trial edition of Expression 
Encoder  from http://www.mi
c
ro
s
oft.
c
om/e
x
pre
s
s
ion
It’s simple and intuitive to use, but there is also a 
short video tutorial available.
You can edit and encode digital video and audio, 
add leaders, trailers, and watermarks and control 
the quality and encoding of the output.
There are a number of predefi ned Silverlight me-
dia player templates in the Job Output section of 
the Output tab and these will create for you a full 
Silverlight wrapper without any coding.
If you download and install the Silverlight Streaming 
Publishing  Plug-In  for  Expression  Encoder,  you 
can publish a job output from Microsoft Expressi-
on Encoder directly to Silverlight Streaming using 
the public API. Just provide your accountID and 
Account Key and press Publish (Figu
r
e
6).
you can use any of the popular ZIP compressi-
on programs, but you need to make sure that the 
manifest fi le appears in the top-level root of the 
zip fi le—zipping the parent directory is a common 
error and will not work!
Log  in  to  Silverlight  Streaming  at http://
s
il
v
er-
light.li
v
e.
c
om using your Windows Live ID and 
click Manage Applications. Select Upload a Sil-
verlight  Application,  specify  a  name  (Hello) 
and browse for your Hello.zip fi le. Click Upload 
(Figu
r
e
2).
Depending on your connection speed, this may 
take a while. If all goes well, you will be presented 
with a page that allows you to test your applicati-
on. You will also be given sample HTML and Ja-
vaScript that you can cut and paste into your own 
Web site to run the application (Figu
r
e
3).
Figure 3: H
a
ving uplo
a
d
e
d your 
a
pplic
a
tion, t
e
st links 
a
nd s
a
mpl
e
cod
e
a
r
e
a
utom
a
tic
a
lly cr
e
a
t
e
d.
Figure 4: 
C
lick L
a
unch Applic
a
tion T
e
st P
a
g
e
to run your 
a
pplic
a
tion.
Figure 5: Invok
e
your 
a
pplic
a
tion dir
e
ctly within 
a
n I
F
RAM
E
.
If you are ser
i
ous about 
des
i
gn
i
ng r
i
ch user exper
i
ences 
w
i
th 
S
i
l
ver
l
i
ght, you probab
l
y want 
to use 
E
xpress
i
on B
l
end 2.
Q
u
i
ck App
l
i
cat
i
ons
T
he 
W
i
ndows 
L
i
ve 
Q
u
i
ck 
A
pp
l
i
cat
i
ons are a great way to get 
started w
i
th S
i
l
ver
l
i
ght Stream
i
ng 
and 
W
i
ndows 
L
i
ve Serv
i
ces.
T
he 
C
ontoso 
B
i
cyc
l
C
l
ub and 
C
ontoso 
U
n
i
vers
i
ty samp
l
es both 
i
nc
l
ude 
f
ree, open source code 
samp
l
es that make extens
i
ve use 
o
f
S
i
l
ver
l
i
ght Stream
i
ng.
http://de
v
.li
v
e.
c
om/
Q
ui
c
k
A
pp
s
C# PDF insert text Library: insert text into PDF content in C#.net
C#.NET PDF SDK - Insert Text to PDF Document in C#.NET. This C# coding example describes how to add a single text character to PDF document. // Open a document.
how to delete text in pdf acrobat; remove text from pdf reader
C# PDF Convert to Text SDK: Convert PDF to txt files in C#.net
All text content of target PDF document can be copied and pasted to .txt files by keeping original layout. C#.NET class source code
delete text in pdf file online; how to delete text in pdf file online
55
www.cod
e
-m
a
g
a
z
in
e
.com
Light Up th
e
W
e
b—Microsoft Silv
e
rlight Str
e
a
ming by Windows Liv
e
E
xpress
i
on B
l
end 2
If you are serious about designing professional, 
rich user experiences with Silverlight,  you pro-
bably want to use Expression Blend 2. This is a 
full-featured Silverlight XAML authoring tool for 
designers.
Using  Expression  Blend  2  December  Preview, 
you can create a new Silverlight 1.0 Site project, 
and then interact with the design surface to lay 
out your graphic design. In Split view, you can see 
your design work and the corresponding XAML 
(Figu
r
e
7).
You can also open the same site in Visual Studio, 
allowing  developers to attach functionality  and 
enabling effi cient designer
/
developer interaction.
N
otes
You can upload and manage your Silverlight appli-
cations programmatically using a simple REST API.
You can use Expression Encoder with a command 
line interface allowing batch mode operation and 
on-the-fl y trans-coding.
You can split your application so that the XAML 
is delivered from your own site, but pulls multi-
media content from the Streaming Service. This 
can be a useful technique to allow more fl exible 
scripting and avoid cross-domain issues.
The application in this article uses Silverlight 1.0, 
but the streaming service will also work with the 
Silverlight  1.1  pre-release  and  the forthcoming 
Silverlight 2.0. This opens the possibility of pro-
gramming in .NET as well as JavaScript.
C
onc
l
us
i
on
Video-enabled Web applications have traditional-
ly been expensive and diffi cult to host because of 
their high bandwidth demands and requirements 
for streaming and edge-cached networks.
Silverlight is more than a Flash replacement—it’s 
changing the way we build rich interactive applica-
tions on the Web. Just take a look around to see a 
wide range of applications including video, games, 
and advanced data visualization tools.
The Silverlight Streaming service is a great way 
to distribute your Silverlight applications for free 
using Microsoft’s high performance content distri-
bution network powered by Windows Live.
Figure 6: Microsoft 
E
xpr
e
ssion 
E
ncod
e
r c
a
a
utom
a
tic
a
lly g
e
n
e
r
a
t
e
Silv
e
rlight m
e
di
a
pl
a
y
e
rs from 
pr
e
d
e
fi n
e
d t
e
mpl
a
t
e
s.
Figure 7: Microsoft 
E
xpr
e
ssion Bl
e
nd 2 D
e
c
e
mb
e
r Pr
e
vi
e
w.
Rob
Blac
k
well
C# PDF metadata Library: add, remove, update PDF metadata in C#.
C#.NET PDF SDK - Edit PDF Document Metadata in C#.NET. Allow C# Developers to Read, Add, Edit, Update and Delete PDF Metadata in .NET Project.
remove text watermark from pdf online; erase pdf text
C# PDF Text Search Library: search text inside PDF file in C#.net
C#.NET. C# Guide about How to Search Text in PDF Document and Obtain Text Content and Location Information with .NET PDF Control.
erase text from pdf; delete text from pdf online
56
www.cod
e
-m
a
g
a
z
in
e
.com
O
N
L
I
N
E
Q
U
I
C
K
I
D
0
8
0
4
0
9
2
D
e
v
e
loping Plugins for Windows Liv
e
Writ
e
r
S
cøtt 
L
ovegrove
s
c
ott@li
v
e
s
ide.net
http://
s
c
otti
s
afoolde
v
.
s
pa
c
e
s
.
li
v
e.
c
om
Scøtt is 
a
Windows Liv
e
MVP 
for Microsoft 
a
nd is v
e
ry 
h
e
a
vily involv
e
d with Windows 
Liv
e
, not just with Windows 
Liv
e
Writ
e
r. H
e
is on
e
of th
e
m
a
in writ
e
rs for Liv
e
Sid
e
.n
e
t, 
a
community W
e
b sit
e
d
e
dic
a
t
e
to Windows Liv
e
a
nd his m
a
in 
a
r
e
a
of blogging for Liv
e
Sid
e
is 
d
e
v
e
loping on Windows Liv
e
.
Scøtt h
a
s writt
e
a
numb
e
r of 
popul
a
r plugins for Windows 
Liv
e
Writ
e
a
nd c
a
n oft
e
b
e
found in th
e
Liv
e
Writ
e
Support forum, for both 
g
e
n
e
r
a
l support 
a
nd th
e
d
e
v
e
lop
e
r forums.
Wr
i
t
i
ng Your P
l
ug
i
n
Open up Visual Studio and create a new Class Li-
brary project, giving it a meaningful name for your 
plugin. Rename the default class1.cs to plugin.cs (this 
isn’t essential, but will allow you to 
quickly see the main plugin class).
Next you need to add the Windows 
Live Writer API reference: bring up 
the Add Reference window, point 
to your Windows Live Writer in-
stall folder (typically C:
\
Program 
Files
\
Windows Live
\
Writer
\
), and 
then  select  WindowsLive.Writer.
API.dll. As a best practice for this 
reference, set the property of Copy 
Local to be false for this reference 
(this will stop older versions of the 
API DLL being copied into the Live Writer Plugins 
folder). Open plugin.cs and include the following us-
ing statement:
using WindowsLive.Writer.Api;
You also need to add a reference to the Windows 
Forms namespace, so add System.Windows.Forms 
as a reference and also include the following:
using System.Windows.Forms;
Now you can add the Plugin’s attributes: these tell 
Live Writer about who made the plugin, the link to 
the developer’s Web site, the description, whether 
the plugin has options, and the location of the image 
to be used as the plugin’s icon within the Live Writ-
er UI. These details go in just after the namespace 
(before the main class).
The code for this is as follows:
[WriterPlugin ("d39bba2b-9522-49b1-8731-61030ccd6c95",
"My First Plugin",
Description = "This is my fi rst plugin",
HasEditableOptions = false,
Name = "My First Plugin",
PublisherUrl = "http://www.liveside.net")]
[InsertableContentSource ("Bold Text")]
Please note: The GUID is 
u
niq
u
e for each plugin 
and you shouldn’t reuse it in other plugins as this 
Deve
l
op
i
ng P
l
ug
i
ns 
f
o
r
W
i
ndows L
i
ve W
r
i
t
e
r
Pl
u
g
i
n
s
f
o
r
Wi
n
d
o
w
s
Li
v
e
Wri
t
e
r
a
r
e
s
i
m
p
l
e
t
o
c
r
e
a
t
e
a
n
d
c
a
n
p
r
o
v
i
d
e
m
a
n
y
e
x
t
r
a
f
e
a
t
u
r
e
s
.
This
article
will
show
you
how
to
start
writing
plugins
for
Windows
Live
Writer,
including
how
to
get
started,
how
to
debug,
and
how
to
pac
k
age
the
final
plugin.
B
efore you can begin writing a plugin for Win-
dows Live Writer (http:
/
/
writer.live.com
/
), 
you need to understand what it is and what 
it actually does. Windows Live Writer is a free 
desktop blog authoring tool from Microsoft that 
allows you to write an entry 
for your blog without having 
to be online and do it right 
from  your  desktop.  Live 
Writer doesn’t  just support 
Microsoft’s  own  blogging 
site (Windows Live Spaces), 
it  supports  a  multitude  of 
different blog engines: basi-
cally  any  that  support  the 
MetaWeblog  API  or  Atom 
Publishing Protocol. This list 
includes  Wordpress,  Com-
munity Server,  LiveJournal, 
and Blogger. You can write your blog entry in 
the style of your own blog as well because Live 
Writer downloads your blog style and uses it as 
a template.
Whether you’re someone  just starting out with 
their fi rst blog, or a seasoned pro, Windows Live 
Writer makes the blogging experience that much 
better. And the features that don’t come with the 
program can come in the form of plugins that add 
extra extensibility and improve the blogging expe-
rience even more.
Your 
D
eve
l
opment 
E
nv
i
ronment 
Pre-requ
i
s
i
tes
Live Writer plugins are written in .NET, but while 
you can use .NET 1.1, it is recommended to use 
.NET 2.0. You will need Visual Studio 2005 or 
above installed—this can  be any  version of  Vi-
sual Studio 2005 or 2008 (http:
/
/
msdn.microsoft.
com
/
vstudio), including the free Express Editions 
of Visual Studio (http:
/
/
www.microsoft.com
/
ex-
press
/
). You will also need to download Windows 
Live Writer (http:
/
/
writer.live.com
/
) as this has 
the required API DLL on which the plugins are 
based.
As plugins are developed in .NET, you can use any 
language that uses it, but for my examples, I will 
be using C
#
.
Window
s
Liv
e
Writ
e
r do
e
s
n’t 
ju
s
s
upport Mi
c
ro
s
oft’
s
own Window
s
Liv
e
Spa
c
e
s
blogging platform, 
it 
s
upport
s
a numb
e
r of 
diff
e
r
e
nt and popular blog 
e
ngin
e
s
s
u
c
h a
s
Wordpr
e
s
s
or Community S
e
rv
e
r.
Fa
s
t Fa
c
t
s
57
www.cod
e
-m
a
g
a
z
in
e
.com
D
e
v
e
loping Plugins for Windows Liv
e
Writ
e
r
CreateContent is the most commonly used method, 
although  there  are  examples where  the  FromUrl 
method has been used. The plugin code overrides all 
of these methods and they are not mutually exclu-
sive; you can have more than one type in a plugin.
O
verride 
C
reate
C
ontent Method
You can see that there is a string reference of content. 
There are two things of note about this reference:
The initial value of content is whatever may 
1. 
have been highlighted in the editing window. 
If no text was highlighted, then content will be 
empty, if you had text highlighted, then the f
u
ll
HTML code will be what content equals.
Whatever content is equal to, that is what will 
2. 
be put back into the blog entry. This must in-
clude any HTML formatting that might be re-
quired for the plugin’s functionality.
Remove the base code that is put in––this is just a 
placeholder. To start off with, for this fi rst example, 
just return DialogResult.OK. This fi rst part will just 
be a simple plugin to make the highlighted text bold, 
so the code for the CreateContent method is simply:
public override DialogResult CreateContent
(IWin32Window dialogOwner, 
ref string content)
{
if (!string.IsNullOrEmpty(content))
content = 
string.Format("<b>{0}</b>", content);
return DialogResult.OK;
}
Using this code, the plugin will take in whatever 
text was highlighted and the bold HTML tags to ei-
ther end of that content. Lis
t
i
n
g
1 shows just how 
simple the code can be for a Live Writer plugin.
C
ompiling and 
D
ebugging
There are several little tricks to know about compil-
ing and debugging your plugins for Live Writer as 
can cause problems for Writer and may cause your 
plugin not to be loaded.
To add an icon for your plugin, you should include 
the code:
ImagePath = "icon.gif",
The value of this attribute must be the fi le name of 
the icon you wish to use. Its location is relative to 
where it is stored in your project. The image itself 
must be 20 x 18 pixels in size.
After this, you need to create your plugin class. The 
plugin class has to inherit from the Live Writer API 
and there are two choices to inherit from: Co
n
t
e
n
t
-
So
u
r
ce and Sma
r
t
Co
n
t
e
n
t
So
u
r
ce. ContentSource 
plugins are very basic plugins and will only insert 
text into the blog entry. The plugin cannot change 
that text again. SmartContentSource plugins can do 
a lot more and will be covered later on in the article. 
For this example, I am going to inherit just from the 
ContentSource interface:
public class LiveWriterExamplePlugin : ContentSource
Then you need to include how the plugin will insert 
the text. There are three different types:
CreateContent
(from the Insert menu).
CreateContentFromUrl
(when pasting a URL 
into the blog entry area or from a Blog This 
action).
CreateContentFromLiveClipboard
(using  the 
LiveClipboard,  although  this  method  isn’t 
widely used as there isn’t much LiveClipboard 
content out there due to documentation).
using System;
using System.Collections.Generic;
using System.Text;
using WindowsLive.Writer.Api;
using System.Windows.Forms;
namespace LiveWriterExample
{
[WriterPlugin("d2c99304-8648-4696-9ef1-6a82a2d070c9"
"LiveWriterExamplePlugin",
Description = "Makes highlighted text bold.",
HasEditableOptions = true,
ImagePath = "icon.gif",
Name = "Bold Text Plugin",
PublisherUrl = "http://www.liveside.net")]
[InsertableContentSource("Bold Text")]
public class LiveWriterExamplePlugin : ContentSource
{
public override DialogResult CreateContent
(IWin32Window dialogOwner, ref string content)
{
// If nothing is highlighted, content will be empty.
// If this is the case, the plugin does nothing.
if (!string.IsNullOrEmpty(content))
content = string.Format("<b>{0}</b>", content);
return DialogResult.OK;
}
}
}
Li
s
ting 1: 
F
ull cod
e
for 
a
v
e
ry b
a
sic Liv
e
Writ
e
r plugin.
Wh
i
l
e the examp
l
es 
g
i
ven 
i
n th
i
s art
i
c
l
e are 
C
#, 
the 
L
i
ve Wr
i
ter API 
i
s .
N
E
T, 
so you’re not 
l
i
m
i
ted 
to 
j
ust 
C
#.
58
www.cod
e
-m
a
g
a
z
in
e
.com
D
e
v
e
loping Plugins for Windows Liv
e
Writ
e
r
U
sing 
F
orms
Windows Forms can be an integral part of your pl-
ugin, so it’s important to know how to call them 
correctly from your plugin code. Forms can control 
exactly what you want the user to put into their blog 
entry. This can range from putting in video URLs, 
selecting an  emoticon  from  a  range  of  different 
emoticons, or even searching for a book from Ama-
zon; you can use Forms in a multitude of different 
ways.
You call the Form from within the CreateContent 
method like so:
public override DialogResult CreateContent
(IWin32Window dialogOwner, 
ref string content)
{
using (frmMain form = new frmMain())
{
DialogResult result = form.ShowDialog();
if (result == DialogResult.OK)
content = form.NewContent;
return result;
}
}
In this snippet of code I have a simple Form with a 
property called NewContent, which will give me the 
new content value I want to have inserted into the 
blog entry. Usually the fi nal code to be put in the 
plugin will be a property of the Form.
It’s important to note that in the code for your Ac-
cept button in your Form, you have to put this.
DialogResult = DialogResult.OK; so that when the 
Form closes the If condition checking for that result 
is actually met.
they are DLL fi les and so can’t be run on their own. 
The two main tricks are for copying the built DLL 
to Live Writer’s plugin directory and how to start 
Live Writer so that you can debug your plugin.
Fig
u
r
e
1 shows the command needed for copying 
the built plugin to the Live Writer plugin directory, 
the command being:
XCOPY /D /Y /R "$(TargetPath)" "C:\Program Files\
Windows Live\Writer\Plugins\"
Note: If your Program Files folder is in a different 
location to the Windows default, you will need to 
change this for the way in which your system is con-
fi gured.
Alternatively, you can simply set the output folder 
of the project to point to your Live Writer Plugins 
folder.
Fig
u
r
e
2 shows you the setting needed to be able to 
debug your plugin. You must start Windows Live 
Writer as an external application in order to debug 
your plugin. This will only work if you have done 
what is in Fig
u
r
e
1, otherwise the plugin won’t have 
been copied to the plugin directory and Writer won’t 
pick it up.
Once you  have  these  two settings  confi gured  in 
Visual Studio, you can press F5 as you would nor-
mally, which will then build your project, copy it to 
the plugin directory, and then load Windows Live 
Writer with your plugin in debug mode.
Now you are in debug mode, Figu
r
e
3, Figu
r
e
4, and 
Figu
r
e
5 will show the stages of using the plugin. In 
Figu
r
e
3 you have your text as it was typed in normal 
font style. In Figu
r
e
4 you see the text is highlight-
ed so that the plugin will pick up that text and use 
it. Figu
r
e
5 shows the results of clicking the plugin 
name from the Insert section of Writer.
Figure 1: Wh
a
t you n
e
e
d to g
e
t th
e
plugin to copy to th
e
plugins fold
e
r.
Figure 2: Wh
a
t you n
e
e
d to d
e
bug your plugin.
U
sefu
l
W
i
ndows 
L
i
ve 
Wr
i
ter 
L
i
nks
T
here are many p
l
aces you 
can 
f
i
nd 
i
n
f
ormat
i
on on 
L
i
ve 
W
r
i
ter. 
H
ere are some o
f
my 
recommended s
i
tes 
f
or both 
genera
l
L
i
ve 
W
r
i
ter 
i
n
f
ormat
i
on 
and deve
l
op
i
ng 
f
or 
L
i
ve 
W
r
i
ter.
L
i
ve 
W
r
i
ter b
l
og: http://
w
i
ndows
l
i
vewr
i
ter.spaces.
l
i
ve.
com
Joe 
C
heng’s b
l
og: http://
j
cheng.
wordpress.com
M
S
D
N
D
eve
l
oper 
f
orum: 
http://
f
orums.m
i
croso
f
t.
com/
M
S
D
N
/Show
F
orum.
aspx?
F
orum
I
D
=994
&
S
i
te
I
D
=1
L
i
ve 
W
r
i
ter Support 
F
orum: 
http://groups.msn.com/
W
i
ndows
L
i
ve
W
r
i
ter
59
www.cod
e
-m
a
g
a
z
in
e
.com
D
e
v
e
loping Plugins for Windows Liv
e
Writ
e
r
U
sing Settings
Settings, like Forms, can be an integral part of your 
plugin if you would like the user to be able to set de-
faults for the plugin. Typically this would be done by 
the user going to the Options area of Live Writer, se-
lecting the plugin, and then choosing the Options but-
ton as shown in Figu
r
e
6.
To start with, Live Writer has to be told that your pl-
ugin has an options Form, which is done by making 
sure you set HasEditableOptions=true in the Plugin 
Attributes. Next you have to create a Settings class, as 
this makes it easier to access the settings.
The Settings class also has to use WindowsLive.Writ-
er.Api, as you need to pass it an IProperties object to 
read
/
write the settings to. The constructor of your set-
tings class should look like the following:
IProperties m_properties;
public PluginSettings(IProperties properties)
{
m_properties = properties;
}
Note that I have a global variable for this class of 
m_properties
, this is for calling that IProperties in 
the class’ Properties.
The Live Writer API understands fi ve types of setting 
types: String, Int, Float, Bool, and Decimal. They all 
have their own Get and Set methods (GetString(), 
SetString(), etc.) and these are part of the IProper-
ties class. So a simple property for a setting that gets 
saved using the Live Writer APIs will look like this:
public bool DefaultBoldOption
{
get { return m_properties.GetBoolean
("DEFAULTBOLD"true); }
set { m_properties.SetBoolean
("DEFAULTBOLD"value); }
}
Figure 3: Som
e
s
a
mpl
e
t
e
xt to b
e
m
a
d
e
bold.
Figure 4: Th
e
highlight
e
d t
e
xt.
Figure 5: H
a
ving us
e
d th
e
plugin th
e
highlight
e
d t
e
xt is now bold.
Figure 6: How your plugin’s options 
a
r
e
a
cc
e
ss
e
d in Liv
e
Writ
e
r.
60
www.cod
e
-m
a
g
a
z
in
e
.com
D
e
v
e
loping Plugins for Windows Liv
e
Writ
e
r
Back to the original plugin class, you now need to 
override the EditOptions method to call your Op-
tions Form:
public override void EditOptions
(IWin32Window dialogOwner)
{
PluginSettings settings =
new PluginSettings(this.Options);
frmOptions op =
new frmOptions(settings);
op.ShowDialog();
}
All that’s left to do now is apply that setting to what 
the plugin actually does, so in the CreateContent 
code, you need to change it to the following:
using (frmMain form = new frmMain())
{
DialogResult result = form.ShowDialog();
if (result == DialogResult.OK)
{                    
content = form.NewContent;
if (m_defaultsettings.DefaultBoldOption)
{
content =
string.Format("<b>{0}</b>",
content);
}
}
return result;
}
Each Get method requires an attribute name (in this 
case “DEFAULTBOLD”) and a default value, so if it’s 
the plugin’s fi rst time being used it has something to 
fall back on. Each Set method requires the attribute 
name, like the Get method, and that then just sets the 
attribute using the value passed. You will need to do 
this for all settings you wish your plugin to have.
Once you are happy with your Settings class, you 
need to initialize the settings from within the plugin 
code. Back in the original plugin class, add a global 
variable:
PluginSettings m_defaultsettings;
You then need to assign some  PluginSettings to 
those default settings, so you need to override the 
Initialize() method:
public override void Initialize
(IProperties pluginOptions)
{
base.Initialize(pluginOptions);
m_defaultsettings = 
new PluginSettings(pluginOptions);
}
Having  the  base.Initialize(pluginOptions)  tells 
Writer to get the plugin settings from the registry for 
this particular plugin and put them into an IProp-
erties class, which you then pass to the PluginSet-
tings class that you created so you can read
/
write 
to them.
Now you have that done, you need to create your 
Options Form. For this example, I created a Form 
that looks like Fig
u
r
e
7. You will need to pass the 
PluginSettings object to the Form itself:
PluginSettings m_settings;
public frmOptions(PluginSettings settings)
{
InitializeComponent();
m_settings = settings;
// This sets the check box to be 
// whatever the default option was
chBoldOption.Checked = 
m_settings.DefaultBoldOption;
}
The Save button will have the following action for 
its Click event:
private void btnSave_Click
(object sender, EventArgs e)
{
// Sets the option to whatever
// the check box is currently at
m_settings.DefaultBoldOption = 
chBoldOption.Checked;
this.Close();
}
This example only has one setting, but the principle 
is the same for however many settings your plugin 
has.
C
ontent
S
ource p
l
ug
i
ns 
are very bas
i
c p
l
ug
i
ns and w
i
l
l
on
l
i
nsert text 
i
nto the b
l
og entry. 
You can ed
i
S
mart
C
ontent
S
ource 
p
l
ug
i
ns’ content aga
i
at a 
l
ater t
i
me.
Figure 7: How th
e
O
ptions 
F
orm 
looks for this s
a
mpl
e
plugin.
S
mart
C
ontent
S
ource P
l
ug
i
ns
SmartContentSource plugins have a lot more about 
them than basic ContentSource plugins. The biggest 
difference about the two types is that ContentSource 
plugins insert HTML code into the blog entry and 
this cannot be changed or edited using the plugin at 
a later time. SmartContentSource plugins store as 
much information about what code is inserted as the 
developer wants it to, which allows the user to open 
that blog entry in Writer at a later time and edit that 
bit of their blog entry using the plugin without having 
to go through the whole process again.
Planning What’s Needed
With SmartContentSource plugins, it’s often best 
to  plan  out  what  you  want  internally  for  your 
Documents you may be interested
Documents you may be interested