using pdfdocument c# : Add hyperlink to pdf in SDK Library API .net wpf windows sharepoint WATUsageGuide36-part879

Clipping Programmer's Guide
359
Distribution Policy provider:
Modify  the  scheduling  algorithm  for  load  balancing  multiple
RoboServers
Handlers
A handler is an extension point, which is called after RoboServer has executed the clipping robot. Hence,
handlers have access to the response from the robot. There are two handler interfaces, which you might
implement:
Additional Output Objects handler: Have the ability to access additional output values returned from
the call to RoboServer. These extra values can e.g. be stored in the
session or a database.
Error handler:
Allows  you  to  write  your  own  error  handling  strategy;  e.g.
forwarding to a portlet specific error page.
Filters
A filter corresponds to two extension points: the filter is called both before RoboServer is called and
after RoboServer has responded. The filter is capable of modifying properties, which are common to the
ClipRequest and the ClipResponse:
Header filter:
Modifies the list of headers by filtering, rewriting or adding headers.
Controllers
A controller makes it possible to control the command sent to RoboServer as part of the ClipRequest. Only
one controller is available:
Restart Session controller:
This extension point is before a call to RoboServer and allows you
to discard the command that would normally be sent and instead
send a restart session command. This can be useful if the user has
changed his credentials and the clipping robot therefore should log
out and log in again.
Technical Issues
A couple of technical issues relating to all extension points are mentioned here.
Correlation between Portlet and Servlet
In a portal there might be several instances of the same portlet (also called portlet windows). For a clipping
portlet this means that several clipping portlets in a portal may use the same clip configuration file. This
also means that the servlet needs a way to distinguish between calls from these. If a user requests that a
given clipping portlet should restart its session then it is this portlet that should restart and not some other
instance. In order for the servlet to know which portlet it is delivering content to, the request contains a
portlet id and this can be accessed in the following way:
request.getParameter(ClipServlet.PORTLET_PARAMETER_NAME);
If one extends the clipping portlet class ClipJavaPortlet to provide one's own functionality, e.g. an
edit mode, then the same portlet id may be obtained by calling the method:
String getPortletID(RenderResponse response)
Add hyperlink to pdf in - 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 link to pdf; add hyperlink to pdf in
Add hyperlink to pdf in - 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
add url to pdf; change link in pdf
Clipping Programmer's Guide
360
See Communication between Portlet and Servlet, where this example is explored in depth. Note, that the
getPortletID method can only be called during rendering, e.g. from doEdit, doView or doHelp
and not when handling an action from processAction.
Thread Safety
All classes implementing providers, handles, controllers and filters are required to be thread-safe.
Providers
This section describes the provider extension points in the clipping servlet. Providers are called by the
servlet before RoboServer is called, and they are able to intervene in this calling mechanism: either by
choosing a RoboServer in an environment with several RoboServers (the Distribution Policy provider) or
by modifying the data sent as part of the request.
RoboServer credentials Provider
Authentication can be enabled on RoboServer to prevent unauthorized access. If this is the case the portal
running the clip must include credentials when running a clipping robot, the RoboServer credentials
provider allows you to specify these programmatically.
Clip Configuration File Specification
The  clip  logic  will  look  in  the  clip  descriptor  to  determine  which  (if  any)  credentials  to  send
to  RoboServer. The credentials my  be  hard-coded, or  provided through code  by implementing  the
RoboServerCredentialsProvider
If 
your 
implementation 
of 
RoboServerCredentialsProvider 
is 
named
MyRoboServerCredentialsProvider you can add it to the clip descriptor using the following
markup
Table 112. An Example of a Clip Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE clip PUBLIC
"-//Kapow Technologies//DTD Clip Deployment Descriptor 1.3//EN"
"http://www.kapowtech.com/robosuite/rql/dtd/clip-deployment-descriptor_1_3.dtd">
<clip>
<robot-url>library:/my.robot</robot-url>
<robot-library><default/></robot-library>
<robot-server>
<socket-object-protocol host="localhost" port="50000"/>
</robot-server>
<robot-server-credentials>
<class-name>
com.mycompany.myproject.MyRoboServerCredentialsProvider
</class-name>
</robot-server-credentials>
<user-credentials>
<class-name>
com.mycompany.myproject.MyCredentialsProvider
</class-name>
</user-credentials>
VB.NET Create PDF from Word Library to convert docx, doc to PDF in
Change Word hyperlink to PDF hyperlink and bookmark. VB.NET Demo Code for Converting Word to PDF. Add necessary references: RasterEdge.Imaging.Basic.dll.
add a link to a pdf in acrobat; add hyperlink to pdf
VB.NET Create PDF from Excel Library to convert xlsx, xls to PDF
Change Excel hyperlink to PDF hyperlink and bookmark. VB.NET Demo Code for Converting Excel to PDF. Add necessary references: RasterEdge.Imaging.Basic.dll.
add hyperlinks to pdf; adding links to pdf
Clipping Programmer's Guide
361
</clip>
If you want to hard-code the credentials the syntax is.
<robot-server-credentials>
<username>Joe Smith</username>
<password>abcdefgh</password>
</robot-server-credentials>
As described, the order of the elements in the clip descriptor must follow the order defined in the
DTD (References). The following diagram shows the location of the robot-server-credentials
element in the order of these (not all elements may be present):
robot-url,  robot-library,  robot-server, robot-server-credentials,
portlet, popups-required,  popups-blocked-text, action-header-filter,
portal-cookie-filter, user-credentials, properties, additional-input-
objects,  additional-output-objects,  user-messages,  restart-session-
controller, error-handler, wait-page-text, wait-page-style
Implementation
To pass RoboServer credentials programmatically you must write a class which implements the following
interface:
com.kapowtech.robosuite.client.clip.version1.api.RoboServerCredentialsProvider
This interface has one method named provide:
RoboServerCredentials provide(HttpServletRequest request, HttpServletResponse response,
RoboServerCredentials defaultCredentials);
The provide method returns a RoboServerCredentials object which contains the credentials
used for authentication when the clipping robot is run.
The  RoboServerCredentials contains  a  userName  and  password,  which  must  match  a  user
configured on the RoboServer, and the user must have the 'Start Robot' privilege.
If the user doesn't exist or the credentials are invalid this results in an error, which is displayed directly to
the end-user of the clip, unless an error-handler is defined for the clip.
Example
Below, we show what the code of such a provider could look like.
This provider gets the username and password from session scope. The userName and password could
then be configured in the portal, and passed along to the clip through the Portlet/Servlet Session
Table 113. Code Example of a RoboServer credentials Provider
package com.mycompany.myproject;
import javax.servlet.http.*;
public class RoboServerCredentialsProviderImpl implements RoboServerCredentialsProvider {
public static final String USER_NAME_KEY = "com.kapow.roboserver.username";
public static final String PASSWORD_KEY = "com.kapow.roboserver.password";
How to C#: Basic SDK Concept of XDoc.PDF for .NET
You may add PDF document protection functionality into your C# program. Hyperlink Edit. XDoc.PDF for .NET allows C# developers to edit hyperlink of PDF document
add link to pdf acrobat; add a link to a pdf in preview
VB.NET PDF: Basic SDK Concept of XDoc.PDF
You may add PDF document protection functionality into your VB.NET program. Hyperlink Edit. XDoc.PDF for .NET allows VB.NET developers to edit hyperlink of PDF
add hyperlink to pdf acrobat; add links pdf document
Clipping Programmer's Guide
362
public RoboServerCredentials provide(HttpServletRequest request, HttpServletResponse response,
RoboServerCredentials defaultCredentials) {
String userName = (String) request.getSession().getAttribute(USER_NAME_KEY);
String password = (String) request.getSession().getAttribute(PASSWORD_KEY);
return new RoboServerCredentials(userName, password);
}
}
Additional Input Objects Provider
Additional Input Objects providers make it possible to pass data from the servlet’s environment to the
clipping robot running on RoboServer.
Purpose and Use
Additional  Input  Objects  providers  are  particularly  well  suited  for  passing  structured  data  to  the
RoboServer. This can be useful for e.g. transmitting binary data or for passing database records to the
server. To use an Additional Input Objects provider, the corresponding variables accepting the input values
must be defined in Design Studio, which makes this option a bit cumbersome.
Hence, if the data is less structured and of string type, using a Properties provider is encouraged: a common
example of this is passing portal user preferences to the robot.
The Additional Input Objects provider functionality has a natural counterpart in the Additional Output
Objects handler, which makes it possible for the clipping robot to return a modified version of its input
as output.
Clip Configuration File Specification
In order for the clipping logic code to know that it should use the given Additional Input Objects
provider this must be declared in the clip configuration file (.clip-file). An example of such a clip
configuration file is shown below. It tells the clip to use a given Additional Input Objects provider called
MyAdditionalInputObjectsProvider.
Table 114. An Example of a Clip Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE clip PUBLIC
"-//Kapow Technologies//DTD Clip Deployment Descriptor 1.3//EN"
"http://www.kapowtech.com/robosuite/rql/dtd/clip-deployment-descriptor_1_3.dtd">
<clip>
<robot-url>library:/my.robot</robot-url>
<robot-library><default/></robot-library>
<robot-server>
<socket-object-protocol host="localhost" port="50000"/>
</robot-server>
<user-credentials>
<class-name>
com.mycompany.myproject.MyCredentialsProvider
</class-name>
</user-credentials>
<additional-input-objects>
<class-name>
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Change Word hyperlink to PDF hyperlink and bookmark. C#.NET Sample Code: Convert Word to PDF in C#.NET Project. Add necessary references:
pdf edit hyperlink; pdf reader link
.NET PDF Document Viewing, Annotation, Conversion & Processing
Extract hyperlink inside PDF. PDF Write. Insert text, text box into PDF. Edit, delete text from PDF. Insert images into PDF. Edit, remove images from PDF. Add,
add hyperlink pdf file; add links in pdf
Clipping Programmer's Guide
363
com.mycompany.myproject.MyAdditionalInputObjectsProvider
</class-name>
</additional-input-objects>
</clip>
The  additional-input-objects  tag  can  contain  either  a  specification  of  values  to  use  or
 class  specification.  (see  the  DTD  [http://www.kapowtech.com/robosuite/rql/dtd/clip-deployment-
descriptor_1_3.dtd] for details).
As described, the order of the elements in the clip descriptor must follow the order defined in the
DTD (References). The following diagram shows the location of the additional-input-objects
element in the order of these (not all elements may be present):
robot-url,  robot-library,  robot-server,  robot-server-credentials,
portlet, popups-required,  popups-blocked-text, action-header-filter,
portal-cookie-filter, user-credentials, properties, additional-input-
objects, additional-output-objects, user-messages, restart-session-
controller, error-handler, wait-page-text, wait-page-style
Implementation
Additional input objects are passed from the clip to RoboServer using an Additional Input Objects provider.
This is a class that you write yourself that must implement the interface:
com.kapowtech.robosuite.client.clip.version1.api.
AdditionalInputObjectsProvider
This interface has one method named provide:
RQLObjects provide(HttpServletRequest request,
HttpServletResponse response,
RQLObjects defaultObjects);
The provide method returns an RQLObjects object that contains the additional input objects (each
being an RQLObject). Each RQLObject contains a number of Attributes.
The  types  RQLObject,  RQLObjects  and  Attribute  are  all  from  the  Kapow  Java  API  and
documentation  on  these  can  be  found  in  the  Java  Programmer's  Guide.  The  RQLObjects  in
RQLObjects created by the method must correspond to input variables in the clipping robot. Object and
attribute names are case-sensitive.
The provider has access to the HttpServletRequest which makes it possible to retrieve important
information about the context, such as the current URL or user preferences.
The provide method also takes an HttpServletResponse as parameter — this makes the clipping
API consistent with servlet and portlet APIs (such as the servlet filter) and is therefore useful if you need
to call methods in these APIs (e.g. forwarding to a request dispatcher).
The third parameter defaultObjects of the provider is included for future use, and its value is left
unspecified.
Example
Below, we show what the code of such a provider could look like. This example provider will add an
RQLObject named SearchInput which have two attributes (text and matchCase) to the input
objects that are being sent to the robot.
VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to
Export PowerPoint hyperlink to PDF. VB.NET Demo Code for Converting PowerPoint to PDF. Add necessary references: RasterEdge.Imaging.Basic.dll.
convert a word document to pdf with hyperlinks; clickable links in pdf
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Export PowerPoint hyperlink to PDF in .NET console application. C#.NET Demo Code: Convert PowerPoint to PDF in C#.NET Application. Add necessary references:
pdf link; adding links to pdf in preview
Clipping Programmer's Guide
364
Table 115. Code Example of an Additional Input Objects Provider
package com.mycompany.myproject;
import com.kapowtech.robosuite.api.java.rql.construct.Attribute;
import com.kapowtech.robosuite.api.java.rql.construct.RQLObject;
import com.kapowtech.robosuite.api.java.rql.construct.RQLObjects;
import com.kapowtech.robosuite.client.clip.version1.
api.AdditionalInputObjectsProvider;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
public class MyAdditionalInputObjectsProvider
implements AdditionalInputObjectsProvider {
public RQLObjects provide(HttpServletRequest request, 
HttpServletResponse response,
RQLObjects defaultObjects) {
List rqlObjectsList = new ArrayList();
List attributes = new ArrayList();
attributes.add(new Attribute("text", "Kapow"));
attributes.add(new Attribute("matchCase", "true"));
RQLObject rqlObject = new RQLObject("SearchInput", attributes)
rqlObjectsList.add(rqlObject);
return new RQLObjects(rqlObjectsList);
}
}
The provider will create an RQLObject object representing the SearchInput variable in the robot
and add this to an RQLObjects object. This RQLObjects object will be returned from the provide
method of the provider. The value that is assigned to the attributes will of course not normally be fixed as in
the example, but may be obtained from some external source, e.g. from the portal preferences of the user.
Properties Provider
Property providers provide an alternative way of passing data from the servlet’s environment to the clipping
robot. The data is passed via the string attribute properties on the ClipRequest. Special classes and
methods are available to the Properties provider for creating such values, and the properties are parsed by
the robot and made available via a converter.
Purpose and Use
The property provider gives you a simple way of providing extra input to the clipping robot. It is convenient
if the data to pass to the robot is simple strings, since properties are defined as simple name-value pairs,
where both the name and the value are represented as a string.
The most obvious use case is to retrieve business domain values from the session and pass these to the
robot, for instance to pass a customer number that the robot should enter into a field. A less obvious but
very useful use of property providers is to make your robot more general: if a value of your robot is likely
to change, you can replace this value by a property and have your property provider look up the value in
a configuration file or database. This way it is not necessary to change the robot (and redeploy or create a
Clipping Programmer's Guide
365
robot library) and you can just change your configuration instead. An example of this would be retrieving
the start URL as a property.
Within the clipping robot, the data of a property is retrieved using the Get Property converter.1
Clip Configuration File Specification
The Properties provider must be declared in the clip configuration file (.clip-file). An example of such a
clip configuration file is shown below. It tells the clip to use a given Additional Input Objects provider
called MyPropertiesProvider.
Table 116. An Example of a Clip Configuration File
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE clip PUBLIC
"-//Kapow Technologies//DTD Clip Deployment Descriptor 1.3//EN"
"http://www.kapowtech.com/robosuite/rql/dtd/clip-deployment-descriptor_1_3.dtd">
<clip>
<robot-url>library:/my.robot</robot-url>
<robot-library><default/></robot-library>
<robot-server>
<socket-object-protocol host="localhost" port="50000"/>
</robot-server>
<user-credentials>
<class-name>com.mycompany.MyCredentialsProvider</class-name>
</user-credentials>
<properties>
<class-name>com.mycompany.MyPropertiesProvider</class-name>
</properties>
<additional-input-objects>
<class-name>com.mycompany.MyInputProvide</class-name>
</additional-input-objects>
</clip>
The properties tag contains either a class-name tag (as in the example) or a number of property
tags which have the following syntax:
<property name="propertyName">value</property>
As described, the order of the elements in the clip descriptor must follow the order defined in the DTD
(References). The following diagram shows the location of the properties element in the order of
these (not all elements may be present):
robot-url,  robot-library,  robot-server,  robot-server-credentials,
portlet, popups-required,  popups-blocked-text, action-header-filter,
portal-cookie-filter, user-credentials, properties, additional-input-
objects,  additional-output-objects,  user-messages,  restart-session-
controller, error-handler, wait-page-text, wait-page-style
Implementation
Your property provider must implement the interface
1The list of properties is also available as a text attribute on the ClipRequest and can in principle be retrieved from there. This, however, requires
parsing the string, and hence it is not a very useful option.
Clipping Programmer's Guide
366
com.kapowtech.robosuite.client.clip.version1.api.
PropertiesProvider
This interface has one method:
Properties provide(HttpServletRequest request,
HttpServletResponse response,
Properties defaultProperties);
The provide method will then return a Properties object that contains properties.
Property names are case-sensitive.
The provider has access to the HTTPServletRequest and HTTPServletResponse as parameters
— see  Additional Input Objects Provider for further explanation.
The third parameter defaultProperties is intended for future use, and its value is left unspecified.
You can create a Properties object in two ways:
• Create a map from names (strings) to values (strings). Then call the Properties constructor with
the map as argument.
For example:
Map<String,String> propertyMap = new HashMap<String, String>();
propertyMap.put("property1", "value1");
propertyMap.put("property2", "value2");
Properties properties = new Properties(propertyMap);
• Create a list of Property objects and call the Properties constructor with this list as argument.
A Property is created by calling its constructor with a name and a value. You should not add more
than one Property object with the same property name, as this will cause an error when the clipping
robot is executed.
For example:
List<Property> propertiesList = new ArrayList<Property>();
propertiesList.add(new Property("property1", "value1"));
propertiesList.add(new Property("property2", "value2"));
Properties properties = new Properties(propertiesList);
Example
In the following example, an URL is chosen randomly between Google and Kapow and passed as a
property.
Table 117. Code Example of a Properties Provider
package com.mycompany.myproject;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
Clipping Programmer's Guide
367
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.kapowtech.robosuite.client.clip.version1.api.Properties;
import com.kapowtech.robosuite.client.clip.version1.api.
PropertiesProvider;
import com.kapowtech.robosuite.client.clip.version1.api.Property;
public class MyPropertiesProvider implements PropertiesProvider {
public Properties provide(HttpServletRequest request,
HttpServletResponse response,
Properties defaultProperties) {
Random generator = new Random();
int i = generator.nextInt(2);
Property property =
new Property("startUrl",
"http://" + (i==0 ?
"www.google.com":
"www.kapowsoftware.com"));
List<Property> properties = new ArrayList<Property>();
properties.add(property);
return new Properties(properties);
}
}
User Credentials Provider
User Credentials providers are used to supply user credentials to the clipping robot, which in turn will use
this for login on the clipped web site. User credentials are passed as attributes on the ClipRequest object,
and can be retrieved by the robot from this object and assigned to the corresponding ClipRequest variable.
If the clipping robot is set up to use HTTP-based login, the robot will automatically retrieve the username
and password from these attributes. If form based login is used, the robot developer must ensure that the
attributes are entered into the correct field on the login form.
Purpose and Use
The User Credentials provider is used for supporting automatic login in clipped web sites and is hence
instrumental in using clipped web sites in a single sign on portal solution.
Typically, an SSO solution will be based on some sort of credentials vault. In this case, the User Credentials
provider should access this vault to retrieve the username and password. In another use case, the user might
login in a special portlet, which would store the username and password (encrypted) in the session. This
could then be retrieved by the User Credentials provider.
Clip Configuration File Specification
The  User  Credentials  provider  must  be  declared  in  the  clip  configuration  file  (.clip-file).  The
clip  configuration  file shown  below  makes  the  clip use  a given  User Credentials  provider named
MyUserCredentialsProvider.
Table 118. An Example of a Clip Configuration File
<?xml version="1.0" encoding="UTF-8"?>
Clipping Programmer's Guide
368
<!DOCTYPE clip PUBLIC
"-//Kapow Technologies//DTD Clip Deployment Descriptor 1.3//EN"
"http://www.kapowtech.com/robosuite/rql/dtd/clip-deployment-descriptor_1_3.dtd">
<clip>
<robot-url>library:/my.robot</robot-url>
<robot-library><default/></robot-library>
<robot-server>
<socket-object-protocol host="localhost" port="50000"/>
</robot-server>
<additional-input-objects>
<class-name>com.mycompany.MyInputProvide</class-name>
</additional-input-objects>
<user-credentials>
<class-name>
com.mycompany.myproject.MyCredentialsProvider
</class-name>
</user-credentials>
</clip>
The user-credentials tag contains either a class-name tag (as in the example) or a pair of
username and password. E.g.
<user-credentials>
<username>Joe Smith</username>
<password>abcdefgh</password>
</user-credentials>
As described, the order of the elements in the clip descriptor must follow the order defined in the DTD
(References). The following diagram shows the location of the user-credentials element in the
order of these (not all elements may be present):
robot-url,  robot-library,  robot-server,  robot-server-credentials,
portlet, popups-required,  popups-blocked-text, action-header-filter,
portal-cookie-filter, user-credentials, properties, additional-input-
objects,  additional-output-objects,  user-messages,  restart-session-
controller, error-handler, wait-page-text, wait-page-style
Implementation
To create a User Credentials provider, you must implement the interface
com.kapowtech.robosuite.client.clip.version1.api.
UserCredentialsProvider
This interface has one method:
UserCredentials provide(HttpServletRequest request,
HttpServletResponse response,
UserCredentials defaultCredentials);
This  provider  follows  the  well  known  pattern  from  previous  sections  on  providers  by  taking  an
HttpServletRequest  and  HttpServletResponse as input.  In  addition  —  as  in  previous
sections — it takes default credentials, which will always be empty in practice (i.e. user credentials with
Documents you may be interested
Documents you may be interested