using pdfdocument c# : Add a link to a pdf in preview SDK control API wpf web page asp.net sharepoint WATUsageGuide33-part876

Java Programmer's Guide
329
Method
Example request
Example response
project-name> 
<file-
name>InputA.type</file-name>
</delete-file>  </repository-
request>
get-
projects
<repository-request> 
<get-
projects/> 
</repository-
request>
<repository-
response><project-
list><project-name>Default
project</project-name></
project-list></repository-
response>
get-
robots-
in-
project
<repository-request> 
<get-
robots-in-project>  <project-
name>Default 
project</
project-name> 
</get-robots-
in-project> 
</repository-
request>
<repository-response><robot-
list><robot><robot-
name>DoNothing.robot</robot-
name><version>7.2</
version><last-modified>2011-
10-11 
18:24:12.648</last-
modified></robot></robot-
list></repository-response>
get-
robot-
signature
<repository-request> 
<get-
robot-signature> 
<project-
name>Default 
project</
project-name> 
<robot-
name>DoNothing.robot</robot-
name>  </get-robot-signature>
</repository-request>
<repository-response><robot-
signature><robot-
name>DoNothing.robot</robot-
name><version>7.2</
version><last-modified>2011-
10-11 
18:24:12.648</last-
modified><input-object-
list><input-object><variable-
name>InputA</variable-
name><type-name>InputA</type-
name><input-attribute-
list><input-
attribute><attribute-
name>aString</attribute-
name><attribute-type>Short
Text</attribute-type></input-
attribute><input-
attribute><attribute-
name>anInt</attribute-
name><attribute-
type>Integer</attribute-
type></input-
attribute><input-
attribute><attribute-
name>aNumber</attribute-
name><attribute-type>Number</
attribute-type></input-
attribute><input-
attribute><attribute-
name>aSession</attribute-
name><attribute-
type>Session</attribute-
type></input-
Add a link to a pdf in preview - insert, remove PDF links in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Free C# example code is offered for users to edit PDF document hyperlink (url), like inserting and deleting
add links to pdf document; add link to pdf
Add a link to a pdf in preview - VB.NET PDF url edit library: insert, remove PDF links in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Help to Insert a Hyperlink to Specified PDF Document Page
pdf link to attached file; add email link to pdf
Java Programmer's Guide
330
Method
Example request
Example response
attribute><input-
attribute><attribute-
name>aBoolean</attribute-
name><attribute-
type>Boolean</attribute-
type></input-
attribute><input-
attribute><attribute-
name>aDate</attribute-
name><attribute-type>Date</
attribute-type></input-
attribute><input-
attribute><attribute-
name>aCharacter</attribute-
name><attribute-
type>Character</attribute-
type></input-
attribute><input-
attribute><attribute-
name>anImage</attribute-
name><attribute-type>Image</
attribute-type></input-
attribute></input-attribute-
list></input-object><input-
object><variable-
name>InputB</variable-
name><type-name>InputB</type-
name><input-attribute-
list><input-attribute
required="true"><attribute-
name>aString</attribute-
name><attribute-type>Short
Text</attribute-type></input-
attribute><input-attribute
required="true"><attribute-
name>anInt</attribute-
name><attribute-
type>Integer</attribute-
type></input-
attribute><input-attribute
required="true"><attribute-
name>aNumber</attribute-
name><attribute-type>Number</
attribute-type></input-
attribute><input-attribute
required="true"><attribute-
name>aSession</attribute-
name><attribute-
type>Session</attribute-
type></input-
attribute><input-attribute
required="true"><attribute-
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Remove bookmarks, annotations, watermark, page labels and article threads from PDF while compressing. Also a preview component enables compressing and
pdf link; adding a link to a pdf
C# PDF insert image Library: insert images into PDF in C#.net, ASP
viewer component supports inserting image to PDF in preview without adobe Insert images into PDF form field. How to insert and add image, picture, digital photo
adding links to pdf; clickable links in pdf
Java Programmer's Guide
331
Method
Example request
Example response
name>aBoolean</attribute-
name><attribute-
type>Boolean</attribute-
type></input-
attribute><input-attribute
required="true"><attribute-
name>aDate</attribute-
name><attribute-type>Date</
attribute-type></input-
attribute><input-attribute
required="true"><attribute-
name>aCharacter</attribute-
name><attribute-
type>Character</attribute-
type></input-
attribute><input-attribute
required="true"><attribute-
name>anImage</attribute-
name><attribute-type>Image</
attribute-type></input-
attribute></input-attribute-
list></input-object></input-
object-list><returned-type-
list><returned-type><type-
name>OutputA</type-
name><returned-attribute-
list><returned-
attribute><attribute-
name>aString</attribute-
name><attribute-type>Short
Text</attribute-type></
returned-attribute></
returned-attribute-list></
returned-type></returned-
type-list><stored-type-list/
></robot-signature></
repository-response>
get-
clusters
<repository-request> 
<get-
clusters/> 
</repository-
request>
<repository-
response><clusters><cluster
name="Cluster 
1"
ssl="false"><roboserver
host="localhost"
port="50000"/></cluster></
clusters></repository-
response>
The deployment is done by posting the raw bytes (the octet-stream is sent as a post body) to the
following URLs. Here is an example where the repository is deployed on http://localhost:8080/
ManagementConsole
VB.NET PDF insert image library: insert images into PDF in vb.net
inserting image to PDF in preview without adobe provide users the most individualized PDF page image inserting function, allowing developers to add and insert
add a link to a pdf file; add url pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Ability to add PDF page number in preview. Offer PDF page break inserting function. Free components and online source codes for .NET framework 2.0+.
accessible links in pdf; add url link to pdf
Java Programmer's Guide
332
Table 79. Methods of the deploy operations
operation
URL
deploy robot
http://localhost:8080/ManagementConsole/secure/
RepositoryAPI?format=bytes&operation=deployRobot&projectName=Default
project&fileName=DoNothing.robot&failIfExists=true
deploy type
http://localhost:8080/ManagementConsole/secure/
RepositoryAPI?format=bytes&operation=deployType&projectName=Default
project&fileName=InputA.type&failIfExists=true
deploy Snippet
http://localhost:8080/ManagementConsole/secure/
RepositoryAPI?format=bytes&operation=deploySnippet&projectName=Default
project&fileName=A.snippet&failIfExists=true
deploy resource
http://localhost:8080/ManagementConsole/secure/
RepositoryAPI?format=bytes&operation=deployResource&projectName=Default
project&fileName=resource.txt&failIfExists=true
deploy library
http://localhost:8080/ManagementConsole/secure/
RepositoryAPI?format=bytes&operation=deployLibrary&projectName=Default
project&fileName=NA&failIfExists=true
If  authentication 
is 
enabled  on  Management  Console  the  URL  http:/
/localhost:8080/ManagementConsole/secure/RepositoryAPI  is  protected  by
basic 
authentication. 
This 
allows 
you 
to 
include 
credentials 
in 
the
URL  in  the  following  manner  http://username:password@localhost:8080/
ManagementConsole/secure/RepositoryAPI.
C# PDF insert text Library: insert text into PDF content in C#.net
Able to add a single text character and text string to PDF files using online source codes in C#.NET Supports adding text to PDF in preview without adobe
add links to pdf; add links to pdf online
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Independent component for splitting PDF document in preview without using external PDF VB.NET PDF Splitting & Disassembling DLLs. Add necessary references:
add a link to a pdf; change link in pdf
333
.NET Programmer's Guide
This guide describes how to execute Robots using the Kapow Katalyst .NET API. The guide assumes that
you have completed the Design Studio tutorials and know how to write simple Robots, and that you are
familiar with the C# programming language.
The programmer's guide has been completely rewritten for version 9.1, as large portions of the API has
been deprecated, and a new execution API has been created. The API is still backwards compatible, but
you should familiarize yourself with the new API and consider rewriting existing application to use the
new API, as the deprecated classes will be removed in future releases.
The old RobotExecuter has been deprecated because of the following reasons
• Robots would continue to execute on RoboServer even after an RQLException was thrown by the API.
• Robots would continue to execute even if RoboServer lost connection to the client, resulting in log
errors for every Return Value executed.
• The distribution policies didn't look at server capacity when distributing requests.
• It was cumbersome to implement object streaming, because there were many hidden pitfalls when
implementing a custom RQLHandler
You can still find the old .NET programmer's guide, at http://help.kapowtech.com/8.2/topic/doc/dotnet/
Top.html
Details about specific classes can be found in the compiled help, robosuite-dotnet-api.chm located in
\API\robosuite-dotnet-api\docs inside the Kapow Katalyst installation folder.
Basics
By using the  .NET API,  any .NET based  application (.NET 4.0 required)  can become a  client  to
RoboServer. In addition to running robots that store data in a database, you can also have the robots return
data directly back to the client application. Here are some examples:
• Use multiple robots to do a federated search, which aggregates results from multiple sources in real time.
• Run a robot in response to an event on your application back-end. For instance run a robot when a new
user signs up, to create accounts on web-based systems not integrated directly into your back-end.
The basic section of this guide will introduce the core classes, and how to use them for executing robots.
We will also describe how to provide input to robots and control their execution on RoboServer.
The .NET API is a .dll file, and it is located in /API/robosuite-dotnet-api/lib/robosuite-
dotnet-api.dll inside the Kapow Katalyst installation folder, see important folders for details. All
examples in this guide can also be found in /API/robosuite-dotnet-api/examples. Located
next to the .NET API is log4net.dll which is a required 3rd-party library.
First Example
Let's start by looking at the code required to execute the robot named NewsMagazine.robot, which is
located in the Tutorials folder of the default project. The robot outputs its results using the Return Value step
C# PDF File Split Library: Split, seperate PDF into multiple files
Advanced component for splitting PDF document in preview without any third-party plug-ins installed. C# DLLs: Split PDF Document. Add necessary references:
add links to pdf file; add hyperlink pdf document
C# Create PDF Library SDK to convert PDF from other file formats
Preview PDF documents without other plug-ins. this PDF document metadata adding control, you can add some additional information to generated PDF file
pdf hyperlinks; add url pdf
.NET Programmer's Guide
334
action, which makes it easy to handle the output programmatically using the API. Other robots (typically
those run in a schedule by the Management Console) store their data directly in a database using the Store
in Database step action, in which case data collected by the robot will not be returned to the API client.
In the following, we will look at  how  to execute the NewsMagazine robot and  process the output
programmatically.
Table 80. Execute a Robot without input
#using System;
using System.Collections.Generic;
using System.Text;
using Com.KapowTech.RoboSuite.Api;
using Com.KapowTech.RoboSuite.Api.Repository.Construct;
using Com.KapowTech.RoboSuite.Api.Construct;
namespace Examples
{
class Program
{
static void Main(string[] args)
{
var server = new RoboServer("localhost", 50000);
var ssl = false;
var cluster = new Cluster("MyCluster", new RoboServer[]{ server}, ssl);
Request.RegisterCluster(cluster); // you can only register a cluster once per application
var request = new Request("Library:/Tutorials/NewsMagazine.robot");
request.RobotLibrary = new DefaultRobotLibrary();
RqlResult result = request.Execute("MyCluster");
foreach (RqlObject value in result.GetOutputObjectsByName("Post")) {
var title = value["title"];
var preview = value["preview"];
Console.WriteLine(title + ", " + preview);
}
Console.ReadKey();
}
}
}
Let's start by looking at the classes involved and their responsibilities.
Table 81.
RoboServer
This is a simple value object that identifies a RoboServer which can
execute robots. Each RoboServer must be activated by a Management
Console and assigned KCU before use.
Cluster
A cluster is a group of RoboServer functioning as a single logical unit.
Request
This class is used to construct the robot  request. Before you can
execute any requests you must register a cluster with the Request class.
VB.NET PDF insert text library: insert text into PDF content in vb
Add text to certain position of PDF page in Visual Basic .NET class. Add text to PDF in preview without adobe reader component installed.
add links to pdf; add links to pdf online
.NET Programmer's Guide
335
DefaultRobotLibrary
A robot library instructs RoboServer where to find the robot identified
in the request. Later examples will explore the various robot library
types and when/how to use them.
RQLResult
This contains the result of a robot execution. The result contains value
responses, log and server messages.
RQLObject
Each value that is returned from a robot using the Return Value action
can be accessed as an RQLObject.
Now let's go through each line in the example an look at the specifics.
The first line tells the API that our RoboServer is running on localhost port 50000.
Table 82.
var server = new RoboServer("localhost", 50000);
The next three lines defines a cluster with a single RoboServer. The cluster is registered with the Request
class, allowing you to execute request on this cluster. Each cluster may only be registered once per
application, this is usually done during the initialization of the application.
Table 83. Registering a cluster
var ssl = false;
var cluster = new Cluster("MyCluster", new RoboServer[]{ server}, ssl);
Request.RegisterCluster(cluster);
This is then followed by code that creates a request that will execute the robot named NewsMagazine.robot
located at Library:/Tutorials. Library:/ refers to the robot Library configured for the request. Here the
DefaultRobotLibrary is used, which instructs RoboServer to look for the robot in the servers local
file system, see Robot Libraries for details on how to use robot libraries.
Table 84.
var request = new Request("Library:/Tutorials/NewsMagazine.robot");
request.RobotLibrary = new DefaultRobotLibrary();
The next line executes the robot on the cluster named MyCluster (the cluster we previously registered)
and returns the result once the robot is done. If an error occurs while the robot is executing an exception
will be thrown here.
Table 85.
RqlResult result = request.Execute("MyCluster");
Finally we process the extracted values. First we get all extracted values of the type named Post, and iterate
through them. For each RQLObject we access the attributes of the Post type, and print the result. We will
look at attributes and mappings in a later section.
Table 86.
foreach (RqlObject value in result.GetOutputObjectsByName("Post")) {
var title = value["title"];
var preview = value["preview"];
.NET Programmer's Guide
336
Console.WriteLine(title + ", " + preview);
}
Robot Input
Most robots executed through the API will be parametrized through input, such as a search keyword,
or login credentials. Input to a robot is part of the request to RoboServer, and is provided using the
createInputVariable method on the request. Let us look at a short code fragment.
Table 87. Input using implicit RQLObjectBuilder
#var request = new Request("Library:/Tutorials/Input.robot");
request.CreateInputVariable("userLogin").SetAttributeEntry("username", "scott").SetAttributeEntry("password", "tiger");
Here we create a Request and use CreateInputVariable to create an input variable named
userLogin. We then use setAttribute to configure the username and password attributes of the input
variable.
The above example is a common shorthand notation, but can also be expressed move verbosely by using
the RqlObjectBuilder:
Table 88. Input using explicit RQLObjectBuilder
#var request = new Request("Library:/NewsMagazine.robot");
RqlObjectBuilder userLogin = request.CreateInputVariable("userLogin");
userLogin.SetAttributeEntry("username", "scott");
userLogin.SetAttributeEntry("password", "tiger");
The two examples are identical. The first utilizes the cascading method invocation on the anonymous
RqlObjectBuilder and is therefore shorter.
When RoboServer receives this request the following occurs:
• RoboServers loads Input.robot (from whatever RobotLibrary is configured for the request).
• RoboServer verifies that the robot has a variable named userLogin and that this variable is marked as
input.
• RoboServer now verifies that the attributes we have configured using setAttribute are compatible
with the type of variable userLogin. Which means that the type must have attributes named username and
password and that these must both be text based attributes (the next section will describe the mapping
between API and Design Studio attributes).
• If all input variables are compatible, RoboServer will start executing the robot.
If a robot requires multiple input variables, you must create all of them in order to execute the robot. You
only have to configure required attributes, any no-required attributes that you don't configure through the
API will just have a null value. If we assume you have a robot that requires login to both Facebook and
Twitter, you could define the input like this.
Table 89.
Request request = new Request("Library:/Input.robot");
request.CreateInputVariable("facebook").SetAttributeEntry("username", "scott").SetAttributeEntry("password", "facebook123");
request.CreateInputVariable("twitter").SetAttributeEntry("username", "scott").SetAttributeEntry("password", "twitter123");
.NET Programmer's Guide
337
Attribute Types
When you define a new type in Design Studio you select an attribute type for each attribute. Some of these
attributes can contain text, like Short text, Long Text, Password, HTML, XML, and when used inside a
robot there may be requirements to the text stored in these attributes. If you store text in a XML attribute,
the text must be a valid XML document. This validation occurs when the type is used inside a robot, but
since the API doesn't know anything about the type it doesn't validate attribute values in the same manner.
As a result the API only has 8 attribute types versus the 19 available in Design Studio This table shows
the mapping between the API and Design Studio attribute types.
Table 90. API to Design Studio mapping
API Attribute Type
Design Studio Attribute Type
Text
Short  Text,  Long  Text,  Password,  HTML,  XML,
Properties, Language, Country, Currency, Refind Key
Integer
Integer
Boolean
Boolean
Number
Number
Character
Character
Date
Date
Session
Session
Binary
Binary, Image, PDF
The API attribute types are then mapped to .NET in the following way.
Table 91. .NET types for attributes
Attribute Type
.NET Class
Text
System.String (string)
Integer
System.Int64
Boolean
System.Boolean (bool)
Number
System.Double (double)
Character
System.Char (char)
Date
System.DateTime
Session
Com.Kapowtech.Robosuite.Api.Construct.Session
Binary
Com.Kapowtech.Robosuite.Api.Construct.Binary
The RqlObjectBuilder's setAttribute method is overloaded so you don't need to specify the
attribute type explicitly when configuring an attribute through the API, as long as the right .NET class is
used as argument. Here is an example that shows how to set the attributes for an object with all possible
(Design Studio) attribute types.
Table 92. Recommended usage of setAttribute
RqlObjectBuilder inputBuilder = request.CreateInputVariable("AllTypes");
inputBuilder.SetAttributeEntry("anInt", 42L);
inputBuilder.SetAttributeEntry("aNumber", 12.34d);
inputBuilder.SetAttributeEntry("aBoolean", true);
.NET Programmer's Guide
338
inputBuilder.SetAttributeEntry("aCharacter", 'c');
inputBuilder.SetAttributeEntry("aShortText", "some text");
inputBuilder.SetAttributeEntry("aLongText", "a longer text");
inputBuilder.SetAttributeEntry("aPassword", "secret");
inputBuilder.SetAttributeEntry("aHTML", "<html>bla</html>");
inputBuilder.SetAttributeEntry("anXML", "<tag>text</tag>");
inputBuilder.SetAttributeEntry("aDate", DateTime.Now);
inputBuilder.SetAttributeEntry("aBinary", (Binary) null);
inputBuilder.SetAttributeEntry("aPDF", (Binary)null);
inputBuilder.SetAttributeEntry("anImage", (Binary)null);
inputBuilder.SetAttributeEntry("aProperties", "name=value\nname2=value2");
inputBuilder.SetAttributeEntry("aSession", (Session)null);
inputBuilder.SetAttributeEntry("aCurrency", "USD");
inputBuilder.SetAttributeEntry("aCountry", "US");
inputBuilder.SetAttributeEntry("aLanguage", "en");
inputBuilder.SetAttributeEntry("aRefindKey", "Never use this as input");
Notice that in the above example we have to cast null values, because the C# compiler can't otherwise
determine which of the overloaded version of SetAttributeEntry method we want to call. However
since since unconfigured attributes will automatically be null, you never need to set null explicitly.
It is possible to specify the Attribute and AttributeType explicitly when creating input using the API. This
is approach is not recommended, but may be needed in rare cases, and would look like this.
Table 93. Not recommended usage of setAttribute
RqlObjectBuilder inputBuilder = request.CreateInputVariable("alltypes");
inputBuilder.SetAttributeEntry(new AttributeEntry("anInt", "42", AttributeEntryType.Integer));
inputBuilder.SetAttributeEntry(new AttributeEntry("aNumber", "12.34", AttributeEntryType.Number));
inputBuilder.SetAttributeEntry(new AttributeEntry("aBoolean", "true", AttributeEntryType.Boolean));
inputBuilder.SetAttributeEntry(new AttributeEntry("aCharacter", "c", AttributeEntryType.Character));
inputBuilder.SetAttributeEntry(new AttributeEntry("aShortText", "some text", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aLongText", "a longer text", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aPassword", "secret", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aHTML", "<html>bla</html>", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("anXML", "<tag>text</tag>", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aDate", "2012-01-15 23:59:59.123", AttributeEntryType.Date));
inputBuilder.SetAttributeEntry(new AttributeEntry("aBinary", null, AttributeEntryType.Binary));
inputBuilder.SetAttributeEntry(new AttributeEntry("aPDF", null, AttributeEntryType.Binary));
inputBuilder.SetAttributeEntry(new AttributeEntry("anImage", null, AttributeEntryType.Binary));
inputBuilder.SetAttributeEntry(new AttributeEntry("aProperties", "name=value\nname2=value2", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aCurrency", "USD", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aCountry", "US", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aLanguage", "en", AttributeEntryType.Text));
inputBuilder.SetAttributeEntry(new AttributeEntry("aRefindKey", "Never use this as input", AttributeEntryType.Text));
As we can see all attribute values must be provided in the form of strings. The string values are then
converted to the appropriate .NET objects based on the AttributeEntryType provided. This is only useful
if you build other generic APIs on top of the Kapow Katalyst .NET API.
Execution Parameters
In addition to the CreateInputVariable method, the Request contains a number of properties that
controls how the robot executes on RoboServer.
Documents you may be interested
Documents you may be interested