using pdfdocument c# : Convert doc to pdf with hyperlinks Library control class asp.net web page winforms ajax WATUsageGuide30-part873

Kapow Kapplets User's Guide
299
Notice that the Start button chances to a Schedule button. When the Kapplet is scheduled it will be run
periodically as specified by the user - which is indicated by a small note at the bottom of the page.
When the user lists the installed Kapplets the schedule is shown on the Kapplet.
The user deletes a schedule by clicking the trash can symbol for the selected schedule.
Notice that scheduling and email notification can be combined for Kapplets.
Viewing Results
Data will be displayed in a result page. The output is customized in the Kapplet Builder (see The Outputs
Section for a description of customizing the results).
Convert doc to pdf with hyperlinks - 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
adding hyperlinks to pdf files; adding an email link to a pdf
Convert doc to pdf with hyperlinks - 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
change link in pdf file; add hyperlinks to pdf online
Kapow Kapplets User's Guide
300
The output is initially presented in a column view that presents the user with an overview of the results
from the Kapplet.
If the user needs to see details from a given result then pressing the arrow at the left of the result will
expand the result to a detailed view of that specific result.
VB.NET PDF Page Replace Library: replace PDF pages in C#.net, ASP.
PDF to text, C#.NET convert PDF to images VB.NET, including text, image, hyperlinks, etc. String = Program.RootPath + "\\" Output.pdf" doc.Save(outputFilePath
add hyperlink to pdf in; add links pdf document
VB.NET PDF Thumbnail Create SDK: Draw thumbnail images for PDF in
PDF to svg, C#.NET convert PDF to text, C#.NET convert PDF to images Dim inputFilePath As String = Program.RootPath + "\\" 1.pdf" Dim doc As PDFDocument
pdf edit hyperlink; add hyperlinks pdf file
Kapow Kapplets User's Guide
301
When the user has finished navigating through the result it is possible for the user to Close the result.
If checkbox Discard Result is checked then closing the result will also discard the result, otherwise the
result will be stored for later access by the user.
If the user wish to work further with the Kapplet result in 3rd party programs then the Kapplet result can
be downloaded in the Excel format.
Customizing the Branding
As of version 9.2.2, you can customize the branding of KappZone and My KappZone to comply with your
corporate color scheme, as well as to replace the Kapow logo with your own.
To rebrand  KappZone  and My  KappZone,  go  to  the  Branding  tab  in  the  Kapplets  section  of  the
Management Console. Initially, the default (Kapow) branding will be used.
Kapow Kapplets User's Guide
302
To change the branding, first select "Custom branding". Then specify the color code that will be used as
background for the top bar in the My KappZone section. If you have selected a dark color - such as the
purple used in the default branding - you should pick "light" as the contrast color, which will be used for
the "My KappZone" text as well as some icons that will be placed on top of your selected background
color. If you have selected a light background color, a dark contrast is recommended.
The logo - which will replace the Kapow logo at the top of My KappZone and KappZone, as well as in a
smaller version in some subpages can either be uploaded by dragging it to the gray drop zone or clicking
the drop zone if you are using a browser that does not support drag and drop.
A preview of the selected logo and color will be shown on the right:
303
Programming With Robots
Robots are executed on RoboServer through an API (Java or .Net). You may use the API directly in your
own application or indirectly when you execute robots using the Management Console.
This part of the documentation will look at the direct execution of Robot using the Java and .Net APIs
• The Java Programmer's Guide describes the API that can be used in Java programs.
• The .NET Programmer's Guide describes the API to use in .NET applications, including C# programs.
API reference documentation is available for Java, .NET (the Guides contain the appropriate links). The
reference documentation is also installed as part of the installation, making it easy to use from your
development environment.
304
Java Programmer's Guide
This guide describes how to execute Robots using the Kapow Katalyst Java 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 Java programming language.
The programmer's guide has been completely rewritten for version 8.3, 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 RobotExecutor 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 Java programmer's guide, at http://help.kapowtech.com/8.2/topic/doc/java/
Top.html
Details about specific classes can be found in the  JavaDoc [api/overview-summary.html]
Basics
Robots run by the Management Console are executed using the Java API. The Java API allows you to send
requests to a RoboServer that instructs it to execute a particular robot. This is a classic client-server setup
in which Management Console acts as the client and RoboServer as the server.
By using the API, any Java based application 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 Java API is a jar file, and it is located in /API/robosuite-java-api/lib/robosuite-
api.jar inside the Kapow Katalyst installation folder, see important folders for details. All examples in
this guide can also be found in /API/robosuite-java-api/examples. Located next to the Java
API are 5 additional jar files which comprise the external dependencies of the API. Most basic API tasks
such as executing robots can be done without using any of these 3rd party libraries, while some advanced
features do require the usage of one or more of these 3rd party libraries. The examples in this guide will
specify when such libraries are required.
Java Programmer's Guide
305
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
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 41. Execute a Robot without input
import com.kapowtech.robosuite.api.java.repository.construct.*;
import com.kapowtech.robosuite.api.java.rql.*;
import com.kapowtech.robosuite.api.java.rql.construct.*;
/**
* Example that shows you how to execute NewsMagazine.robot from tutorial1
*/
public class Tutorial1 {
public static void main(String[] args) throws ClusterAlreadyDefinedException {
RoboServer server = new RoboServer("localhost", 50000);
boolean ssl = false;
Cluster cluster = new Cluster("MyCluster", new RoboServer[]{ server}, ssl);
Request.registerCluster(cluster); // you can only register a cluster once per application
try {
Request request = new Request("Library:/Tutorials/NewsMagazine.robot");
request.setRobotLibrary(new DefaultRobotLibrary());
RQLResult result = request.execute("MyCluster");
for (Object o : result.getOutputObjectsByName("Post")) {
RQLObject value = (RQLObject) o;
String title = (String) value.get("title");
String preview = (String) value.get("preview");
System.out.println(title + ", " + preview);
}
}
catch (RQLException e) {
e.printStackTrace();
}
}
}
Let's start by looking at the classes involved and their responsibilities.
Java Programmer's Guide
306
Table 42.
RoboServer 
[api/com/
kapowtech/robosuite/
api/java/repository/
construct/
RoboServer.html]
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 
[api/com/
kapowtech/robosuite/
api/java/repository/
construct/
Cluster.html]
A cluster is a group of RoboServer functioning as a single logical unit.
Request 
[api/com/
kapowtech/robosuite/
api/java/rql/
Request.html]
This class is used to construct the robot  request. Before you can
execute any requests you must register a cluster with the Request class.
DefaultRobotLibrary
[api/com/kapowtech/
robosuite/api/java/
rql/construct/
DefaultRobotLibrary.html]
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 
[api/com/
kapowtech/robosuite/
api/java/rql/
RQLResult.html]
This contains the result of a robot execution. The result contains value
responses, log and server messages.
RQLObject 
[api/com/
kapowtech/robosuite/
api/java/rql/
construct/
RQLObject.html]
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.
This tells the API that our RoboServer is running on localhost port 50000.
Table 43.
RoboServer server = new RoboServer("localhost", 50000);
This 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 can only be registered once.
Table 44. Registering a cluster
boolean ssl = false;
Cluster cluster = new Cluster("MyCluster", new RoboServer[]{ server}, ssl);
Request.registerCluster(cluster);
This 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
Java Programmer's Guide
307
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 45.
Request request = new Request("Library:/Tutorials/NewsMagazine.robot");
request.setRobotLibrary(new DefaultRobotLibrary());
This executes the robot on the cluster named MyCluster (the cluster we previously registered) and
returns the result once the robot is done. By default execute will throw an exception if the robot generates
an API exception.
Table 46.
RQLResult result = request.execute("MyCluster")
Here 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 47.
for (Object o : result.getOutputObjectsByName("Post")) {
RQLObject value = (RQLObject) o;
String title = (String) value.get("title");
String preview = (String) value.get("preview");
System.out.println(title + ": " + preview);
}
Robot Input
Most robots executed through the API will be parameterized 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 
48. 
Input 
using 
implicit 
RQLObjectBuilder
[api/com/kapowtech/robosuite/api/java/rql/RQLObjectBuilder.html]
Request request = new Request("Library:/Input.robot");
request.createInputVariable("userLogin").setAttribute("username", "scott").setAttribute("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 
49. 
Input 
using 
explicit 
RQLObjectBuilder
[api/com/kapowtech/robosuite/api/java/rql/RQLObjectBuilder.html]
Java Programmer's Guide
308
Request request = new Request("Library:/Input.robot");
RQLObjectBuilder userLogin = request.createInputVariable("userLogin");
userLogin.setAttribute("username", "scott");
userLogin.setAttribute("password", "tiger");
The two examples are identical. The first utilizes the cascading method invocation on the anonymous
RQLObjectBuilder 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 50.
Request request = new Request("Library:/Input.robot");
request.createInputVariable("facebook").setAttribute("username", "scott").setAttribute("password", "facebook123");
request.createInputVariable("twitter").setAttribute("username", "scott").setAttribute("password", "twitter123");
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 store 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 the 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 51. 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
Documents you may be interested
Documents you may be interested