asp.net pdf viewer user control c# : Enable pdf thumbnails software SDK dll winforms windows asp.net web forms QC2_yf_reviewed2-part937

CHAPTER 1
Comparing Selected Flex Frameworks
The first 90% of the code accounts for the first 90% of
the development time. The remaining 10% of the code
accounts for the other 90% of the development time.
—Tom Cargill
Frameworks Versus Component Libraries
Whenever the subject of third-party architectural frameworks is raised at a gathering
of Flex developers, the developers are quick to start explaining how they use and like
a particular framework. But a simple question like “Why do you use this framework?”
often catches them off guard. Many enterprise developers, especially those who came
to Flex after spending some time developing Java EE applications, just know that using
these frameworks is the right thing to do. Is it so? What are the benefits of using ar-
chitectural frameworks? This chapter offers some answers as to what you should expect
of a framework built on top of the Flex framework.
The goal of any well-designed framework is to make the process of software develop-
ment and maintenance easier. There are different ways of achieving this goal. Some
people prefer working with frameworks that are based on the Model-View-Controller
pattern; others like dealing with libraries of components. Each approach has its benefits
and costs. In this chapter, you will learn how to build the same application using several
frameworks or component libraries used by Flex developers.
First let’s define the term framework versus component library. Imagine a new housing
development. For some pieces of property, the builder has already erected the frames
for certain house models, but some of the pieces of property have only piles of con-
struction materials guarded by specially trained dogs. By the entrance to the new
community, you see completely finished model house with lots of upgrades.
You have three options:
• Purchase the model house and move in a month.
1
Enable pdf thumbnails - Draw thumbnail images for PDF in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
pdf files thumbnails; disable pdf thumbnails
Enable pdf thumbnails - VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Thumbnail Generation with Various Options for Quick PDF Navigation
generate thumbnail from pdf; show pdf thumbnail in html
• Purchase one of five prearchitected models (see those houses that are framed?).
The frames are pretty much ready; you just need to select windows, flooring, and
kitchen appliances.
• Purchase a custom house using a mix of builder’s and your own materials.
Now, to draw some analogies from the software engineering world, Case A is the
equivalent of purchasing an all-encompassing enterprise software package that comes
with 2,000 database tables and thousands of lines of code, with a promise to cover all
the needs of your organization.
Case B is the equivalent of a software framework that you must code in ways that
operate by the rules of framework, adding your own application-specific logic where
appropriate. Often such frameworks are intrusive—you have to include in your appli-
cation code hooks to build your software on the pillars of selected framework.
Case C gives you complete freedom of choice, as long as you have all the components
and the know-how to put them together. For some people, it’s the most appealing
option, but for others it is the most intimidating option, because it has such freedom;
these people select option B to ensure that their house will not be blown away by the
Big Bad Wolf, as in the fairy tale “The Three Little Pigs” (http://en.wikipedia.org/wiki/
Three_Little_Pigs).
Adobe Flex provides you with an extendable framework that you can use as a solid
starting point for your business application. Along with that, there are a number of
third-party frameworks and component libraries created with the same noble goal: to
make your life easier.
As Flex is already a framework, you should have very strong reasons to create another
one. Flex has extendable components and events, and when you work in a team of
developers, each of them may have a different understanding of how custom compo-
nents should find and communicate with each other, how to properly organize the
project, and how to make a team work more productively. At the time of this writing,
there are about a dozen Flex frameworks from which you can choose to help you or-
ganize your Flex project. Each of these frameworks has the same goal: to increase each
developer’s productivity.
In this chapter, you’ll get familiar with three architectural frameworks and one toolkit,
which includes additional productivity plug-ins and a component library. Of course,
as the readers of this book may have a different understanding of what easy means, the
authors decided to show you how you can build the same application using each of the
frameworks or libraries. (Each of the reviewed products is offered at no charge.)
The sample application that you will build is based on Café Townsend, a small program
that was originally developed by creators of the Cairngorm framework. This application
allows the end user to maintain data for Café Townsend’s employees. The application
reads data from the database, displays a list of employees, and allows the user to add
a new employee or edit an existing employee.
2 | Chapter 1: Comparing Selected Flex Frameworks
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Embedded page thumbnails. outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; 'create optimizing for Monochrome Image 'to enable dowmsampling for
view pdf thumbnails in; pdf no thumbnail
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Embedded page thumbnails. outputFilePath = Program.RootPath + "\\" 3_optimized.pdf"; // create optimizing Monochrome Image -- // to enable downsampling for
create pdf thumbnails; pdf thumbnails in
The chapter starts by introducing the original Cairngorm Café Townsend application
on the Adobe website at http://www.adobe.com/go/cairngorm. Next, it explores the
version of  the application  written in the  Mate framework and published on the
AsFusion website at http://mate.asfusion.com. The chapter then analyzes the version of
the application written in the Cliff Hall’s PureMVC framework and published at http:
//www.puremvc.org. Finally, you’ll explore a version of the Café Townsend application
generated with the help of the open source Clear Toolkit (available at http://sourceforge
.net/projects/cleartoolkit). The Café Townsend application versions are posted on each
framework’s corresponding website, which is the best place to download the sample
application and the given framework, as it’s safe to assume that the authors of the
frameworks in each case have either written or approved the code.
Each of the following sections starts with a brief introduction of the framework or
library, followed by a code walkthrough and conclusions. Each framework will be ex-
plored, followed by a report card evaluation of the framework’s pros and cons.
Introducing Café Townsend
The original Café Townsend application consists of three views (Figures 1-1, 1-2, and
1-3). These views allow the user to log in, display the list of employees, and add a new
employee of the café. The application also has one image (the Café Townsend logo)
and a CSS file, main.css, for styling.
Figure 1-1. Café Townsend Employee Login view
Introducing Café Townsend | 3
C# HTML5 PDF Viewer SDK to view, annotate, create and convert PDF
framework class. An advanced PDF editor enable C# users to edit PDF text, image and pages in Visual Studio .NET project. Support to
pdf thumbnail html; enable pdf thumbnails in
C# HTML5 PDF Viewer SDK deployment on IIS in .NET
and set the “Physical path” to the place where you store XDoc.PDF.HTML5 Viewer Demo. Pool Defaults…" in the right panel, and set the value "Enable 32-Bit
view pdf image thumbnail; thumbnail pdf preview
Figure 1-2. Café Townsend Employee List view
The application retrieves data from Employee.xml, as shown in the following code
snippet:
<?xml version="1.0" encoding="utf-8"?>
<employees>
<employee>
<emp_id>1</emp_id>
<firstname>Sue</firstname>
<lastname>Hove</lastname>
<email>shove@cafetownsend.com</email>
<startdate>01/07/2006</startdate>
</employee>
...
</employees>
Although retrieving data from an XML file simplifies the explanation of this framework
in this example, it is preferable that you pass the typed data from the server in real-
world projects, for example, Java value objects converted into their ActionScript
strongly typed peers. This technique eliminates the need to write a lot of mundane code
to convert the 
startdate
from 
String
to 
Date
and the like.
At the end of this chapter, you’ll learn how to include a Java-to-ActionScript 3.0 version
of the Café Townsend application, which uses Flex remoting to populate the data.
4 | Chapter 1: Comparing Selected Flex Frameworks
VB.NET PDF - VB.NET HTML5 PDF Viewer Deployment on IIS
and set the “Physical path” to the place where you store XDoc.PDF.HTML5 Viewer Demo. Pool Defaults…" in the right panel, and set the value "Enable 32-Bit
create thumbnail from pdf; how to make a thumbnail from pdf
C# PDF Page Rotate Library: rotate PDF page permanently in C#.net
Enable batch changing PDF page orientation without other PDF reader control. Support to overwrite PDF and save rotation changes to original PDF file.
how to show pdf thumbnails in; program to create thumbnail from pdf
Figure 1-3. Café Townsend Employee Details view
Employee List Without Frameworks
The title of this section is a bit of a misnomer, because Flex itself is a framework. But
we wanted to stress that you can create an application that reads XML and displays the
data in a list control without the use of any additional third-party framework or com-
ponent library.
The Flex framework already supports the MVC pattern by separating the view (the
List
control) and the data that can be stored in a nonvisual data provider such as
ArrayCollection
. Let’s write a quick-and-dirty version of the 
EmployeeList
component
that does not use any frameworks.
This Café application uses 
HTTPService
to read the file Employees.xml located in the
folder assets, and a 
List
component displays the full name of the employee using the
label function 
fullName()
.
The data is stored in the data provider 
employees
(a.k.a. MVC’s Model), and the 
List
controls play the role of MVC’s View. For simplicity, this version does not have error
processing, and the Add Employee and Logout buttons are nonfunctional.
The following application (Example 1-1) reads the list of employees using just the Flex
framework.
Introducing Café Townsend | 5
C# Create PDF from OpenOffice to convert odt, odp files to PDF in
with XDoc.PDF SDK. Enable C#.NET Users to Create PDF OpenOffice Document (Odt, Ods, Odp) from PDF with .NET PDF Library in C# Class.
pdf preview thumbnail; show pdf thumbnail in
VB.NET PDF metadata library: add, remove, update PDF metadata in
VB.NET PDF - Read and Write PDF Metadata in VB.NET. Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata in Visual Basic .NET.
cannot view pdf thumbnails in; view pdf thumbnails
Example 1-1. EmployeeList using the Flex framework
<?xml version="1.0" encoding="utf-8"?>
<!-- The service call empService.send() plays the role of MVC Controller -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="empService.send()">
<mx:Panel title="Employee List" horizontalCenter="0">
<mx:HBox paddingTop="25">
<mx:Button label="Add New Employee" />
<mx:Spacer width="100%" />
<mx:Button label="Logout" />
<mx:Spacer width="100%" height="20" />
</mx:HBox>
<!-- List of Employees a.k.a. View-->
<mx:List id="employees_li" dataProvider="{employees}"
labelFunction="fullName" width="100%"/>
</mx:Panel>
<mx:HTTPService id="empService" url="assets/Employees.xml"
result="employeeDataHandler(event)" />
<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;
import mx.collections.ArrayCollection;
//data provider for the list is an ArrayCollection a.k.a. model
[Bindable]
private var employees: ArrayCollection=new ArrayCollection;
private function employeeDataHandler(event:ResultEvent):void{
employees=event.result.employees.employee;
}
// format the names to display last and first names in the List
public function fullName( empItem : Object ) : String {
return empItem.lastname + ", " + empItem.firstname;
}
]]>
</mx:Script>
</mx:Application>
Because real-world RIAs (rich Internet applications) are a lot more complex than this
simple application and may contain a hundred or more different views created by mul-
tiple developers with data coming from different sources, consider using one of the
additional frameworks or component libraries to simplify the programming of similar
tasks and to better organize the project.
Now let’s consider the Café application rewritten in Cairngorm, Mate, PureMVC, and
the Clear Toolkit.
6 | Chapter 1: Comparing Selected Flex Frameworks
VB.NET PDF Text Extract Library: extract text content from PDF
Enable extracting PDF text to another PDF file, and other formats such as TXT and SVG form. OCR text from scanned PDF by working with XImage.OCR SDK.
pdf first page thumbnail; enable pdf thumbnail preview
C# PDF Text Extract Library: extract text content from PDF file in
Enable extracting PDF text to another PDF file, TXT and SVG formats. Support extracting OCR text from PDF by working with XImage.OCR SDK.
print pdf thumbnails; enable thumbnail preview for pdf files
Cairngorm
The architectural framework Cairngorm was created by Alistair McLeod and Steven
Webster while they were working at the company iteration::two (they are presently
employed by Adobe Consulting). Cairngorm implements several design patterns such
as MVC, Command, and Delegate. It was open sourced in the summer of 2008.
Cairngorm was designed to ensure that UI components do not need to know where
data is located. The business layer retrieves data from the servers and stores it in the
memory objects that represent the data model, which use binding to notify the UI
components about data arrival or changes. On the same note, changes in the UI are
propagated to the server side through this business layer.
The Cairngorm framework promotes the use of the MVC design pattern in the client
portion of your RIA. It offers a number of classes implementing Model, View, and
Controller tiers, and interaction between them.
The Model tier is represented by the class 
ModelLocator
, which stores the application-
specific data (these are often collections of value objects a.k.a. data transfer objects).
ModelLocator
’s data is bound to the View controls.
The View portion contains visual components required by your application, value ob-
jects, and Cairngorm-specific event classes used for communication with the Model
and Controller tiers.
The Controller tier is responsible for invoking appropriate code containing the business
logic of your application, which is implemented by using global 
FrontController
and
ServiceLocator
classes as well as additional 
Command
and 
Delegate
classes.
The Cairngorm framework’s documentation and sample applications are located at
http://www.cairngormdocs.org.
As this chapter was being written, Adobe decided to rebrand Cairn-
gorm; instead of a mere framework, they are promoting it as a set of
tools  and methodologies containing  various  frameworks,  including
what has been earlier known as the “Cairngorm framework.” You can
read about this Cairngorm 3 initiative at http://opensource.adobe.com/
wiki/display/cairngorm/Cairngorm+3. In this chapter, we refer to Cairn-
gorm 2, which was an MVC Flex framework and nothing else.
Café Townsend with Cairngorm
The “pure Flex” code shown in Example 1-1 includes representatives of each MVC tier.
The code knows that the data will be loaded into an 
ArrayCollection
(the Model) by
the HTTP service pointing at the Employees.xml file by calling a 
send()
method on the
creationComplete
event (the Controller) of the application. The 
List
component (the
View) knows about its model and is bound to it directly via its 
dataProvider
property.
Cairngorm | 7
The data flow between Cairngorm components while displaying a list of café employees
is depicted in Figure 1-4.
FrontController
1. Dispatch
event
2. Execute
command
7. Update
model
8. Update bound
view component
6. Return
result/fault
5. Return
result/fault
3. Call business
function
4. Call remote
service
7. Update
model
ound
onent
ModelLocator
8. Update bound
view component
View
Command
Delegate
Services
Figure 1-4. Cairngorm employee list data flow
The Cairngorm version of this application has the following six major participants:
Services
The UI portion does not know about implementation of services and can’t call
them directly, so you must move the 
HTTPService
object into a special file called
Services.mxml.
FrontController
The view and the service layer can’t send events to each other directly, but rather
have to be registered with a singleton 
FrontController
that maps all application
events to appropriate actions (commands).
Command
When a 
View
component fires an event, 
FrontController
finds the 
Command
class
that was registered with this event and calls its method 
execute()
.
Delegate
The method 
execute()
of the 
Command
class creates an instance of the 
Delegate
class
that knows which service to call (
HTTPService
RemoteObject
WebService
) and re-
turns the result or fault to the 
Command
class.
8 | Chapter 1: Comparing Selected Flex Frameworks
ModelLocator
The 
Command
class updates the data in the model (typically, a collection of value
objects) defined in the global 
ModelLocator
.
View
Because each model located inside the 
ModelLocator
is bound to a UI control, its
content gets updated automatically.
Use the source code of the Café Townsend Multi-View Contact Management applica-
tion that was converted to Cairngorm 2 by Darren Houle and is available under the
Creative  Commons  license  (http://creativecommons.org/licenses/by/2.5/).  You  can
download the source code of this application at http://cairngormdocs.org/blog/?p=19.
In Figure 1-5 is the screenshot of the Café Townsend Flash Builder project. Please note
that the code for the six participants mentioned earlier is organized in separate packages
(folders). The business folder is for delegates and service components. The command
folder  is  for 
Command
classes;  control  is  for  events  and 
FrontController
 the
ModelLocator
is located in the model folder; and the folder view has visual components
as shown in Figures 1-1 through 1-3. The value objects of the application have been
placed in the folder called vo. Regardless of what framework you are going to use,
separating various application components in project subfolders helps make the project
more organized (Figure 1-5).
Figure 1-5. Café Townsend Cairngorm project structure
To make Cairngorm classes available to your application, just download Cairngorm’s
compiled version (binary) and add cairngorm.swc to the Library path of your Flex
project (use the Flex Build Path menu under your project’s properties).
Let’s get familiar with the Cairngorm workflow by tracing the data and events starting
from the main application object of Café Townsend, shown in Example 1-2. Please
Cairngorm | 9
note the use of four global objects: 
AppModelLocator
Services
AppController
, and
CairngormEventDispatcher
.
Example 1-2. The application file of Café Townsend
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!--
Cafe Townsend MVC Tutorial © 2006 Adobe
Converted to Cairngorm 2 by Darren Houle
lokka_@hotmail.com   http://www.digimmersion.com
This is released under a Creative Commons license.
http://creativecommons.org/licenses/by/2.5/
-->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:business="com.adobe.cafetownsend.business.*"
xmlns:control="com.adobe.cafetownsend.control.*"
xmlns:view="com.adobe.cafetownsend.view.*" backgroundColor="#000000"
creationComplete="loadEmployees();" layout="vertical
viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import com.adobe.cairngorm.control.CairngormEventDispatcher;
import com.adobe.cafetownsend.control.LoadEmployeesEvent;
import com.adobe.cafetownsend.model.AppModelLocator;
[Bindable]
private var model: AppModelLocator =
AppModelLocator.getInstance();
private function loadEmployees() : void {
var cgEvent : LoadEmployeesEvent = new LoadEmployeesEvent();
CairngormEventDispatcher.getInstance().dispatchEvent(cgEvent);
}
]]>
</mx:Script>
<business:Services id="services"/>
<control:AppController id="appController"/>
<mx:Style source="assets/main.css"/>
<mx:Image source="assets/header.jpg" width="700"/>
<mx:HBox backgroundColor="#ffffff" paddingBottom="10" paddingLeft="10"
paddingRight="10" paddingTop="10" width="700">
<mx:VBox paddingRight="10" verticalScrollPolicy="off" width="100%">
<mx:ViewStack paddingBottom="10" paddingTop="10" resizeToContent="true"
selectedIndex="{model.viewing}" width="100%">
<view:EmployeeLogin/>
<view:EmployeeList/>
<view:EmployeeDetail/>
</mx:ViewStack>
</mx:VBox>
</mx:HBox>
</mx:Application>
10 | Chapter 1: Comparing Selected Flex Frameworks
Documents you may be interested
Documents you may be interested