telerik pdf viewer mvc : Changing file from pdf to jpg control Library platform web page .net azure web browser Enterprise-Development-with-Flex44-part743

section’s source code includes the following Flash Builder projects: OptimizedPortal,
FeedModuleChartsModule, and PortalLib.
Creating Modules with Test Harness
Once again, here’s our main principle of building enterprise Flex applications: a light-
weight shell application that loads modules when necessary. This approach leads to
the creation of modularized and better-performing RIAs. But when a developer works
on a particular module, to be productive, he needs to be able to quickly perform unit
and functional tests on his modules without depending too much on the modules his
teammates are working on.
The project FeedsModule is an Eclipse Dynamic Web Project with its own “server-side”
WebContent directory. This project also includes a very simple application,
TestHarness.mxml, that includes just two modules: 
GoogleFinancialNews
and
YahooFinancialNews
. Let’s say Mary is responsible for the development of these two
modules that later will become part of a larger OptimizedPortal. But if in Chapter 7 the
portal was created for integrating various applications, here we are building it as a shell
for hosting multiple modules.
To avoid having issues caused by merging module and application stylesheets, we rec-
ommend having only one CSS file on the application level. This may also save you some
grief trying to figure out why modules are not being fully unloaded as the description
of the 
unload()
function promises; merged CSS may create strong references that won’t
allow a garbage collector to reclaim the memory upon module unloads.
You also want to avoid linking into the module’s byte code the information from the
services-config.xml file that comes with BlazeDS/LCDS. If you specify a separate
services-config.xml in the compiler’s option of the module’s project, the content of such
services-config.xml (configured destinations and channels) gets sucked into the com-
piled .swf.
On our team, all developers must submit their modules fully tested and in the minimal
configuration. Example 8-11 lists the application that Mary uses for testing, and
Figure 8-8 shows the results.
Example 8-11. TestHarness.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Label text="google"/>
<mx:ModuleLoader id="mod1"
width="800" height="300"
applicationDomain="{ApplicationDomain.currentDomain}"
ready="mod2.loadModule('YahooFinancialNews.swf')"/>
<mx:Label text="yahoo"/>
<mx:ModuleLoader  id="mod2" width="800" height="300"
Optimizing RSL Loading g | 417
Changing file from pdf to jpg - Convert PDF to JPEG images in C#.net, ASP.NET MVC, WinForms, WPF project
How to convert PDF to JPEG using C#.NET PDF to JPEG conversion / converter library control SDK
convert pdf to jpg converter; .net pdf to jpg
Changing file from pdf to jpg - VB.NET PDF Convert to Jpeg SDK: Convert PDF to JPEG images in vb.net, ASP.NET MVC, WinForms, WPF project
Online Tutorial for PDF to JPEG (JPG) Conversion in VB.NET Image Application
best way to convert pdf to jpg; convert pdf to jpg c#
applicationDomain="{ApplicationDomain.currentDomain}"/>
</mx:Application>
Figure 8-8. Running TestHarness.mxml
Each of the modules in 
TestHarness
has the ability to load yet another module:
ChartModule
. This is done by switching to the view state 
ChartState
and calling the
function 
loadChartSWF()
Example 8-12 shows the code of the module
YahooFinancialNews
.
Example 8-12. The module YahooFinancialNews
<?xml version="1.0" encoding="utf-8"?>
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"
horizontalGap="0" verticalGap="0"  width="100%" height="100%"
paddingBottom="0" paddingLeft="0" paddingRight="0" paddingTop="0"
backgroundColor="white"
>
<mx:states>
<mx:State name="ChartState">
<mx:RemoveChild target="{newsGrid}"/>
<mx:AddChild relativeTo="{header}" position="after">
<mx:ModuleLoader id="chart_swf"
418 | | Chapter 8: Performance Improvement: Selected Topics
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
the second PDF file to the target one, this PDF file merge function put the two target PDF together and save as new PDF, without changing the previous
change pdf to jpg format; convert pdf pages to jpg online
XDoc.HTML5 Viewer for .NET, All Mature Features Introductions
PowerPoint: PPT, PPTX, PPS, PPSX; PDF: Portable Document to open specified file in server file system or or zoom out functions, and changing file rotation angle
convert pdf pages to jpg; change pdf to jpg file
applicationDomain="{ApplicationDomain.currentDomain}"
</mx:AddChild>
</mx:State>
</mx:states>
<mx:HBox id="header"
width="100%" height="25"
backgroundColor="#ffffff" backgroundAlpha="0.8"
verticalAlign="middle" color="black">
<mx:Label htmlText="Yahoo: Effective copy of PortletInfo class:
{PortletInfo.INFO}"/>
<mx:HBox width="100%" horizontalAlign="right" horizontalGap="3"
verticalGap="0">
<mx:Label text="Message: "/>
<mx:VRule height="20"/>
'' : 'ChartState')"/>
</mx:HBox>
<mx:filters>
<mx:DropShadowFilter angle="90" distance="2"/>
</mx:filters>
</mx:HBox>
<mx:DataGrid id="newsGrid" width="100%" height="100%"
dataProvider="{newsFeed.lastResult.channel.item}"
variableRowHeight="true"
<mx:columns>
<mx:Array>
width="200"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
<mx:HTTPService id="newsFeed" useProxy="true"
destination="YahooFinancialNews"  concurrency="last"
resultFormat="e4x" fault="onFault(event)"/>
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import com.farata.portal.Message;
import com.farata.portal.events.BroadcastMessageEvent;
import mx.controls.Alert;
import mx.rpc.events.*;
[Bindable]
private var _messageText:String;
Optimizing RSL Loading g | 419
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Supports for changing image size. this .NET PDF to TIFF conversion control, C# developers can render and convert PDF document to TIFF image file with no loss
convert pdf to jpg file; pdf to jpg converter
VB.NET Image: PDF to Image Converter, Convert Batch PDF Pages to
image format in VB programming code, like changing "tif" to and then you can get any wanted target image file. users are also allowed to convert PDF to other
convert multiple page pdf to jpg; best program to convert pdf to jpg
private function onCreationComplete():void {
bridge.addEventListener(
newsFeed.send({s:"YAHOO"});
}
private function loadChartSWF():void{
chart_swf.loadModule("/ChartsModule/ChartModule.swf");
}
private function messageBroadcasted( event:Event ):void{
var newEvent:BroadcastMessageEvent =
BroadcastMessageEvent.unmarshal( event );
var message:Message = newEvent.message;
_messageText = message.messageBody;
}
private function onFault(event:FaultEvent):void {
Alert.show( event.toString() );
mx.controls.Alert.show(
"Fault code:" + event.fault.faultCode + "\n" +
"Detail:" + event.fault.faultDetail, "News feed failure"
);
}
]]>
</mx:Script>
</mx:Module>
Click the application’s Show Chart button to make sure that loading one module from
the other works fine and that they properly pick the destination from the main appli-
cation’s services-config.xml file. Figure 8-9 shows the expected result.
Because you want to have a test harness that will allow you to run and test these modules
outside of the main portal, we’ll do a trick that will link the TestHarness application
with the one and only services-config.xml of the main portal project. Example 8-13 lists
the file named TestHarness-config.xml located in the FeedsModule project.
Example 8-13. TestHarness-config.xml
<flex-config>
<compiler>
<services>
c:/farata/oreilly/OptimizedPortal/WebContent/WEB-INF/flex/services-config.xml
</services>
</compiler>
</flex-config>
The very fact that a project has a file with the same name as the main application but
with the suffix -config will make the Flex compiler use it as configuration file that
420 | | Chapter 8: Performance Improvement: Selected Topics
C# Tiff Convert: How to Convert Raster Images (Jpeg/Png/Bmp/Gif)
Give You Sample Codes for Changing and Converting Jpeg, Png, Bmp, and RasterEdge. XDoc.PDF.dll. an example of converting raster image Jpeg to Tiff image file.
convert pdf to jpg 100 dpi; change from pdf to jpg on
redirects to the real services-config.xml. (Remember, you need to replace c:/farata/
oreilly with the actual location of the workspace of the OptimizedPortal project.)
Open the class TestHarness_FlexInit_generated.as in the generated folder of the Feed-
Module project, and you’ll see a section taken from the portal project. A fragment of
this section is shown here:
ServerConfig.xml =
<services>
<service id="remoting-service">
<destination id="AnnualGenerator">
<channels>
<channel ref="my-amf"/>
</channels>
</destination>
<destination id="QuoterDataGenerator">
<channels>
<channel ref="my-amf"/>
</channels>
</destination>
</service>
...
<channels>
<channel id="my-rtmp" type="mx.messaging.channels.RTMPChannel">
<endpoint uri="rtmp://{server.name}:58010"/>
Figure 8-9. Switching to chart view
Optimizing RSL Loading g | 421
<properties>
</properties>
</channel>
</services>;
Essentially, here’s what’s happening: while building the FeedsModule project, the Flex
compiler determines that it has two modules and one application and that it, therefore,
must build three .swf files. It checks whether 
TestHarness
GoogleFinancialNews
, and
YahooFinancialNews
have their own configuration files. 
TestHarness
has one, so the
compiler uses it in addition to flex-config.xml from the Flex SDK. 
GoogleFinancial
News
and 
YahooFinancialNews
do not have their own configuration files, so for them the
compiler just uses the parameters listed in the flex-config.xml.
What did we achieve? We’ve created a small project that can be used for testing and
debugging the modules without the information from services-config.xml. If any of you
have worked on a large modularized Flex application, chances are that once in a while
you ran into conflicts caused by destinations having the same names but pointing to
different classes—they were created by different programmers and are located in mul-
tiple modules’ services-config.xml files. With our approach, you won’t run into such a
situation.
In the next section, you’ll learn how to make your modules go easy on network
bandwidth.
Creating a Shell Application with a Custom RSL Loader
Mary, the application developer, knows how to test her modules, and she’d really ap-
preciate it if she didn’t have to coordinate with other developers who might link the
same RSLs to their modules. Is it possible to have a slightly smarter application that
won’t load a particular RSL with the second module if it already downloaded it with
the first one?
To avoid duplication in modules, the Flex framework offers a singleton class,
ModuleManager
(see Chapter 7), but it falls short when it comes to RSLs. Luckily, the
Flex framework is open sourced, and we’ll show you how to fix this shortcoming. Take
a closer look at the problem first.
As you remember, the singleton 
SystemManager
is the starting class that controls loading
of the rest of the application’s objects. Our sample application is a portal located in the
Flash Builder project OptimizedPortal. Adding the compiler’s 
–keep
option allows you
to see the generated ActionScript code for the project. The main point of interest is the
class declaration in the file _OptimizedPortal_mx_managers_SystemMan-
ager-generated.as, located in the generated folder (Example 8-14).
422 | | Chapter 8: Performance Improvement: Selected Topics
Example 8-14. Generated SystemManager for OptimizedPortal
package{
import flash.text.Font;
import flash.text.TextFormat;
import flash.system.ApplicationDomain;
import flash.utils.getDefinitionByName;
import mx.core.IFlexModule;
import mx.core.IFlexModuleFactory;
import mx.managers.SystemManager;
[ResourceBundle("collections")]
[ResourceBundle("containers")]
[ResourceBundle("controls")]
[ResourceBundle("core")]
[ResourceBundle("effects")]
[ResourceBundle("logging")]
[ResourceBundle("messaging")]
[ResourceBundle("skins")]
[ResourceBundle("styles")]
public class _OptimizedPortal_mx_managers_SystemManager
extends mx.managers.SystemManager
implements IFlexModuleFactory{
import mx.core.CrossDomainRSLItem; CrossDomainRSLItem;
public function _OptimizedPortal_mx_managers_SystemManager(){
super();
}
override   public function create(... params):Object{
if (params.length > 0 && !(params[0] is String))
return super.create.apply(this, params);
var mainClassName:String = params.length == 0 ?
"OptimizedPortal" : String(params[0]);
if (!mainClass)
return null;
var instance:Object = new mainClass();
if (instance is IFlexModule)
(IFlexModule(instance)).moduleFactory = this;
return instance;
}
override public function info():Object{
return {
cdRsls: [{"rsls":["datavisualization_3.3.0.4852.swz"],
"policyFiles":[""]
"types":["SHA-256"],
"isSigned":[true]
},
Optimizing RSL Loading g | 423
{"rsls":["framework_3.2.0.3958.swz","framework_3.2.0.3958.swf"],
"policyFiles":["",""]
c61346a1fa3139a37d860ed92632aa13decf4c17903367141677aac966f4"],
"types":["SHA-256","SHA-256"],
"isSigned":[true,false]
},
{"rsls":["rpc_3.3.0.4852.swz"],
"policyFiles":[""]
"types":["SHA-256"],
"isSigned":[true]
}]
,
compiledLocales: [ "en_US" ],
"core", "effects", "logging", "messaging", "skins", "styles" ],
currentDomain: ApplicationDomain.currentDomain,
layout: "vertical",
mainClassName: "OptimizedPortal",
mixins: [ "_OptimizedPortal_FlexInit",
"_dataGridStylesStyle", "_popUpMenuStyle", "_headerDragProxyStyleStyle",
"_windowStatusStyle", "_ScrollBarStyle", "_swatchPanelTextFieldStyle",
"_advancedDataGridStylesStyle", "_comboDropdownStyle", "_ButtonStyle",
"_weekDayStyleStyle", "_linkButtonStyleStyle",
"_com_farata_portal_PortalCanvasWatcherSetupUtil",
"_com_farata_portal_controls_SendMessageWatcherSetupUtil" ],
{url: "fds.swf", size: -1}, {url: "PortalLib.swf", size: -1}]
}
}
}
}
Skim through this code, and you’ll see that all the information required by the linker
is there. The Flex code generator created a system manager for the OptimizedPortal
application that’s directly inherited from 
mx.managers.SystemManager
, which doesn’t
give us any hooks for injecting the new functionality in a kosher way. Whatever you
put in the class above will be removed by code generators during the next compilation.
The good news is that the Flex SDK is open sourced and you are allowed to do any
surgeries to its code and even submit the changes to be considered for inclusion in
upcoming releases of Flex.
424 | | Chapter 8: Performance Improvement: Selected Topics
The goal is to change the behavior of the 
SystemManager
so that it won’t load duplicate
instances of the same RSL if more than one module links them. (Remember the
datavisualization.swc used in 3 out of 10 modules?)
Scalpel, please!
The flex_src directory of the project OptimizedPortal includes a package mx.core, which
includes two classes: 
RSLItem
and 
RSLListLoader
. These are the classes from the Adobe
Flex SDK that underwent the surgery. The class 
RSLListLoader
sequentially loads all
required libraries. The relevant fragment of this class is shown in Example 8-15.
Example 8-15. Modified Flex SDK class RSLListLoader
package mx.core{
import flash.events.IEventDispatcher;
import flash.events.Event;
import flash.utils.Dictionary;
[ExcludeClass]
/**
*  @private
*  Utility class for loading a list of RSLs.
*
*  A list of cross-domain RSLs and a list of regular RSLs
*  can be loaded using this utility.
*/
public class RSLListLoader{
/**
 Constructor.
*
 @param rslList Array of RSLs to load.
 Each entry in the array is of type RSLItem or CdRSLItem.
 The RSLs will be loaded from index 0 to the end of the array.
*/
public function RSLListLoader(rslList:Array)
{
super();
this.rslList = rslList;
}
Optimizing RSL Loading g | 425
/**
 @private
 The index of the RSL being loaded.
*/
private var currentIndex:int = 0;
public static var  loadedRSLs:Dictionary = new Dictionary();
/**
 @private
 The list of RSLs to load.
 Each entry is of type RSLNode or CdRSLNode.
*/
private var rslList:Array = [];
...
/**
 Increments the current index and loads the next RSL.
*/
private function loadNext():void{
if (!isDone()){
currentIndex++;
// Load the current RSL.
if (currentIndex < rslList.length){
// Load RSL and have the RSL loader chain the
// events our internal events handler or the chained
// events handler if we don't care about them.
listCompleteHandler, listIOErrorHandler,
} else {
loadNext();// skip already loaded rsls
}
}
}
}
...
}
}
Example 8-15 adds only a few lines to the class:
public static var  loadedRSLs:Dictionary = new Dictionary();
...
if (loadedRSLs[(rslList[currentIndex] as RSLItem).url] == null){
...
loadedRSLs[(rslList[currentIndex] as RSLItem).url] = true;
...
loadNext();// skip already loaded rsls
but these had a dramatic effect on the RSL loading process.
The 
static
dictionary 
loadedRSL
keeps track of already loaded RSLs (the 
url
property
of the 
RSLItem
), and if a particular RSL that’s about to be loaded already exists there,
426 | | Chapter 8: Performance Improvement: Selected Topics
Documents you may be interested
Documents you may be interested