display pdf in iframe mvc : Convert pdf to url link Library SDK class asp.net .net azure ajax luacom2-part1327

-- This s should trigger the AfterUpdate e event
--
calendar:NextMonth()
ThecookiereturnedbyConnectidentifiesthisconnection,andcanlaterbeusedtoreleasethe
Connection.ACOMobjectcanhaveseveraleventsinksconnectedtoitsimultaneously.
It’salsopossibletoseparatelycreateaLuaCOMobjectimplementingtheconnectionpointsource
interfaceandthenconnectittotheobjectusingaddConnection.
-- Instances the COM object
--
calendar = = luacom.CreateObject("MSCAL.Calendar")
if calendar r == nil then
print("Error instantiating g calendar")
os.exit(1)
end
-- Creates implementation n table
--
calendar_events = = {}
function calendar_events:AfterUpdate()
print("Calendar updated!")
end
-- Creates LuaCOM object implemented d by y calendar_events
--
event_handler = = luacom.ImplInterface(calendar_events,
"MSCAL.Calendar",
"DCalendarEvents")
if event_handler == = nil l then
print("Error implementing g DCalendarEvents")
exit(1)
end
-- Connects s both h objects
--
cookie = = luacom.addConnection(calendar, , event_handler)
-- This s should trigger the AfterUpdate e event
--
calendar:NextMonth()
-- This s disconnects the e connection point t established
--
luacom.releaseConnection(calendar, event_handler, cookie)
-- This s should NOT trigger the AfterUpdate e event
--
calendar:NextMonth()
NoticethataddConnectionalsoreturnsacookie. AcalltoreleaseConnectionneeds
boththeeventsinkandthecookietoreleasetheconnection.Theold(pre-1.3)syntaxofreleaseConnection
(ommitingtheeventsinkandcookie)stillworks,butwillonlyreleasethelastconnectionmade(but
therewillnotbeleaks,allconnectionsarereleasedwhentheobjectisgarbage-collected).
20
Convert pdf to url link - Library SDK class:C# PDF Convert to HTML SDK: Convert PDF to html files in C#.net, ASP.NET MVC, WinForms, WPF application
How to Convert PDF to HTML Webpage with C# PDF Conversion SDK
www.rasteredge.com
Convert pdf to url link - Library SDK class:VB.NET PDF Convert to HTML SDK: Convert PDF to html files in vb.net, ASP.NET MVC, WinForms, WPF application
PDF to HTML Webpage Converter SDK for VB.NET PDF to HTML Conversion
www.rasteredge.com
Messageloop Toreceiveevents,itisnecessarytohaveamessageloopinthethreadthatownsthe
objectthatisreceivingtheevents.AlleventsaredispatchedthroughaWindowsmessagequeuecre-
atedduringCOMinitialization.Withoutamessageloop,theeventobjectsimplementedbyLuaCOM
,willneverreceivemethodcallsfromtheCOMobjectstheyareregisteredwith.Out-of-processCOM
serversimplementedwithLuaCOMalsoneedamessagelooptobeabletoservicemethodcalls(one
isprovidedbycallingluacom.DetectAutomation).
3.3.4 ParameterPassing
LuaCOMhassomepoliciesconcerningparameterpassing.TheyspecifyhowLuaCOMwilltranslate
COMparameterliststoLuaandvice-versa.Therearetwodifferentsituationstowhichthesepolicies
apply:callingamethodofaCOMobjectfromLuaandcallingaLuafunctionfromCOM.Themain
questionhereishowtodealwiththedifferenttypesofparameterssupportedbyCOM(“in”param-
eters,“out”parameters,“in-out”parameters,“optional”parametersand“defaultvalue”parameters).
ThereisalsoaspecialpolicyconcerninggenericLuaCOMobjects.
CallingCOMfromLua
ThissituationhappenswhenaccessingapropertyorcallingamethodofaCOMobjectthroughthe
LuaCOMobject.Herefollowsasample:
word = = luacom.GetObject("Word.Application")
-- Here e we e are e calling the "Move" method of f the e Application object of
-- a a running g instance of Microsoft(R) ) Word(R)
word:Move(100,100)
Inthissituation,therearetwostepsintheparameterpassingprocess:
1. convertLuaparameterstoCOM(thiswillbecalledthe“lua2com”situation);
2. convertCOM’sreturnvalueandoutputvaluesbacktoLua(thiswillbecalledthe“com2lua”
situation).
lua2comsituation Thetranslationisdonebasedonthetypeinformationofthemethod(orprop-
erty);it’sdonefollowingtheordertheparametersappearinthetypeinformationofthemethod.The
Luaparametersareusedinthesameorder.Foreachparametertherearethreepossibilities:
Theparameterisan“in”parameter LuaCOMgetsthefirstLuaparameternotyetconvertedand
convertsittoCOMusingLuaCOMtypeconversionengine.
Theparameterisan“out”parameter LuaCOMignoresthisparameter,asitwillonlybefilledby
thecalledmethod. Thatis,the“out”parametersSHOULDNOTappearintheLuaparameter
list.
Theparameterisan“in-out”parameter LuaCOMdoesthesameasfor“in”parameters.
Whenthecallerofthemethodwantstoomitaparameter,itmustpassthenilvalue;LuaCOM
thenproceedsaccordingly,informingthecalledmethodabouttheomissionoftheparameter. Ifthe
parameterhasadefaultvalue,itisusedinstead. NoticethatLuaCOMdoesnotcomplainwhenone
omitsnon-optionalparameters.Infact,LuaCOMignoresthefactthataparameterisorisn’toptional.
Itleavestheresponsibilityforcheckingthistotheimplementationofthecalledmethod.
21
Library SDK class:C# PDF url edit Library: insert, remove PDF links in C#.net, ASP.
Link: Edit URL. |. Home ›› XDoc.PDF ›› C# PDF: Edit Hyperlink (url). Enable users to copy and paste PDF link. Help to extract and search url in PDF file.
www.rasteredge.com
Library SDK class:VB.NET PDF url edit library: insert, remove PDF links in vb.net
Extract and search url in existing PDF file in VB.NET. Link access to variety of objects, including website, image, document, bookmark, PDF page number, flash
www.rasteredge.com
com2luasituation Whenthecalledmethodfinishes,LuaCOMtranslatesthereturnvalueandthe
outputvalues(thatis,thevaluesofthe“out”and“in-out”parameters)toLuareturnvalues. That
is,themethodreturnvalueisreturnedtotheLuacodeasthefirstreturnvalue;theoutputvalues
arereturnedintheordertheyappearintheparameterlist(noticethathereweusetheLuafeatureof
multiplereturnvalues). Ifthemethoddoesnothavereturnvalues,thatis,isa“ “ void”method,the
returnvalueswillbetheoutputvalues.Iftherearenooutputvalueseither,thentherewillbenoreturn
values.
Thecalledmethodcanomitthereturnvalueortheoutputvalues;LuaCOMthemwillreturnnil
foreachomittedvalue.
Toillustratetheseconcepts,herefollowsasampleofthesesituations.First,weshowanexcerpt
ofanODLfiledescribingamethodofaCOMobject:
HRESULT TestShort(
[in] short p1, // / an "in" " parameter
[out] short* p2, // an n "out" " parameter
[in,out] short* * p3, , // / an "in-out" " parameter
[out,retval] short* retval); // the return value
Nowfollowsasampleofwhathappenswhencallingthemethod:
-- assume that t "com" " is a a LuaCOM M object
-- Here e we e set t p1 1 = = 1, p3 = = 2 2 and leave e p2 uninitialized
-- When n the method returns, , r1 1 = = retval and r2 = = p2 and r3 = = p3
r1, r2, r3 3 = com:TestShort(1,2)
-- WRONG! The are only y two in/in-out parameters! Out parameters
-- are ignored d in n the lua2com m parameter r translation
r1, r2, r3 3 = com:TestShort(1,2,3) ) -- WRONG!
-- Here e p1 1 = 1, , p2 is s uninitialized and p3 is omitted.
r1, r2, r3 3 = com:TestShort(1)
-- Here e we e ignore the output value p3
r1,r2 = = com:TestShort(1)
-- Here e we e ignore all output values (including the return value)
com:TestShort(1,2)
GenericLuaCOMobjects WhendealingwithgenericLuaCOMobjects,thebindingadoptsadif-
ferentpolicy: allLuaparameters s areconvertedtoCOMonesas“in-out”parameters. . LuaCOM
assumesthatthesemethodsalwaysreturnavalue;ifthecalledmethoddoesnotreturnanything,
LuaCOMpushesanilvalue
2
.Asallparametersaresetas“in-out”,allofthemwillbereturnedback
toLua,modifiedornotbythecalledmethod.
CallingLuafromCOM
ThissituationhappenswhenoneimplementsaCOMdispinterfaceinLua.TheActiveXbinding
hastotranslatetheCOMmethodcallstoLuafunctioncalls. Thepolicyhereconcerningparameter
listtranslationisthesameastheoneabove,justexchanging“Lua”for“COM”andvice-versa. That
2
Thisfeatureallowsacleardistinctionbetweenthereturnvalueandthein-outparameters,asallparameterswillendup
beingreturned.
22
Library SDK class:VB.NET Image: VB Code to Download and Save Image from Web URL
to download image from website link more easily from image downloading from web URL, RasterEdge .NET powerful & profession imaging controls, PDF document, image
www.rasteredge.com
Library SDK class:C# PDF Library SDK to view, edit, convert, process PDF file for C#
provides C# users abilities to view, annotate, convert and create NET package offers robust APIs for editing PDF document hyperlink (url) and quick
www.rasteredge.com
is,all“in”an“in-out”COMparametersaretranslatedtoparameterstotheLuafunctioncall(the
outputparametersareignored).Whenthecallfinishes,thefirstreturnvalueistranslatedasthereturn
valueoftheCOMmethodandtheotherreturnvaluesaretranslatedasthe“in-out”and“out”values,
followingtheordertheyappearinthemethod’stypeinformation.Continuingthepreviousexample,
hereweshowtheimplementationofamethodcallablefromCOM:
implementation = = {}
-- This s method receives s TWO in/in-out t parameters
function implementation:TestShort(p1, p2)
-- the first one is s the e retval, the second the first t out t param
-- the third the second out param m (in fact, an n in-out param)
return p1+p2, p1-p2, p1*p2
end
-- Implements an interface
obj = = luacom.ImplInterface(implementation, "TEST.Test", , ITest)
-- calls s the e function implementation:TestShort via COM
r1, r2, r3 3 = obj:TestShort(1,2)
3.3.5 ExceptionHandling
WhenaruntimeerroroccurrwhenusingLuaCOM’smethodsorobjects, there aretwopossible
actionsLuaCOMcantake:
to signal the error using lua_error;
ignore the error, justdoing nothing or returning some kind of error value.
The run time errors can be divided into three types:
errors inside API calls, like CreateObject;
errors when using LuaCOM objects (COM method calls);
errors inside COM objects implemented inLua.
The third type of error is always translated into a COM exception returned to the server. To ease
debugging, these errors are also logged (if the logging facility has been activated), as the server can
silentyignore these exceptions, specially in events.
If the LuaCOM library is compiled with VERBOSE
defined, then a lotof informative messages are logged andall errors are displayed within a dialog
box. This helps debug errors inside events on the fly, as these errors are commonly ignored by the
server. Notice that this options slows down LuaCOM and can generate very big log files.
The behaviour of LuaCOM for the other two types can be customized. There is a table called
config inside the LuaCOM table. This table holds three fields related to error handling:
abort
on
API
error iffalse,LuaCOMsilentlyfailsonerrorsinsideAPIcalls.ThisisNOTtrue
for errors caused by supplying bad parameters: these always generate calls to lua_error.
The default value for this field is false.
23
Library SDK class:How to C#: Basic SDK Concept of XDoc.PDF for .NET
C# programmers can convert Word, Excel, PowerPoint Tiff, Jpeg, Bmp of PDF document, including editing PDF url links and quick navigation link in bookmark
www.rasteredge.com
Library SDK class:C#: How to Add HTML5 Document Viewer Control to Your Web Page
new RECommand("convert")); _tabFile.addCommand new UserCommand("pdf"); _userCmdDemoPdf. addCSS new customStyle({ background: "url('RasterEdge_Resource_Files/images
www.rasteredge.com
abort
on
error iffalse,errorsinsidemethodcallsandpropertyaccessesarealsoignored,possi-
bly return nil where a returnvalue is expected. The defaultvalue for this field is true.
last
error everytimearuntimeerroroccurrLuaCOMsetsthisfieldwiththetextdescribingthe
error. This field can be used to check if some operation failed; just remember to set it to nil
before the operation of interest.
Sample
-- to make all LuaCOM errors runtime errors
luacom.config.abort_on_error = true
luacom.config.abort_on_API_error = true
-- to silently ignore all errors
luacom.config.abort_on_error = false
luacom.config.abort_on_API_error = false
-- catching an ignored error
luacom.config.last_error = nil
obj:RunMethod(x,y)
if luacom.config.last_error then
print("Error!")
exit(1)
end
All errors are also logged. Notice that some of the logged exceptions are not really errors: they
are side-effects of the extensive use of exception handling inside LuaCOM code.
3.4 Type Conversion
LuaCOM is responsiblefor convertingvalues from COM to Luaand vice versa. Most of the types can
be mapped from COM to Lua and vice versa without trouble. But there are some types for which the
mapping is not obvious. LuaCOM then uses some predefined rules to do the type conversion. These
rules must be known to avoid misinterpretationof the conversion results and toavoid errors.
3.4.1 Boolean values
Lua 5 LuaCOMusesthebooleanvalues trueandfalse, butdoesnotworkswiththeolder
convention(nil and non-nil;see paragraph below).
Lua 4 ThisversionofLuausesthenilvalueasfalseandnon-nilvaluesastrue. AsLuaCOM
gives a specialmeaning for nil values in the parameter list, it can’tuse Lua convention for true and
false values; instead, LuaCOM uses the C convention: the true value is a number different from zero
and the false value is the number zero. Here follows a sample:
-- This function alters the state of the of the window.
-- state is a Lua boolean value
-- window is a LuaCOM object
function showWindow(window, state)
if state then
24
Library SDK class:VB.NET PDF: Basic SDK Concept of XDoc.PDF
VB.NET programmers can convert Word, Excel, PowerPoint Tiff hyperlink of PDF document, including editing PDF url links and quick navigation link in bookmark
www.rasteredge.com
Library SDK class:C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
Convert PDF to Png, Gif, Bitmap PDF. Image: Insert Image to PDF. Image: Remove Image from PDF Page. Copy, Paste, Cut Image in Page. Link: Edit URL. Bookmark: Edit
www.rasteredge.com
window.Visible = 1
-- this has the same result
windows.Visible = -10
else
window.Visible = 0
end
end
-- Shows window
showWindow(window, 1)
-- Hides window
showWindow(window, nil)
3.4.2 Pointers to IDispatch and LuaCOM objects
Apointer to IDispatch is convertedtoa LuaCOMobjectwhose implementationis providedby this
pointer. If the object is implemented by local Lua table, then the pointer is converted to this table. A
LuaCOMobject is convertedtoCOM simplypassing its interface implementation to COM.
3.4.3 Pointers to IUnknown
LuaCOM just allows passing and receiving IUnknown pointers; it does not operate on them. They
are converted from/to userdatas with a specific metatable.
3.4.4 Arrays and Tables
If the table does not have a tocom tag method (for Lua 4) or __tocom metamethod (for Lua 5),
LuaCOM first checks if the table can be describing a variant. A table is a variant if it has a Type
field. This field must have a string that tells how the
Value field of the table must be converted.
Possible values for Type are string, bool, error, null, currency, decimal, double,
float, int8, uint8, int4, uint4, int2, uint2, int1, verb+uint1+, int, and uint. Each
corresponds to a variant type.
If the tableisnotdescribinga variant,thenitmaybe describingadate. Atableis adateif ithas one
of those fields: Day, DayOfWeek, Month, Year, Hour, Minute, Second, Milliseconds.
LuaCOM initializes the date with the fields that are present; the others are kept at their defaultvalues.
If the table is not a date, LuaCOM converts Lua tables to SAFEARRAY’s and vice-versa. To be
converted, Lua tables must be “array-like”, that is, all of its elements must be or “scalars”or tables
of the same length. These tables must also be “array-like”. Here are some samples of how is this
conversion done:
Lua table
Safe Array
table = {"name", "phone"}
”name” ”phone”
table = {{1,2},{4,9}}
1 2
4 9
If the table has the conversion tag/metamethod, LuaCOM uses it to guide the conversion. If the
tag/metamethod is a method, LuaCOM calls it, passing the table and the COM type. The method
25
Library SDK class:VB.NET PDF Library SDK to view, edit, convert, process PDF file
Able to render and convert PDF document to/from supported document package offers robust APIs for editing PDF document hyperlink (url), which provide
www.rasteredge.com
Library SDK class:VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
PDF to Text. Convert PDF to JPEG. Convert PDF to Png to PDF. Image: Remove Image from PDF Page. Image Link: Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
www.rasteredge.com
should return a COM object that LuaCOM will pass on. If the tag/metamethod is a table, LuaCOM
will look for a typelib field, an interfacefield , and a coclass field, and pass those as argu-
ments totheImplInterfaceFromTypelib API call. If thetabledoes nothavea typelib field,
LuaCOM willlookforaprogid fieldandan interface field,andpass thosetothe ImplInterface
API call. Either way, LuaCOM willpass the returned object to COM.
3.4.5 CURRENCY type
The CURRENCY values are converted to Lua as numbers. When converting a value to COM where
aCURRENCY is expected, LuaCOM accepts both numbers and strings formatted using the current
locale for currency values. Notice thatthis is highlydependentonthe configuration and LuaCOM just
uses the VARIANT conversion functions.
3.4.6 DATE type
When converting from COM to Lua, the default behavior is to transform DATE values to strings
formatted according to the current locale. The converse is true: LuaCOM converts strings formatted
according to the currentlocale to DATE values.
The script can change the conversion from strings to tables by setting the DateFormat field
of the luacom table (the LuaCOM namespace) to the string "table". The table will have Day,
DayOfWeek, Month, Year, Hour, Minute, Second, and Milliseconds fields. To return the
conversion to strings, set the DateFormat field to "string". Be careful with this feature, as it
may break compatibility with other scripts.
3.4.7 Variants
When converting from COM to Lua, the default behavior is to transform variant values to the closest
Lua type. The script can change the conversion from Lua types to a table describing the variant, by
setting the TableVariants field of the luacom table(the LuaCOM namespace) to true. The
tables willhave a Type fieldtelling the original type of the variant, and a Value fieldcontaining the
conversion to the closest Lua type. Be careful with this feature, as it may break compatibility with
other scripts.
3.4.8 Error Handling
When LuaCOM cannotconvert avalue from or to COM itissues anexception, thatmaybetranslated
to a lua_error or to a COM exception, depending on who is the one being called.
3.5 Other Objects
LuaCOM deals withother objects besides COM Automation ones. Here we describe them briefly.
3.5.1 The Enumerator Object
This objectis a proxy for a COM objectthat implements the IEnumVARIANT interface. It translates
the calls made to fields of the table to method calls using that interface. Enumerators arise often
when dealing with collections. To obtain an enumerator for a collection, use the Lua API method
GetEnumerator. Example:
26
--
-- Sample use of enumerators
--
-- Gets an instance
word = luacom.GetObject("Word.Application")
-- Gets an enumerator for the Documents collection
docs_enum = luacom.GetEnumerator(word.Documents)
-- Prints the names of all open documents
doc = docs_enum:Next()
while doc do
print(doc.Name)
doc = docs_enum:Next()
end
The Extended Lua API method pairs allows the traversal of the enumeration using Lua’s for
statement. The sample above can be rewritten this way:
--
-- Sample use of enumerators
--
-- Gets an instance
word = luacom.GetObject("Word.Application")
-- Prints the names of all open documents
for index, doc in luacomE.pairs(word.Documents) do
print(doc.Name)
end
3.5.2 The Connection Point Container Object
This object allows a COM object implemented using LuaCOM to send events to its client. It’s used
primarily when implementing COM objectin Lua, so see chapter 4 for more information.
3.5.3 The Typelib and Typeinfo Objects
These objects allow the navigation through the type descriptions of a LuaCOM object or of a type
library. They are proxies for the interfaces ITypeLib and ITypeInfo, although not all methods
are available. For more information, see sections 6.5 and 6.6.
27
Chapter 4
Implementing COM objects and controls
in Lua
4.1 Introduction
With LuaCOM it is possible to implement full-fledged COM objects and OLE controls using Lua.
Here we understand a COM object as a composite of these parts:
aserver, which implements one or more COM objects;
registry information, which associates a CLSID (Class ID) to a tripleserver–typelibrary–
defaultinterface;
aProgID (Programmatic Identifier) which is a name associated to a CLSID;
atype library containing a CoClass element.
The registry information maps a ProgID to a CLSID, which is, in turn, mapped to a server. The
type information describes the component, that is, which interfaces itexposes and what is the default
interface.
LuaCOM simplifies these tasks providing some helper functions to deal with registration and
instantiation of COM servers. LuaCOM suports both local (EXE) and in-process (DLL) servers.
LuaCOM also provides helper functions to register and instantiate OLE controls (with their user
interface embedded in the hosting application). This kind of object needs an in-process server, and a
supported Lua GUI toolkit(IUP, for now).
4.2 Is it really useful?
Some might argue that it would be better to implement COM object in languages like C++ or Visual
Basic
c
. That’s true in many situations, and false in several others. First, dealing with COM is not
easy and LuaCOM hides most its complexities; besides that, there is another compelling reason for
using LuaCOM at least in some situations: the semantics of Lua tables and the way LuaCOM is
implemented allows one todo some neat things:
to expose as a COM object any object that can be accessed via Lua through a table. These
might be CORBA objects, C++objects, C structures, Lua code etc. Usingthis feature, a legacy
application or library maybe “upgraded”to COM world with little extra work;
28
to use COM objects anywhere a Lua table is expected. For example, a COM object might be
“exported”as a CORBA object, accessible through a network;
to addandto redefine methodsof an instance of a COM object. This mightbe very useful inthe
preceding situations: an object of interest might be incremented and them exported to another
client.
Of course all this flexibility comes at some cost, primarily performance. Anyway, depending on
the application, the performance drawback mightbe negligible.
LuaCOM does not solve all problems: there is stillthe need of a type library, whichmustbe build
using third party tools.
4.3 Terminology
Toavoid misunderstandings,herewe’llsupply themeaningwegive tosometerms usedinthischapter.
We don’t provide formal definitions: we just want to ease the understanding of some concepts. To
better understand these concepts, see COM’s documentation.
Component apieceofsoftwarewithsomefunctionalitythatcanbeusedbyothercomponents.It’s
composed by a set of objects that implement this functionality.
Component Object anobjectthroughwhichallthefunctionalityofacomponentcanbeaccessed,
including its other objects. This object may have many interfaces.
Application Object Acomponentobjectwithainterfacethatcomprisesallthetop-levelfunctional-
ity of a component; the client does not need to use other interfaces of the component object.
This concept simplifies the understanding of a component, as it puts all its functionalities in
an hierarchical manner (an application object together with its sub-objects, which can only be
accessed through methods and properties of the application object).
COM server Somepieceofcodethatimplementsoneormorecomponentobjects. ACOMserver
musttellthe other applications andcomponents which component objects it makes available. It
does soexposing them.
OLE control Anobjectthathasanuserinterface,andcanbeembeddedinsideotherapplicationsthat
haveOLEcontainers(usuallyC++ or VB applications).
CoClass AtypelibrarydescribingacomponentshouldhaveaCoClassentry,specifyingsomeinfor-
mation aboutthe component:
aname, differentiating one CoClass from others in the same type library;
its CLSID, the unique identifier thatdistinguishes this component from all others;
the interfaces of the component object, telling which one is the default. In a typical situ-
ation, only one interface will be supplied; thus the component object could be called an
Application object for that component;
the source interface, that is, the interface the component uses to send events to the client.
This interface is not implemented by the component: it justusesobjects that implement
this interface.
Lua Application Object It’stheLuatableusedtoimplementtheApplicationObject.
29
Documents you may be interested
Documents you may be interested