Covers Adobe Portable Document Format components for
use in both WinForm and WebForm/ASP.NET applications
By Mike Gunderloy
How-To-Select a PDF
Component for .NET™
• PDF Viewers
• PDF Generators
• XML-to-PDF Processors
• PDF Print Drivers
• PDF Editors
PDF Forms Products
PDF Converters
http:
//
www.howtoselectguides.com
/
dotnet
/
pdf
/
Categories discussed in this Guide:
..NNEETTDDeevveellooppeerrss  SSeerriieess
May 2005
How to change pdf to powerpoint format - Library application component:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
How to change pdf to powerpoint format - Library application component:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
T
ab
l
e of 
C
o
n
te
n
ts
Introduction 
Editor's Note 
Publisher's Note 
Overview of Adobe PDF
Functionality by Categories
Related Categories
Scenarios
Decision Points
Features
Vendors
Products Covered in this Guide
General Criteria
Products Not Covered in this Guide
About the How-to-Select Guides
In
trod
u
ct
i
o
n
Welcome to Xtras' How-To-Select™ Guides
Hello and welcome to the first issue of Xtras' How-To-Select™
Guides: How-To-Select a PDF Component for .NET™. We write
our .NET Developer Series Guides for people who develop
software designed to run on Microsoft's .NET platform,
whether they program in C#, VB.NET, or another .NET lan-
guage. 
In this specific Guide edition we tackle PDF components
designed to be used by .NET developers when creating appli-
cations with Visual Studio .NET or other similar tools. We
cover scenarios where you might consider using a PDF prod-
uct, the various functionality you can expect from available
products, decision points you might have when you consider
using a PDF product, and almost all of the vendors and prod-
ucts in the space. 
Our goal with the How-To-Select Guides series, however, is to
provide you with clear, correct, unbiased information to help
you choose the .NET components and tools you need to make
your own projects a success. The Guides are published by
Xtras, a company that has been in business since 1994 (origi-
nally as VBxtras), serving the developer community as a
source of information about and reseller of components and
tools for Microsoft-centric developers and as part of our goal
we want to make our process as transparent as possible. 
To ensure both transparency and the highest quality possible,
Xtras selected Mike Gunderloy to be the Executive Editor of
the .NET Developer Series, and the author of this first Guide.
Mike is also the editor of Larkware.com, and a well-known
author and developer in the .NET community. Writers for the
series are chosen jointly by the Publisher and the Executive
Editor. 
If you questions, comments, or suggestions, please let us
know at http://forums.howtoselectguides.com/dotnet/pdf/or
email us at feedback@howtoselectguides.com . We hope you
like what we have in store. Read on! 
-The How-To-Select Guides Team
E
d
i
tor'
N
ote
Dear .NET Developer:
Have you ever tried to find a component for your .NET appli-
cation only to waste more time in research than you saved in
using the component? Or gotten 80% of the way to launch,
only to discover that the component you were depending on
lacked one crucial feature? Depending on your project's
scope, such problems can range from minor annoyances to
major disasters. But with all the great .NET tools and compo-
nents out there on the market, these problems can be avoid-
ed...if only you can find the right components for your own
particular needs. 
Unfortunately, getting information on components has been a
hit-or-miss proposition. That's why we're launching the How-
To-SelectTM Guide series. Our goal is simple: we want to bring
you the comprehensive, unbiased information that you need
to make an informed choice when picking the components
that you need to make your .NET project a success. Each
How-To-Select Guide will look at a particular category of com-
ponents in depth. We'll offer guidance on what components in
that category can do, and show you how to choose between
the various components on the market. We'll also list and
evaluate every component that we can in the category (limit-
ed only by the vendor's willingness to provide us with their
software to evaluate). 
How-To-Select Guides go far beyond simple feature checklists
to address the issues that really matter to working developers
who need to find the right components for serious projects.
We'll help you sort out the use cases for the various compo-
nents, discuss vendor support and licensing policies, and
make sure you understand what each component can (and
can't) do for project. We include free and open source soft-
ware right alongside commercial offerings, so you can choose
the most economical component that will get the job done for
you. 
We're also committed to keeping the Guides up-to-date.
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
.NET Developer Series
2
page 2
page 2
page 3
page 4
page 6
page 6
page 6
page 8
page 11
page 14
page 16
page 18
page 26
page 27
Library application component:How to C#: File Format Support
Document; Remove Password from PDF; Change PDF Permission Settings. Home ›› XDoc.PowerPoint ›› C# PowerPoint: File Format PDF in C#, C# convert PDF to HTML
www.rasteredge.com
Library application component:C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
An attempt to load a program with an incorrect format", please check your configure as follows: You can also directly change PDF to Gif image file in C# program
www.rasteredge.com
Assuming changes and ongoing interest in each category, we
plan to revise each Guide roughly every six months with the
latest products and version information, as well as additions
and corrections based on reader feedback. If you've got
something to say about our coverage, we'd love to hear from
you on our forums here via our web site's forum. Why not
stop by to let us know how we can help your .NET develop-
ment efforts succeed? 
Mike Gunderloy
Executive Editor and Author
How-To-Select™ Guides - .NET Developer Series 
Pu
b
li
s
h
er'
N
ote
Dear .NET Developer:
Hello and welcome to the very first How-To-Select™ Guide
from Xtras, Inc. We put forth a tremendous effort to launch
the How-To-Select Guides, and I hope you are as excited about
what they offer .NET developers as we are. 
First we helped you FIND Components and Tools
Back in 1994 I was both awed by the explosion of third party
components and tools for Visual Basic and overwhelmed
when trying to find the ones I needed and "Googling" just
wasn't an option back then. So I launched the VBxtras
[www.vbxtras.com] catalog of components and tools with a
goal of helping developers find components and tools for
Visual Basic. Then in 2002 I launched the Xtras.Net
[www.xtras.net] website helping developers find components
and tools for .NET. 
Now we are Helping you SELECT
I had a passionate vision, bordering on obsessive, to to more;
to provide detailed enough information that developers could
select components and tools. But it wasn't clear how to
accomplish this until Mike Gunderloy agreed to help us launch
our How-To-Select as Executive Editor of the .NET Developer
Series. 
We focus on Categoies, not Products
You'll find product reviews elsewhere, but not here. Our How-
To-Select Guides focus on the product categories with product
information in context helping you quickly become a category
expert and ensuring they have a long shelf life. We also plan
do revise each guide biannually to keep up with changes in
the category. 
Our Goals for the How-To-Select Guides
We set forth several goals for our How-To-Select Guides. We
wanted them to be: 
• Clear & Concise- Quick to read and easy to comprehend. 
• Accurate & Unbiased- Completely Defensible among lead-
ing experts with as little bias as humanly possible. 
• Exhaustive, Thorough, & Complete- Covering all options
include commercial, shareware, freeware, open source, and
even coding techniques; all decision points and aspects of
potential concern; and including all currently available prod-
ucts in the category. 
They are Living Guides
I think you'll agree we've come very close to achieving our
goals. But we are only human and there are aspects we for-
got, ones we didn't realize were important, and ones we prob-
ably omitting. But that's okay because our Guides live on at
http://forums.howtoselectguides.com. There you'll find lively
discussions about this and many other categories. Visit often
with your questions about selecting components or tools for
.NET 
Help us create your Ultimate Component & Tools
Selection Resource
We know our How-To-Select Guides can save you time and
help you avoid costly mistakes but we need your help to make
them even better: 
• Subscribe- Subscriptions are free, so sign up on our web-
site to receive each Guide as it's released. 
• Tell Others- If you know .NET developers, send them a link
to http://www.howtoselectguides.com/ and suggest they sub-
scribe too. 
• Mention in Newsgroups- When you answer questions in
developer newsgroups and forums about components and
tools, mention and include a link to our Guides. 
• Blog about a Guide- If you blog and are inspired by our
Guides, mention and include a link to that Guide. 
• Ask Questions- If our guides don't answer a question you
have, ask it in the forum so one of our authors and your fel-
low .NET developers can answer the question for you. 
• Answer Questions- Answer questions asked in our forum
by of other .NET developers, which also helps others with the
same question. 
• Make Suggestions- If you notice anything we can improve
about our Guides, post a suggestion in our forums. 
• Offer to Write- If you are a category expert, or want to
become one, and you are a good writer willing to meet dead-
lines, offer to write one of our future Guides. 
How-To-Select a PDF Component for .NET
Covers PDF components for use in both WinForm and WebForm/ASP.NET applications
3
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
TM
Library application component:VB.NET PDF Convert to Tiff SDK: Convert PDF to tiff images in vb.
NET control to batch convert PDF documents to Tiff format in Visual Basic. Qualified Tiff files are exported with high resolution in VB.NET.
www.rasteredge.com
Library application component:How to C#: File Format Support
Split PDF Document; Remove Password from PDF; Change PDF Permission Settings. VB.NET How-to, VB.NET PDF, VB.NET Word, VB.NET Excel, VB.NET PowerPoint, VB.NET
www.rasteredge.com
• Encourage Vendor Participation- Tell vendors being includ-
ed in relevant Guides is a prerequisite for considering pur-
chase of their products. 
• Support our Sponsors- Please consider supporting the
companies that sponsored and/or advertised in these Guides,
such as TallComponents and Xtras.Net in this Guide edition. 
Thanks for reading about our new How-To-Select Guides, and I
hope this and future Guides will both save you time and make
sure you make the right selection! 
Oh, and don't forget to subscribe!
Sincerely,
Mike Schinkel
Publisher
How-To-Select™ Guides
O
verv
i
ew of 
A
dobe 
PDF
The Adobe Portable Document Format
(PDF)
Adobe Acrobat files (often simply called PDF files, from
"Portable Document Format") are certainly one of the great
success stories of personal computing. Adobe's product strat-
egy combined two key features. First, they developed an open
file format that could handle complex document layouts
including illustrations and typography with excellent fidelity.
Second, they gave away reader software across a wide variety
of operating systems. The result has been to make PDF a de
facto standard for distributing high-quality documents of all
sorts, from instructional manuals to crossword puzzles. 
The ubiquity of PDF files makes them very attractive for many
purposes. When you want to generate attractive typeset con-
tent that will be accessible to viewers on many platforms, PDF
files are a natural choice. Adobe sells applications such as
Adobe Acrobat 7.0 Professional that allow you to create PDF
files from Word documents, scanned images, and other
sources. Other vendors, too, have entered the market with
their own programs that can produce PDF output. But such
manual solutions do not fill the needs of .NET application
developers who are looking for integrated PDF functionality. 
In this How-To-Select™ Guide, we'll look at components that
are designed to help you work with PDF files directly from
your .NET applications. These components cover a wide range
of functionality, from simply viewing existing PDF files to cre-
ating entirely new PDF files from scratch to more specialized
areas such as PDF forms. We'll cover both commercial and
opern-source offerings, and help you understand the wide
range of components available in this area. 
The PDF Specification
Adobe publishes a Web-based reference to the PDF specifica-
tion. You can download a copy from the Adobe Web site. The
current version of the PDF Specification is the Fifth Edition,
which covers version 1.6 of the specification, and which was
issued in November 2004. Naturally, it's published in PDF
form itself. If you want to understand all of the capabilities of
PDF files, from annotations to zooming, it's a must-have. The
specification also contains all of the information that you
need to build your own PDF files from scratch by stringing
together the internal typesetting codes that make up a PDF
file. Most developers, though, will find it much easier to pur-
chase a component to do this work instead! 
Adobe Reader Versions
As it has added new features to the Acrobat specification,
Adobe has issued new versions of the free Adobe Reader
application. For this How-To-Select™ Guide, we tested using
the most recent release, Adobe Reader 7.0. Just about every
PDF document in current use should also display fine in the
previous generation software, Adobe Reader 6.0.
Fun
ct
i
o
n
a
li
t
y
b
y
C
ategor
i
es
No one piece of software will do everything you can possibly
think of with PDF files. The format itself is flexible enough to
be used in many different ways, and component vendors have
come up with a variety of tools and components that you can
use in your own PDF applications. In this Guide we've collect-
ed examples of seven different kinds of PDF software: 
It's important to realize that these categories are not mutual-
ly exclusive. Some products, for example, can generate and
edit PDF files, as well as manipulate PDF forms. 
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
.NET Developer Series
4
• PDFViewers
• PDF Generators
• XML-to-PDF Processors
• PDF Print Drivers
• PDF Editord
• PDF Forms Products
• PDF Converters
Library application component:C#: How to Determine the Display Format for Web Doucment Viewing
convert PDF, Word, Excel and PowerPoint format files into _pptViewer are corresponding to setting PDF, Word, Excel on C#.NET web viewer, please change value to
www.rasteredge.com
Library application component:C# PDF Convert to SVG SDK: Convert PDF to SVG files in C#.net, ASP
In some situations, it is quite necessary to convert PDF document into SVG image format. Here is a brief introduction to SVG image.
www.rasteredge.com
PDF Viewers
Sometimes you just want to be able to view existing PDF files.
In this case, you need to find software that can act as a PDF
viewer. This might be a pre-built application that you can dis-
tribute in place of Acrobat Reader, a Windows Forms control
that you can drop into your own application, or a class library
that can render PDF content to a bitmap or other raster
image. 
PDF Generators
When you need to create a new PDF document "from
scratch," then you should consider a PDF generator. Software
in this category often provides an object model for PDF files
that allows you to build up documents from smaller entities
such as pages, paragraphs, tables, and images. Other prod-
ucts get their instructions from XML files while others are
implemented as printer drivers; we discuss these latter to in
their own sectrion. 
When choosing a object model based PDF generator, consider
the richness of the object model and the amount of control it
offers over placement and formatting of individual elements
within the PDF. 
XML-to-PDF Processors
XML processors are a special case of PDF generators. An XML
processor reads an XML file containing formatted instructions
and from it generates PDF. There are two flavors of XML
processors: ones that process XML documents marked up
with proprietary XML schemas and ones that process XML
documents marked up using the industry-standard XSL-FO
technology. XSL-FO is a page-oriented markup language that
is part of the W3C Extensible Stylesheet Language
Recommendation. One advantage of using XSL-FO rather than
a proprietary XML dialect is that many XSL-FO processors can
render their output to other formats in addition to PDF. 
An XML processor can take an XML document in the proper
schema and generate output in PDF (or in some cases other
printable formats). Such a processing engine is useful when
you're generating your PDFs from XML output created by
other applications. XML processors are also ideal if you are
treating your PDF generation as part of a standard-based doc-
ument generation process. 
PDF Print Drivers
One common strategy for creating PDF documents is to sim-
ply defer the entire problem to the Windows printing subsys-
tem. That is, instead of equipping your application with any
specific knowledge of the PDF format, you enable your appli-
cation's users to print documents to any Windows printer.
Then you install a special printer driver that, instead of print-
ing to a physical printer, directs the printed output to a PDF
file instead. 
This method allows you to use the same methods to develop a
PDF document that you would any other printed document
(for example, the methods of the System.Drawing and
System.Drawing.Printing namespaces). The end user of your
application then selects the PDF printer when they wish to
create a PDF document. 
In most cases, such virtual printers are installed on a system-
wide basis, so that they become available from any applica-
tion that the user has installed. Some vendors also provide
PDF printer drivers as libraries that you can call specifically
from your own applications without installing them as a sys-
tem printer. 
PDF Editors
In addition to creating new PDF documents from scratch, you
may wish to modify existing PDF documents. In this case,
you'll need to find a component that includes PDF editing
capabilities. Here you'll need to investigate carefully to match
your needs to the capabilities of a particular product. 
Some components can do little more than tack additional
pages on to the end of an existing file. Others can insert new
pages at arbitrary locations, add new content to an existing
page, split or merge PDF documents, or extract content from
a PDF document to a plain text file. A high-end editing prod-
uct can even give you full programmatic access to change the
existing content in a PDF file. 
Note that we're using the term "editor" in a somewhat nar-
rower sense than you'll sometimes encounter in discussing
software. While a text editor or an image editor ordinarily let
you both create new documents and manipulate new docu-
ments, most these PDF editors are targeted specifically at
editing tasks rather than document creation. 
PDF Forms Products
If you want to work with PDF interactive forms (also known as
AcroForms) you'll need a forms-capable component. Here
you'll find a variety of different levels of support, depending
on whether you want to create PDF files containing form
fields, automatically fill in form fields in code, or submit filled-
in forms using form actions. 
How-To-Select a PDF Component for .NET
Covers PDF components for use in both WinForm and WebForm/ASP.NET applications
5
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
TM
Library application component:VB.NET Image: Tutorial for Converting Image and Document in VB.NET
you integrate these functions into your VB.NET project, you are able to convert image to byte array or stream and convert Word or PDF document to image format.
www.rasteredge.com
Library application component:C# powerpoint - Convert PowerPoint to PDF in C#.NET
Why do we need this PowerPoint to PDF converting library? Under this situation, you need to convert PowerPoint document to some image format document.
www.rasteredge.com
PDF Converters
Finally, you may wish to convert PDF content to some other
format that's easier to work with. PDF viewers can be seen as
a special case of this category, converting PDF files to
bitmaps. Another example is the conversion of PDF files to
SVG files hosted on HTML pages for Web delivery of PDF doc-
uments. 
R
e
l
ated 
C
ategor
i
es
There are developer products that can generate and/or other-
wise work with PDF even though the primary focus of those
those products are not PDF. We'll be covering these related
categories in future HowTo-Select™ Guides: 
• Reporting Products
• Graphing and Charting Products
• Imaging Products
If one of these categories interests you greatly, let us know
via our online forums at http://forums.howtoselectguides.com. 
Reporting Products
Many reporting packages can export their finished reports as
PDF files. These packages are the most appropriate choice if
your primary interest is in databound reports that depend
directly on ADO.NET data sources. While you can use any
object-oriented PDF generator to create a banded report
based on hierarchical data, you'll find it much easier to do so
with a true reporting package. 
Graphing and Charting Products
Several graphing and charting products can export their fin-
ished graphics to a variety of file formats including PDF. If
your primary interest in the PDF file format is to have a high-
fidelity way to reproduce graphs and charts, using a charting
product may be a better bet than trying to build up the chart
yourself from the graphics primitives provided by a PDF gen-
erator. 
Imaging Products
Some imaging products provide general-purpose functionality
to convert between PDF files and various graphics file for-
mats. While these tools do not have any granular understand-
ing of the internal structure of PDF files, they may be useful if
your main goal is to publish PDF files to the Web or display
them on a form, or to create PDF files from existing graphic-
files. 
S
ce
n
ar
i
os
There are many different ways that you might want to use
PDF files in your own software, for example: 
• Embedded PDF Viewers
• Structured PDF Generation
• Unstructured PDF Generation
• Dynamic PDF Creation
• Databound PDF Report Creation
• Generating PDF Output From CMS
• HTML and PDF Form Merging
While it's impossible to explore every possibility, ths section of
the Guide offers some general guidance to common scenarios. 
Embedded Viewer
You may wish to allow users of your application to open and
view arbitrary PDF files. In this case, you should consider
using an embedded, self-contained PDF viewer component. A
control is often the simplest way to go here, though a class
library may offer you more flexibility. 
Structured PDF Generation
You may need to build PDF documents that have a relatively
fixed structure. For example, you might have an accounting
application that needs to generate invoices. In this case, a
batch-mode PDF generator that can create PDF from a text
file or a markup file, or a PDF print driver, may serve your
needs with the least effort. 
Unstructured PDF Generation
If your application allows users to generate PDF files with an
arbitrary structure, perhaps by drawing or typing content,
might need a more flexible generation method. In this case,
one of the PDF generators that implements a full object
model for PDF files is likely to be your best bet. 
Dynamic Document Creation
Sometimes you'll want to create dynamic PDF documents
based on user selections - for example, you might want to
assemble a custom product catalog from a range of possible
catalog pages. In this case, it's often effective to have all pos-
sible pages pre-built and to use an editing product that can
merge pages into a larger document to produce the final PDF
files. 
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
.NET Developer Series
6
Library application component:VB.NET PowerPoint: Complete PowerPoint Document Conversion in VB.
image or document formats, such as PDF, BMP, TIFF corresponding VB.NET guide for converting PowerPoint document to your required image or document format.
www.rasteredge.com
Library application component:C# PDF Thumbnail Create SDK: Draw thumbnail images for PDF in C#.
Description: Convert the PDF page to bitmap with specified format and save it on the disk. Parameters: Name, Description, Valid Value.
www.rasteredge.com
Databound Report Creation
In many cases you may want to produce a PDF report directly
based on data stored in a database. In this case, you might
want to consider using a full-fledged databound reporting
product instead of the type of product we review in this par-
ticular Guide. However, depending on your needs, you might
still be better off with a PDF-focused product some of them
do support data-binding via ADO.NET. 
We'll be covering reporting products in a future How-To-
Select™ Guide. 
CMS Document Output
If you're integrating PDF document creation with a content
management system, it's likely that you are working with an
existing XML-based infrastructure. In this case, you should
investigate XML processors as likely being the best fit to your
existing processes, especially if your CMS already uses XSL-
FO. 
HTML and PDF Form Merging
It may be convenient to let people fill out forms as HTML and
then provide them with a finished product as high-fidelity PDF
in their browsers. You can accomplish this with a suitable PDF
forms product that lets you edit a basic PDF document with
form fields and "flatten" the result into a static PDF document
that you then output to the user's browser. 
How-To-Select a PDF Component for .NET
Covers PDF components for use in both WinForm and WebForm/ASP.NET applications
7
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
TM
D
ec
i
s
i
o
n
P
o
in
ts
With all the different software in the PDF category, it can be
difficult to sort out exactly what you need to make your appli-
cation a success. In this section of the Guide, we'll offer advice
about factors that should influence your decision. 
• Try Before You Buy
• Consider Vendor's Other Products
• Choosing a PDF Viewer
• Choosing a PDF Generator
- Generation Strategies
- Object Model Synthesis
- Windows Forms Control
- Event-Driven Generation
- Streaming Generation
- Merging Data
- XML Transformation
- XSL-FO Processing
• Output Methods
- Disk Files
- Stream Object
- ASP.NET Response Object
• Special Features
- Font Embedding
- Images
- Graphics
- Tables
- Text flow
- Annotations
- Bookmarks
- Hyperlinks
• Understanding XSL-FO
• Understanding PDF Encryption
• Four Levels of PDF Editing
- Rearranging Existing Content
- Add New Content
- Modify Existing Content
- Access Low-Level API
Naturally, not all of these factors will apply to every applica-
tion. 
Try Before You Buy
The first thing to keep in mind is that no matter how much
information we pack into this Guide, there's no substitute for
trying the software in your own environment. No one knows
your own requirements, or the quirks of your own tools and
components, better than your do. Fortunately, just about
every vendor in the .NET tools and components business pro-
vides a trial version of their software for free evaluation these
days. We recommend that you use this Guide to locate the
components that seem like a good fit for your project, and
then download copies to further evaluate them in your own
environment. With PDF components, you'll find that evalua-
tion copies normally print some sort of banner or watermark
on the generated or displayed document. This is not enough
to interfere with evaluation, but generally precludes you from
using an evaluation copy in a commercial application. Of
course, you should follow the licensing requirements scrupu-
lously in any case. 
Consider Vendor's Other Products
In many cases, the PDF software that we're reviewing is only
part of a vendor's product line. Some vendors provide a much
broader line of developer components and tools. Other ven-
dors sell complementary end-user applications. 
If a single vendor can supply multiple components that you
need, you may benefit from reduced licensing fees by buying
the components together in the form of a suite. This can also
cut your learning curve by giving you products that follow
similar conventions and that work well together. In the case of
end-user applications, you might find that you need to do less
work to complete your application because your end users
can use these vendor-supplied pieces instead of custom-
developed functionality. 
Choosing a PDF Viewer
In many cases, you won't need to choose a PDF viewer at all,
because you can depend on the end user to download a copy
of the free Acrobat Reader and use that. But there may be
times when you need or want an embedded solution; i.e.
where the viewer is an integral part of your own application.
In this case, you'll need to evaluate the various controls and
class libraries available. A control may provide the simplest
interface, but generally the class libraries provide more flexi-
bility. For the easiest integration with the .NET Framework,
you will probably want to consider one that interfaces to the
existing Graphics class. Viewers that use their own propri-
etary drawing libraries instead are likely to require more code
to implement in your application. 
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
.NET Developer Series
8
Choosing a PDF Generator
If your goals include building PDF files from scratch, you'll
want to look at one of the many PDF generator products on
the market. You'll quickly find that these products span a vari-
ety of price points and capabilities. Understanding your choic-
es will help you narrow down the selection to the products
that will best fit your needs.
Generation Strategies
Generally speaking, you can choose between seven different
methods of programmatically generating PDF files: 
Object Model Synthesis - This is the most common
approach. Starting with some top-level object, such as
Document or Pdf, you build up your PDF by adding objects
representing text, images, bookmarks, and the other parts of
a PDF file. Within this category, you'll find three broad
approaches to the problem of representing the structure of a
PDF file. Some products place a very thin wrapper over the
low-level structure used by Adobe for PDF itself. Others start
from the object model developed in the System.Drawing
namespace of the .NET Framework, and mimic it to produce a
set of objects and members that are more familiar to .NET
developers. Still others develop their own abstract model of
the objects that make up a document. When you're using an
object model to build PDF files, you need to decide which of
these styles you prefer. You also need to investigate the rich-
ness of the object model to determine whether it includes
objects representing all of the features that you'd like to use
in your document. For example, if you want to include a table,
do you need to draw it with lines and calculate where to place
text yourself, or is there some higher-level abstraction repre-
senting a table already baked into the object model? 
Windows Forms Control- Instead of providing an abstract
class, some vendors provide an object model wrapped as a
Windows Forms control or an ActiveX control that can be
instantiated on a Windows Form. This approach tends to be
similar to the object model approach as far as building the
actual document, but precludes you from using with ASP.NET,
windowless Windows Services, and/or console applications. 
Event-Driven Generation- This approach is analogous to the
method used by the System.Drawing.Printing namespace in
the .NET Framework. With this approach, you create a top-
level object and register your own event handlers for events
such as the start of printing each page. When your code is
called back in response to these events, it's up to you to sup-
ply the appropriate objects to be printed. This sort of "pull"
approach can help minimize memory requirements for large
documents. 
Streaming Generation- Another approach that can result in
lower memory requirements for large documents is an API
that allows streaming a PDF directly to a FileStream or other
output object. Typically, products that implement such an API
let you open a file and then send paragraphs of text, images,
and other objects to the file without maintaining the entire
document in memory. While this way of producing a PDF can
lower the resource hit for producing large documents, it also
typically constrains you from using some features such as
cross-references within a document. 
Merging Data- Some products can generate PDF files by
merging data from existing files such as text and image files.
These may be plain text files, or files containing special
markup codes that are interpreted by the batch generation
software. This approach is best suited for applications such as
batch generation of invoices or form letters. 
XML Transformation- Several products implement their own
XML Document Object Model to represent the parts of a PDF.
With these products, you can directly open an XML document
that follows the correct DOM and immediately save it as PDF
with no further processing. Alternatively, you can use XSL to
transform another XML document to the expected format and
then save it as PDF. You may also be able to combine this sort
of XML-based PDF creation with object model based modifica-
tion in a hybrid approach. 
XSL-FO Processing- Another way to combine PDF genera-
tion with XML standards is to use an XSL-FO formatting
engine together with the XSL-FO standard. Several of the
products in this Guide implement XSL-FO engines in .NET
code. See the section "Understanding XSL-FO" later in this
Guide for more information. 
Output Methods
If you're generating PDF, you should consider where you'll be
storing the generated PDFs. Various products offer more or
less flexibility in their output APIs. 
Disk Files- At the most basic level, any product should be
able to generate a file on disk. But you may need more flexi-
bility than that. 
Stream Object- Some products let you send their output to
any Stream object (FileStream, MemoryStream, and so on). 
ASP.NET Response Object- If you're working in an ASP.NET
application, you will probably want a product that can write
directly to the ASP.NET Response object. The alternative is to
output PDFs to temporary files and then point the user's Web
How-To-Select a PDF Component for .NET
Covers PDF components for use in both WinForm and WebForm/ASP.NET applications
9
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
TM
browser to those temporary files. But if you do that, you have
to manage the process of cleaning up the temporary files
after some arbitrary time period, at which point the URLs to
your previously-generated PDFs will break. 
Special Features
Finally, you should pay attention to the special features that
may make your life easier. Any PDF generator will let you
place text and lines on a page, and build up a document from
multiple pages. But the PDF specification encompasses much
more sophistication than that, and various products also bring
in their own notions of more sophisticated objects. We can't
cover every facet of every generator, but here are some rep-
resentative capabilities that you might find useful: 
Font Embedding- The PDF specification allows for embed-
ding TrueType and PostScript fonts directly in a document, so
that the document will look right even on a computer that
doesn't have the font installed. More sophisticated versions
allow embedding partial fonts (only the characters that you
actually use) and Unicode fonts. 
Images- If you're working with images, check to make sure
that the format you want to use is supported by the product
you're considering. 
Graphics- Support for drawing graphics using lines, arcs, cir-
cles, and so on varies widely. Some products offer only a few
methods in this area; others have rich object models with
scaling, rotation, transparency, and the ability to construct
your own composite objects. 
Tables- The PDF specification itself doesn't deal with tables,
but many PDF generators include methods designed specifi-
cally to build tables. 
Text flow- If you're composing documents from large
amounts of text, you may want a product that can automati-
cally handle flowing text from one paragraph, table cell, or
page to another. 
Annotations- PDF annotations can be notes, highlighting, or
even embedded files. If you need these features, you'll find
that this limits the software that you can use to generate
PDFs. 
Bookmarks- PDF bookmarks are used to generate the hierar-
chical outline that serves as a table of contents in Acrobat
Reader. For long documents, you'll want a product that can
easily insert bookmarks into your documents. 
Hyperlinks- The PDF specification allows hyperlinks both
within a document and to external URLs. If you want to make
use of this facility, make sure you pick a product that under-
stands hyper-linking. 
Understanding XSL-FO
If you're looking for a standards-based approach to building
PDF files, you should investigate XSL-FO. The "XSL" stands for
"eXtensible Style Language" and the FO stands for
"Formatting Objects." XSL-FO is a part of the W3C Extensible
Stylesheet Language (XSL) Version 1.0 Recommendation and
it provides a standard set of XSL tags for transforming XML
documents into a page-oriented print representation, with
headers, footers, text paragraphs, images, columns, tables,
and so on. 
XSL-FO is not tied explicitly to PDF; an XSL-FO processor can
read an XSL-FO file and generate print-ready output.
Depending on the particular XSL-FO processor, this output
may be in formats such as PostScript or RTF in addition to
PDF. This gives you a certain amount of freedom. If you store
the source for your PDF files in XML format and transform
into XSL-FO you can later choose a different physical output
format by supplying different parameters to the XSL-FO for-
matting engine. Whether it's actually practical to do so will
depend on your use of any vendor-specific extensions to the
XSL-FO standard, availability of an XSL-FO formatter for the
output format you need, licensing fees, and (if you find your-
self needing to swich engines) compatibility. At the time of
this writing few XSL-FO processors for .NET or otherwise sup-
port the entire XSL-FO specification, and in many cases those
that claim support don't implement everything 100% correct-
ly. 
Of course if you like the idea of storing your data in XML and
using XSL transforms but don't expect a benefit from using
W3C standard XSL-FO, you can select one of the products that
use a proprietary XML schema to generate your PDFs. 
Understanding PDF Encryption
The PDF standard includes encryption and password features
to help secure documents. You can encrypt a PDF document,
which makes it useless hash except when decrypted. To
decrypt the document, you must supply one of two pass-
words, the user password or the owner password. The user
password allows you to open and view the document, but may
not allow full control of the document. When a document is
encrypted, you can specify that some operations, such as
printing, copying text, or modifying the document, should not
be allowed if only the user password is supplied. The owner
password allows you to do anything with the document,
Still have questions, want more details, need advice, or have suggestions? 
Visit h
t
tp://
f
orums
.ho
wt
o
s
elect
guide
s
.
c
om/
do
tne
t
/
pdf
/
.NET Developer Series
10
Documents you may be interested
Documents you may be interested